GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者: 楊延昭 文章來源:GreatSQL社區投稿 在資料庫中,除傳統的計算資源(CPU、RAM、IO)的爭用以外,數據也是一種供許多用戶共用的資源。如 ...
DDL(Data Definition Language):數據定義語言,用來定義資料庫對象(資料庫,表,欄位)。
資料庫操作
查詢所有資料庫
show databases;
查詢當前資料庫
select database();
創建資料庫
create database [ if not exists ] 資料庫名 [ default charset 字元集 ] [ collate 排序規則 ];
/*例:創建一個study資料庫,並且指定字元集*/
create database if not exists study default charset utf8mb4;
刪除資料庫
drop database [ if exists ] 資料庫名;
切換資料庫
use 資料庫名 ;
表操作
表操作-查詢
查詢當前資料庫所有表
show tables;
查看指定表結構
desc 表名;
通過這條指令,我們可以查看到指定表的欄位(Field)、欄位的類型(Type)、是否可以為空(Null)、是否存在預設值(Default)等信息。
查詢指定表的建表語句
show create table 表名;
通過這條指令,主要是用來查看建表語句的,而有部分參數我們在創建表的時候,並未指定也會查詢到,因為這部分是資料庫的預設值,如:存儲引擎、字元集等。
表操作-創建
create table 表名(
欄位1 欄位1類型 [ comment 欄位1註釋 ],
欄位2 欄位2類型 [ comment 欄位2註釋 ],
欄位3 欄位3類型 [ comment 欄位3註釋 ],
......
欄位n 欄位n類型 [comment 欄位n註釋 ]
) [ comment 表註釋 ];
表操作-數據類型
數值類型
類型 | 大小 | 有符號(SIGNED)範圍 | 無符號(UNSIGNED)範圍 | 描述 |
---|---|---|---|---|
TINYINT | 1byte | (-128,127) | (0,255) | 小整數值 |
SMALLINT | 2bytes | (-32768,32767) | (0,65535) | 大整數值 |
MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | 大整數值 |
INT/INTEGER | 4bytes | (-2147483648, 2147483647) | (0,4294967295) | 大整數值 |
BIGINT | 8bytes | (-263,263-1) | (0,2^64-1) | 極大整數值 |
FLOAT | 4bytes | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E- 38,3.402823466 E+38) | 單精度浮點數值 |
DOUBLE | 8bytes | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308) | 雙精度浮點數值 |
DECIMAL | 依賴於M(精度)和D(標度)的值 | 依賴於M(精度)和D(標度)的值 | 小數值(精確定點數) | |
例: |
/*年齡欄位:不會出現負數,而且人的年齡不會太大。*/
age tinyint unsigned
/*分數:總分100分,最多出現一位小數。*/
score double(4,1)
字元串類型
類型 | 大小 | 描述 |
---|---|---|
CHAR | 0-255 bytes | 定長字元串(需要指定長度) |
VARCHAR | 0-65535 bytes | 變長字元串(需要指定長度) |
TINYBLOB | 0-255 bytes | 不超過255個字元的二進位數據 |
TINYTEXT | 0-255 bytes | 短文本字元串 |
BLOB | 0-65 535 bytes | 二進位形式的長文本數據 |
TEXT | 0-65 535 bytes | 長文本數據 |
MEDIUMBLOB | 0-16 777 215 bytes | 二進位形式的中等長度文本數據 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等長度文本數據 |
LONGBLOB | 0-4 294 967 295 bytes | 二進位形式的極大文本數據 |
LONGTEXT | 0-4 294 967 295 bytes | 極大文本數據 |
char 與 varchar 都可以描述字元串,char是定長字元串,指定長度多長,就占用多少個字元,和欄位值的長度無關 。而varchar是變長字元串,指定的長度為最大占用長度 。相對來說,char的性能會更高些。
例:
# 用戶名 username ------> 長度不定, 最長不會超過50
username varchar(50)
# 性別 gender ---------> 存儲值, 不是男,就是女
gender char(1)
# 手機號 phone --------> 固定長度為11
phone char(11)
日期時間類型
類型 | 大 小 | 範圍 | 格式 | 描述 |
---|---|---|---|---|
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 | 混合日期和時 間值,時間戳 |
如:
/*生日欄位*/
birthday date
/*創建時間*/
createtime datetime
數據類型創建表舉例
設計一張員工信息表,要求如下:
- 編號(純數字)
- 員工工號 (字元串類型,長度不超過10位)
- 員工姓名(字元串類型,長度不超過10位)
- 性別(男/女,存儲一個漢字)
- 年齡(正常人年齡,不可能存儲負數)
- 身份證號(二代身份證號均為18位,身份證中有X這樣的字元)
- 入職時間(取值年月日即可)
對應的建表語句如下:
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 '員工表';
表操作-修改
添加欄位
alter table 表名 add 欄位名 類型(長度) [ comment 註釋 ] [ 約束 ] ;
修改數據類型
alter table 表名 modify 欄位名 新數據類型(長度) ;
修改欄位名和欄位類型
alter table 表名 change 舊欄位名 新欄位名 類型(長度) [ comment 註釋 ] [ 約束 ];
刪除欄位
alter table 表名 drop 欄位名;
修改表名
alter table 表名 rename to 新表名;
表操作-刪除
刪除表
drop table [ if exists ] 表名;
可選項 if exists 代表,只有表名存在時才會刪除該表,表名不存在,則不執行刪除操作(如果不加該參數項,刪除一張不存在的表,執行將會報錯)
刪除指定表, 並重新創建表
truncate table 表名;
註意:在刪除表的時候,表中的全部數據也都會被刪除。