天天看點

SQL之DDL(資料定義語言)1.庫的管理2.表的管理3.常見限制4.自增長列(辨別列)

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 列名 [列類型 限制];
  1. 修改列名
alter table 表名 change column 原列名 新列名 列類型;
  1. 修改列的類型或限制
alter table 表名 modify colum 列名 類型;
  1. 添加新列
alter table 表名 add column 列名 類型;
  1. 删除列
alter table 表名 drop column 列名;
  1. 修改表名
alter table 表名 rename to 新表名;

③删除

drop table 表名;

④ 複制

  1. 僅複制表結構
create table 表名 like 要複制表結構的表名
  1. 表結構+内容都複制
create table 表名 select * from 要複制的表的表名
  1. 隻複制部分資料

create table 表名

select 列名1,列名2…

from 要複制表的表名

where …

3.常見限制

含義: 用于限制表中的資料,為了保證表中資料的準确和可靠性。

分類:六大限制

NOT NULL: 非空,用于保證該字段的值不能為空。

DEFAULT: 預設,用于保證該字段有預設值。

PRIMARY KEY: 主鍵,用于保證該字段的值有唯一性,且不為空。

UNIQUE: 唯一,用于保證該字段的值有唯一性,且可以為空。

CHECK: 檢查限制(mysql中不支援)。

FOREIGN KEY: 外鍵,用于限制兩個表的關系,用于保證該字段的值必須來自于主表的關聯列的值。在從表添加外鍵限制,用于引用主表中某列的值。

  1. 列級限制
  • 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)#外鍵
);
           
  1. 表級限制
  • 不支援預設和非空,一個表可以添加多個外鍵
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)
);
           
  1. 表級限制與列級限制差別
位置 支援的限制類型 是否可以起限制名
表級限制 列名的後面 文法都支援(外鍵沒有效果) 不可以
列級限制 所有列的下面 預設、非空不支援,其他支援 可以(主鍵沒有效果)

4.自增長列(辨別列)

含義: 可以不用手動插入值,系統提供預設序列值(從1開始)。

  1. 檢視自增長步長
  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;#修改表時删除自增長列