SQL DDLデータ定義文
11735 ワード
前言 DDL(Data Definition Language)文:データ定義語句、これらの語句は異なるデータセグメント、データベース、テーブル、列、索引などのデータベースオブジェクトを定義しています。よく使う語句のキーワードは主にcreate、drop、alterなどがあります。 1、DDLデータベース操作文)データベースステートメント を作成します。)データベースステートメントを削除する )すべてのデータベースステートメントを表示する システムが自動的に作成したデータベース 上の表示結果の4つのデータベースは、MySQLをインストールするときに自動的にシステム(macOS)が作成されます。 information_schema:主にシステムのデータベースオブジェクト情報の一部を記憶しています。ユーザテーブル情報、列情報、権限情報、文字セット情報、パーティション情報などに及ばないです。 performance_schema:主にデータベースサーバの性能パラメータを収集するために用いられます。 mysql:権限設定、イベント、エンジン状態、主従情報、ログ、タイムゾーン情報、ユーザ権限設定などを含む。 sys:performance_schemaの代替案 )データベースの作成情報文 を表示する。)動作のデータベースステートメントを選択する )操作中のデータベースステートメント を表示する。)データベース語句を導出する 導出データベースは、システムコマンドモードで動作する。 )データベース語句を導入する データベースの導入は、オペレーティングデータベースが選択された後、mysqlコマンドモードで行われる。 2、DDL表の操作文)表語句 を作成する。)表語句を削除する )すべての表語句を表示する )表示テーブルの作成情報文 )テーブルのデータ構造文 を表示する。)表文の名前を変更する )表の文字セットステートメントを変更する )表語句を導出する 導出テーブルは、システムコマンドモードで動作する。 )表語句を導入する 導入テーブルは、オペレーティングデータベースが選択された後、mysqlコマンドモードで動作する。 3、DDL列フィールド操作文)列文を追加する )列文を削除する )列名語句を修正する )列属性語句を修正する )列順序文を修正する 上のadd、change、modify文の中の任意のパラメータ[first_after列名]は、古い修正フィールドの表中の位置を使用することができる。 first:すべての列の一番前に置く after列名:指定列の後に置く 注意:change、first、after columnこれらのキーワードはすべてMySQLの標準SQL上の拡張に属し、他のデータベースでは必ずしも適用されない。
# , utf8mb4
# create database ;
> create database test;
Query OK, 1 row affected (0.04 sec)
# ,
# create database character set ;
> create database test character set gbk;
Query OK, 1 row affected (0.02 sec)
#
# drop database ;
> drop database test;
Query OK, 0 rows affected (0.05 sec)
# ,
# drop database if exists ;
> drop database if exists test;
Query OK, 0 rows affected (0.01 sec)
#
> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| mysql |
| sys |
+--------------------+
4 rows in set (0.01 sec)
#
# show create database ;
> show create database test;
+----------+---------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ |
+----------+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
#
# use ;
> use test;
Database changed
#
> select database();
+------------+
| database() |
+------------+
| test |
+------------+
1 row in set (0.00 sec)
# ,
# mysqldump -u -p > .sql;
$ mysqldump -u root -p test > /Users/qianchia/Desktop/test.sql;
Enter password:
# ,
# mysqldump -u -p -d > .sql;
$ mysqldump -u root -p -d test > /Users/qianchia/Desktop/test.sql;
Enter password:
#
# mysqldump -u -p --quick --no-create-info --extended-insert --default-character-set= > .sql
$ mysqldump -u root -p --quick --no-create-info --extended-insert --default-character-set=latin1 test> /Users/qianchia/Desktop/test.sql
--quick
:大きいテーブルをリザーブするためのオプションです。Msqldumpはすべての行を検索するのではなく、サーバーから一行ずつテーブルの行を強制的に検索し、出力する前にメモリにキャッシュします。--extended-insert
:いくつかのvaluesリストを含む複数行のinsert文法を使用する。このようにしてリポジットファイルをより小さくし、ファイルをリロードする時に挿入を加速することができます。--no-create-info
:各リポジトリのcreate table文を導出しない。--default-character-set=latin1
:元の文字セットからすべてのデータを導出し、このように導出したファイルの中には、すべての中国語が見られ、文字化けが保存されない。# /
# source .sql;
> source /Users/qianchia/Desktop/test.sql;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
...
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
# /
# mysql -u -p < .sql
$ mysql -u root -p test < /Users/qianchia/Desktop/testdbcreatetab.sql
#
# create table (
( ) ,
( )
) [default charset = ];
> create table student (
no int,
name varchar(20),
age int,
score int
);
Query OK, 0 rows affected (0.08 sec)
# ,
> create table student (
no int unique, //
name varchar(20) not null, //
age int,
score int
);
> create table student (
no int primary key, //
name varchar(20),
age int,
score int
);
> create table student (
no int,
name varchar(20),
age int,
score int
primary key(no) //
);
> create table student (
no int primary key auto_increment, //
name varchar(20),
age int,
score int
);
> create table A (
ano int primary key,
aname varchar(20),
loc varchar(100)
);
> create table B (
bno int primary key,
bname varchar(20),
bano int,
# constraint foreign key( ) references ( )
constraint fk_a_b foreign key(bano) references A(ano) //
);
#
# drop table ;
> drop table student;
Query OK, 0 rows affected (0.07 sec)
# ,
# drop table if exists ;
> drop table if exists student;
Query OK, 0 rows affected (0.06 sec)
#
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| A |
| B |
| student |
+----------------+
3 rows in set (0.00 sec)
#
> show create table student;
+---------+--------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+--------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`age` int(11) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
PRIMARY KEY (`no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+--------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
#
# desc ;
> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| no | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| score | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
#
# alter table rename [to] ;
> alter table student rename [to] stu;
Query OK, 0 rows affected (0.02 sec)
#
# rename table to ;
> rename table student to stu;
Query OK, 0 rows affected (0.08 sec)
#
# alter table cahracter set ;
> alter table student character set gbk;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# mysqldump -u -p > .sql;
$ mysqldump -u root -p test student > /Users/haiqianj/Desktop/test.sql;
Enter password:
# ,
# mysqldump -u -p -d > .sql;
$ mysqldump -u root -p -d test student > /Users/haiqianj/Desktop/test.sql;
Enter password:
# /
# source .sql;
> source /Users/qianchia/Desktop/test.sql;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
...
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
# ,
# alter table
add [column]
[ ] [first | after ];
> alter table student add cla varchar(20);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# alter table
add [column]
[ ] [first | after ],
add [column]
[ ] [first | after ],
...;
> alter table student add cla varchar(20), add addr varchar(100);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# alter table
drop [column]
;
> alter table student drop address;
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# alter table
drop [column]
,
drop [column]
,
...;
> alter table student drop class, drop address;
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# alter table
change [column]
[ ] [first | after ];
> alter table student change cla class int;
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# alter table
change [column]
[ ] [first | after ],
change [column]
[ ] [first | after ],
...;
> alter table student change cla class int, change addr address varchar(100);
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# alter table
modify [column]
[ ] [first | after ];
> alter table student modify cla int;
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
# ,
# alter table
modify [column]
[ ] [first | after ],
modify [column]
[ ] [first | after ],
...;
> alter table student modify cla int, modify addr varchar(200);
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0