SQL--DDL語句
- 1,DDL-數據庫操作
- 2,DDL-表操作-查詢
- 3,DDL-表操作-創建
- 4,DDL-表操作-數據類型
- 4.1,DDL-表操作-數值類型
- 4.2,DDL-表操作-字符串類型
- 4.3,DDL-表操作-日期時間類型
- 4.4,實例
- 5,DDL-表操作-修改
- 5,DDL-表操作-刪除
1,DDL-數據庫操作
查詢:SHOW DATABASES;
查詢當前數據庫: SELECT DATABASE();
創建:CREATE DATABASE [IF NOT EXISTS] 數據庫名 [DEFAULT CHARSET字符集] [COLLATE排序規則];
刪除: DROP DATABASE [IF EXISTS] 數據庫名;
使用: USE 數據庫名;
2,DDL-表操作-查詢
查詢當前數據庫所有表: SHOW TABLES;
查詢表結構:DESC 表名;
查詢指定表的建表語句:SHOW CREATE TABLE 表名;
3,DDL-表操作-創建
CREATE TABLE 表名(
字段1 字段1類型 [COMMENT 字段1注釋],
字段2 字段2類型 [COMMENT 字段2注釋],
字段3 字段3類型 [COMMENT 字段3注釋],
…
字段n 字段n類型 [COMMENT 字段n注釋]
)[COMMENT 表注釋];
實例:
表
id | name | age | gender |
---|---|---|---|
1 | 令狐沖 | 28 | 男 |
2 | 風清揚 | 68 | 男 |
3 | 東方不敗 | 32 | 男 |
create table tb_user(
id int comment ‘編號’,
name varchar(50) comment ‘姓名’,
age int comment ‘年齡’,
gender varchar(1) comment ‘性別’
)comment ‘用戶表’;
4,DDL-表操作-數據類型
4.1,DDL-表操作-數值類型
MySQL中的數據類型有很多,主要分為三類:
數值類型,字符串類型,日期時間類型。
類型 | 大小 | 有符號(SIGNED)范圍 | 無符號(SIGNED)范圍 | 描述 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整數值 |
SMALLINT | 2 bytes | (-32768,32767) | (0,65535) | 大整數值 |
MEDIUMINT | 3 bytes | (-8388608,8388607) | (0,16777215) | 大整數值 |
INT 或 INTEFER | 4 bytes | (-2147483648,2147483647) | (0,4294967295) | 大整數值 |
BIGINT | 8 bytes | (-2^63 , 2^63 - 1) | (0,2^64 - 1) | 及大整數值 |
FLOAT | 4 bytes | (-3.402823466E+308 , 1.7976931348623157E + 308) | () | 單精度浮點數值 |
DOUBLE | 8 bytes | (-3.402823466E+308 , 1.7976931348623157E + 308) | () | 雙精度浮點數值 |
DECTMAL | 小數值 |
4.2,DDL-表操作-字符串類型
類型 | 大小 | 描述 |
---|---|---|
CHAR | 0-255 bytes | 定長字符串 |
VARCHAR | 0-65535 bytes | 變長字符串 |
TINYBLOB | 0-255 bytes | 不超過255個字符的二進制數據 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65535 bytes | 二進制形式的長文本數據 |
TEXT | 0-65535 bytes | 長文本數據 |
MEDIUMBLOB | 0-16777215 bytes | 二進制形式的長文本數據 |
MEDIUMTEXT | 0-16777215 bytes | 中等長度文本數據 |
LONGBLOB | 0-4294967295 bytes | 二進制形式的極大文本數據 |
LONGTEXT | 0-4294967295 bytes | 極大文本數據 |
4.3,DDL-表操作-日期時間類型
類型 | 大小 | 范圍 | 格式 | 描述 |
---|---|---|---|---|
DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 時間值或持續時間 |
YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和時間值 |
TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和時間值,時間戳 |
4.4,實例
【案例】根據需求創建一張表
涉及一張員工信息表,要求如下:
1,編號(純數字)
2,員工工號(字符串類型,長度不超過10位)
3,員工姓名(字符串類型,長度不超過10位)
4,性別(男/女,存儲一個漢字)
5,年齡(正常人年齡,不可能存儲負數)
6,身份證號(二代身份證號均為18位,身份證中有X這樣的字符)
7,入職時間(取值年月日即可)
答案:
create table emp(
id int comment’編號’,
workno varchar(10) comment ‘工號’,
name varchar(10) comment ‘姓名’,
gender char(1) comment ‘性別’,
age tinyint unsigned comment ‘年齡’,
idcard char(18) comment ‘身份證號’,
entrydate date comment ‘入職時間’
)comment ‘員工表’;
5,DDL-表操作-修改
添加字段: ALTER TABLE 表名 ADD 字段名 類型(長度) [COMMENT 注釋][約束];
修改字段: ALTER TABLE 表名 CHANGE 舊字段名 新字段名 類型(長度) [COMMENT 注釋][約束];
刪除字段: ALTER TABLE 表名 DROP 字段名;
修改表名: ALTER TABLE 表名 RENAME TO 新表名;
案例1:為emp表增加一個新的字段 “昵稱” 為nickname,類型為varchar(20)。
alter table emp add nickname varchar(20);
案例2:將emp表的name字段修改為username,類型位varchar(30);
alter table emp change nickname username varchar(30);
案例3:將emp表的字段username 刪除
alter table emp drop username;
5,DDL-表操作-刪除
刪除表:DROP TABLE [IF EXISTS] 表名;
刪除指定表,并重新創建該表:TRUNCATE TABLE 表名;