1. 庫的管理
Data Define Language數(shù)據(jù)定義語言,用于對數(shù)據(jù)庫和表的管理和操作
1.1 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE stuDB;
CREATE DATABASE IF NOT EXISTS stuDB;
1.2 刪除數(shù)據(jù)庫
DROP DATABASE stuDB;
DROP DATABASE IF EXISTS stuDB;
2. 表的管理
2.1 創(chuàng)建表
語法:
CREATE TABLE [IF NOT EXISTS] 表明(
字段名 字段類型 【字段約束】,
字段名 字段類型 【字段約束】,
字段名 字段類型 【字段約束】,
字段名 字段類型 【字段約束】,
字段名 字段類型 【字段約束】
);
案例:
CREATE TABLE IF NOT EXISTS stuinfo(
stuid INT,
stuname VARCHAR(20),
stugender CHAR,
email VARCHAR(20),
borndate DATETIME
);
2.2 修改表
語法:
#添加/修改字段類型/修改字段名/刪除
ALTER TABLE 表名 ADD|MODIFY|CHANGE|DROP COLUMN 字段名 字段類型 【約束條件】
使用方法:
#1.修改表名
ALTER TABLE stuinfo RENAME TO students;
#2.添加字段
ALTER TABLE students ADD COLUMN borndate TIMESTAMP NOT NULL;
#3.修改字段名
#borndate是原字段名桶略,birthday是修改后字段名
#在修改是可以同時修改字段類型和約束條件
ALTER TABLE students CHANGE COLUMN borndate birthday;
#4.修改字段類型
ALTER TABLE students MODIFY COLUMN birthday TIMESTAMP;
#5.刪除字段
ALTER TABLE students DROP COLUMN birthday;
2.3 刪除表
DROP TABLE IF EXISTS students;
2.4 復(fù)制表
#僅復(fù)制表的結(jié)構(gòu)
CREATE TABLE newTable LIKE major;
#復(fù)制表的結(jié)構(gòu)+數(shù)據(jù)
CREATE TABLE newTable SELECT * FROM girl.'beauty'
3. 常見數(shù)據(jù)類型
常見類型:
- int:整形
- double/float:浮點(diǎn)型,例如double(5,2)表示最多5位妇汗,其中必須2位小數(shù),即最大值為999.99
- decimal:浮點(diǎn)型说莫,在表示錢方面使用該類型杨箭,因?yàn)椴粫霈F(xiàn)精度缺失問題
- char:固定長度字符串類型
- varchar:可變長度字符串類型
- text:字符串類型,表示存儲較長文本
- date:日期類型储狭,格式為:yyyy-MM-dd
- time:時間類型互婿,格式為:hh:mm:ss
- timestamp/datetime:時間戳類型;日期+時間yyyyMMdd hhmmss
- blob:字節(jié)類型辽狈,可保存圖片
4. 常見約束
用于限制表中字段的數(shù)據(jù)慈参,從而進(jìn)一步保證數(shù)據(jù)表的數(shù)據(jù)是一致的、準(zhǔn)確的刮萌、可靠的
六大約束:
- NOT NULL 非空:用于限制該字段為必填項(xiàng)
- DEFAULT 默認(rèn):用于限制該字段若沒有顯式插入值驮配,則直接顯式默認(rèn)值
- PRIMARY KEY 主鍵:用于限制該字段值不能重復(fù),設(shè)置為主鍵列的字段默認(rèn)不能為空尊勿,一個表只能有一個主鍵僧凤,當(dāng)然可以為組合主鍵
- UNIQUE 唯一:用于限制該字段值不能重復(fù),字段可以為空元扔,一個表可以有多個唯一鍵
- CHECK 檢查:用于限制該字段值必須滿足指定條件躯保,CHECK(age BETWEEN 1 AND 100)
-
FOREIGN KEY 外鍵:用于限制兩個表的關(guān)系,要求:
- 外鍵列的值必須來自主表的關(guān)聯(lián)列
- 主表的關(guān)聯(lián)列和從表的關(guān)聯(lián)列的類型必須一致澎语,意思一樣途事,名稱無要求
- 主表的關(guān)聯(lián)列要求必須是主鍵
CREATE TABLE IF NOT EXISTS stuinfo(
stuid INT PRIMARY KEY,#添加了主鍵約束
stuname VARCHAR(20) UNIQUE NOT NULL,#添加了唯一約束+非空
stugender CHAR DEFAULT '男',#添加默認(rèn)約束
email VARCHAR(20) NOT NULL,
age IN CHECK(age BETWEEN 0 AND 100),#添加檢查約束,MySQL不支持
majorid INT,
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES majio(id)#添加外鍵約束
);