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 表名;
注意:在洗掉表的時候,表中的全部資料也都會被洗掉,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/541630.html
標籤:MySQL
上一篇:無監控,不運維!深入淺出介紹ChengYing監控設計和使用
下一篇:MySQL8.0鎖情況排查
