八、mysql語句的DDL語句
阿新 • • 發佈:2020-11-04
一、庫定義
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; #檢視建立庫的語句
mysql> drop database ywx;
#物理刪除ywx庫及庫中的所有表
SHOW CREATE DATABASE school; ALTER DATABASE school CHARSET utf8; 注意:修改字符集,修改後的字符集一定是原字符集的嚴格超集(修改後的字符集一定要包含原字符集)
show databases;#檢視所有庫名
show create database ywx; #檢視建立ywx庫的建立語句
1、建立表格式
create table stu(
列1 屬性(資料型別、約束、其他屬性) ,
列2 屬性,
列3 屬性
);
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來填充。
drop table t1;
物理刪除t1表的所有資訊
4.1新增列
在stu表中新增qq列
DESC stu; ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL UNIQUE COMMENT 'qq號';
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;
把剛才新增的列都刪掉(危險)
ALTER TABLE stu DROP num;
ALTER TABLE stu DROP qq;
ALTER TABLE stu DROP wechat;
修改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只能更改列的屬性。