1. 知識ポイントの紹介:
テーブルの作成、変更、削除:
- 1.1 テーブルを直接作成します。
-
テーブルの作成
[IF NOT EXISTS] tb_name -- 存在しない場合は作成し、存在する場合はスキップします
(column_name1 data_type1 -- 列名と型は必須です
[ PRIMARY KEY -- オプションの制約、主キー
| FOREIGN KEY -- 他のテーブルのキー値を参照する外部キー
| AUTO_INCREMENT -- 自動インクリメント ID
| COMMENT コメント -- 列コメント (コメント)
| DEFAULT デフォルト値 -- デフォルト値
| UNIQUE -- 2 つのレコードが同じ列値を持つことを許可しない一意の制約
| NOT NULL -- 列は NULL ではありません
]、...
) [CHARACTER SET charset] -- 文字セットのエンコーディング
[COLLATE Collate_value] -- 列の並べ替えと比較のルール (大文字と小文字を区別するかどうかなど)
-
1.2 別のテーブルからテーブル構造をコピーしてテーブルを作成します。
CREATE TABLE tb_name LIKE tb_name_old
-
1.3 別のテーブルのクエリ結果からテーブルを作成します。
CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options
-
2.1 変更テーブル:
ALTER TABLE 表名 修改选项
。オプションのコレクション:
1 2 3 4 5 6 7 8 |
{ ADD COLUMN <列名> <タイプ> -- 列を追加します | CHANGE COLUMN <古い列名> <新しい列名> <新しい列タイプ> -- 列名または型を変更します。 | ALTER COLUMN <列名> { SET DEFAULT <デフォルト値> | DROP DEFAULT } -- 列のデフォルト値を変更/削除します | MODIFY COLUMN <列名> <タイプ> -- 列タイプを変更します。 | DROP COLUMN <列名> -- 列を削除します。 | RENAME TO <新しいテーブル名> -- テーブル名を変更します。 | CHARACTER SET <文字セット名> -- 文字セットを変更します。 | COLLATE <照合ルール名> } -- 照合ルールを変更します (比較と並べ替えに使用されます)。 |
- 3.1 テーブルを削除します: DROP TABLE [IF EXISTS] テーブル名 1 [, テーブル名 2]。
詳細な分析:
- 自動インクリメント ID: AUTO_INCREMENT;
- 主キーを設定します: PRIMARY KEY;
- 一意の制約: UNIQUE
- 非NULL制約: NOT NULL
- デフォルト値の設定: DEFAULT 0
- 現在のタイムスタンプ: CURRENT_TIMESTAMP
- コメント/メモ: コメント
- テーブルがすでに作成されている場合は、通常どおりに戻ります: IF NOT EXISTS
2.ケース
(1) ユーザー情報テーブルには、長年にわたってプラットフォームに登録しているユーザーの情報が含まれていますが、Niuke プラットフォームの継続的な成長に伴い、ユーザー数は急速に増加しています。ユーザーは新しいテーブルを分割します。 。
元のユーザー情報テーブル:
提出済み | タイプ | ヌル | 鍵 | デフォルト | 追加 | コメント |
ID | int(11) | いいえ | で | (ヌル) | 自動増加 | 自動インクリメントID |
UID | int(11) | いいえ | ユニ | (ヌル) | ユーザーID | |
ニックネーム | varchar(64) | はい | (ヌル) | ニックネーム | ||
成果 | int(11) | はい | 0 | 達成値 | ||
レベル | int(11) | はい | (ヌル) | ユーザーレベル | ||
仕事 | varchar(32) | はい | (ヌル) | キャリアの方向性 | ||
登録時間 | 日付時刻 | はい | CURRENT_TIMESTAMP | 登録時間 |
データ アナリストは、ユーザー情報テーブルと一貫性のある高品質のユーザー情報テーブル user_info_vip を作成してください。
--T1:
CREATE TABLE IF NOT EXISTS user_info_vip
(id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int UNIQUE NOT NULL COMMENT '用户ID',
nick_name varchar(64) COMMENT '昵称',
achievement int DEFAULT 0 COMMENT '成就值',
`level` int COMMENT '用户等级',
job varchar(32) COMMENT '职业方向',
register_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间')
CHARACTER SET utf8 COLLATE utf8_general_ci;
--T2:
create table user_info_vip(
id int(11) not null primary key auto_increment comment '自增ID',
uid int(11) not null unique key comment '用户ID',
nick_name varchar(64) comment '昵称',
achievement int(11) default 0 comment '成就值',
level int(11) comment '用户等级',
job varchar(32) comment '职业方向',
register_time datetime default current_timestamp comment '注册时间'
) default charset=utf8
返される出力は次の表に示されています。テーブル作成ステートメントを作成して、テーブル内のすべての制限と指示をテーブルに記録してください。
提出済み | タイプ | ヌル | 鍵 | デフォルト | 追加 | コメント |
ID | int(11) | いいえ | で | 自動増加 | 自動インクリメントID | |
UID | int(11) | いいえ | ユニ | ユーザーID | ||
ニックネーム | varchar(64) | はい | ニックネーム | |||
成果 | int(11) | はい | 0 | 達成値 | ||
レベル | int(11) | はい | ユーザーレベル | |||
仕事 | varchar(32) | はい | キャリアの方向性 | |||
登録時間 | 日付時刻 | はい | CURRENT_TIMESTAMP | 登録時間 |
備考:
1. バックグラウンドでは、SHOW FULL FIELDS FROM user_info_vip ステートメントを使用して出力結果を比較します。
2. テーブルが他のアナリストによって作成された場合は、通常どおりテーブルを返します。