1. 程式人生 > 實用技巧 >八、mysql語句的DDL語句

八、mysql語句的DDL語句

DDL語句:資料定義語言

一、庫定義

1、建立庫

建立一個不存在的資料庫
create database school;
create schema sch;
檢視支援的字符集
show charset;
檢視支援的校對規則
show collation;
完整建立一個不存在的資料庫,建議的操作
CREATE DATABASE test CHARSET utf8;  #建立一個test庫,字符集為utf8
create database xyz charset utf8mb4 collate utf8mb4_bin; #建立一個xyz庫,字符集為utf8mb4,校對規則為uft8mb4_bin(大小寫敏感,注意:校對規則必須與字符集一致)

建庫規範:
1.庫名不能有大寫字母 2.建庫要加字符集 3.庫名不能有數字開頭 4. 庫名要和業務相關

建庫標準語句

mysql> create database db charset utf8mb4;
mysql> show create database xuexiao; #檢視建立庫的語句

2、刪除(生產中禁止使用)

mysql> drop database ywx;
#物理刪除ywx庫及庫中的所有表

3、修改

SHOW CREATE DATABASE school;
ALTER DATABASE school  CHARSET utf8;
注意:修改字符集,修改後的字符集一定是原字符集的嚴格超集(修改後的字符集一定要包含原字符集)

4、查詢庫相關資訊(DQL)

show databases;#檢視所有庫名
show create database ywx; #檢視建立ywx庫的建立語句

二、表定義

1、建立表格式

create table stu(
列1  屬性(資料型別、約束、其他屬性) ,
列2  屬性,
列3  屬性
);

2、建立表

USE school;  #進入school資料庫
CREATE TABLE stu(    #建立列及其屬性資訊
id      INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '學號',
sname   VARCHAR(
255) NOT NULL COMMENT '姓名', sage TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年齡', sgender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性別' , sfz CHAR(18) NOT NULL UNIQUE COMMENT '身份證', intime TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '入學時間' ) ENGINE=INNODB CHARSET=utf8 COMMENT '學生表';

建表規範:

1. 表名小寫
2. 不能是數字開頭
3. 注意字符集和儲存引擎
4. 表名和業務有關
5. 選擇合適的資料型別
6. 每個列都要有註釋
7. 每個列設定為非空,無法保證非空,用0來填充。

3、刪除表(生產中禁用命令)

drop table t1;
物理刪除t1表的所有資訊

4、修改

4.1新增列

在stu表中新增qq列

DESC stu;
ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL UNIQUE COMMENT 'qq號';

在sname後加微信列

ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE  COMMENT '微訊號' AFTER sname ;

在id列前加一個新列num

ALTER TABLE stu ADD num INT NOT NULL COMMENT '數字' FIRST;
DESC stu;

4.2刪除列

把剛才新增的列都刪掉(危險)

ALTER TABLE stu DROP num;
ALTER TABLE stu DROP qq;
ALTER TABLE stu DROP wechat;

4.3修改列的屬性

修改sname資料型別的屬性

ALTER TABLE stu MODIFY sname VARCHAR(128)  NOT NULL ;

將sgender 改為 sg 資料型別改為 CHAR 型別

ALTER TABLE stu CHANGE sgender sg CHAR(1) NOT NULL DEFAULT 'n' ;
DESC stu;
#change可以更改列的名稱,也可以更改列的屬性;modify只能更改列的屬性。