1.庫的管理
建立庫
create database [if not exists] 庫名;
更改庫的字元集
alter database 庫名 character set [gbk/utf-8];
删除庫
drop database [if exists] 庫名;
2.表的管理
① 建立
create table 表名(
列名 列的類型[(長度) 限制],
列名 列的類型[(長度) 限制],
…
列名 列的類型[(長度) 限制]
)
②修改
alter table 表名 add|drop|modify|change column 列名 [列類型 限制];
- 修改列名
alter table 表名 change column 原列名 新列名 列類型;
- 修改列的類型或限制
alter table 表名 modify colum 列名 類型;
- 添加新列
alter table 表名 add column 列名 類型;
- 删除列
alter table 表名 drop column 列名;
- 修改表名
alter table 表名 rename to 新表名;
③删除
drop table 表名;
④ 複制
- 僅複制表結構
create table 表名 like 要複制表結構的表名
- 表結構+内容都複制
create table 表名 select * from 要複制的表的表名
- 隻複制部分資料
create table 表名
select 列名1,列名2…
from 要複制表的表名
where …
3.常見限制
含義: 用于限制表中的資料,為了保證表中資料的準确和可靠性。
分類:六大限制
NOT NULL: 非空,用于保證該字段的值不能為空。
DEFAULT: 預設,用于保證該字段有預設值。
PRIMARY KEY: 主鍵,用于保證該字段的值有唯一性,且不為空。
UNIQUE: 唯一,用于保證該字段的值有唯一性,且可以為空。
CHECK: 檢查限制(mysql中不支援)。
FOREIGN KEY: 外鍵,用于限制兩個表的關系,用于保證該字段的值必須來自于主表的關聯列的值。在從表添加外鍵限制,用于引用主表中某列的值。
- 列級限制
- mysql中隻支援:預設、非空、主鍵、唯一
CREATE TABLE stuinfo(
id INT PRIMARY KEY,#主鍵
stuName VARCHAR(20) NOT NULL,#非空
gender CHAR CHECK(gender='男' OR gender='女'),#檢查(不報錯)
seat INT UNIQUE,#唯一
age INT DEFAULT 18,#預設
majorId INT REFERENCES major(id)#外鍵
);
- 表級限制
- 不支援預設和非空,一個表可以添加多個外鍵
CREATE TABLE stuinfo(
id INT,
stuName VARCHAR(20),
gender CHAR,
seat INT,
age INT,
majorId INT,
CONSTRAINT pk PRIMARY KEY(id),
CONSTRAINT ck CHECK(gender='男' OR gender='女'),
CONSTRAINT uq UNIQUE(seat),
CONSTRAINT fk FOREIGN KEY(majorId) REFERENCES major(id)
);
- 表級限制與列級限制差別
位置 | 支援的限制類型 | 是否可以起限制名 | |
---|---|---|---|
表級限制 | 列名的後面 | 文法都支援(外鍵沒有效果) | 不可以 |
列級限制 | 所有列的下面 | 預設、非空不支援,其他支援 | 可以(主鍵沒有效果) |
4.自增長列(辨別列)
含義: 可以不用手動插入值,系統提供預設序列值(從1開始)。
- 檢視自增長步長
- 設定自增長步長
建立表時設定自增長列
CREATE TABLE tab_identity(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
修改表時設定自增長列
ALTER TABLE 表名 MODIFY COLUMN 列名 INT AUTO_INCREMENT;
ALTER TABLE 表名 MODIFY COLUMN 列名 INT;#修改表時删除自增長列