MySQL基礎 DDL語言(資料定義語句)

2021-10-08 12:58:05 字數 3932 閱讀 8638

一、建立庫

create database 【if not exists】 庫名【 character set 字符集名】;

二、修改庫

alter database 庫名 character set 字符集名;

三、刪除庫

drop database 【if exists】 庫名;

一、建立表 ★

create table 【if not exists】 表名(

欄位名 字段型別 【約束】,

欄位名 字段型別 【約束】,

。。。欄位名 字段型別 【約束】

)二、修改表

1.新增列

alter table 表名 add column 列名 型別 【first|after 欄位名】;

2.修改列的型別或約束

alter table 表名 modify column 列名 新型別 【新約束】;

3.修改列名

alter table 表名 change column 舊列名 新列名 型別;

4 .刪除列

alter table 表名 drop column 列名;

5.修改表名

alter table 表名 rename 【to】 新錶名;

三、刪除表

drop table【if exists】 表名;

四、複製表

1、複製表的結構

create table 表名 like 舊表;

2、複製表的結構+資料

create table 表名

select 查詢列表 from 舊表【where 篩選】;

一、數值型

1、整型

tinyint、smallint、mediumint、int/integer、bigint

1 2 3 4 8

特點:①都可以設定無符號和有符號,預設有符號,通過unsigned設定無符號

②如果超出了範圍,會報out or range異常,插入臨界值

③長度可以不指定,缺省會有乙個長度

長度代表顯示的最大寬度,如果不夠則左邊用0填充,但需要搭配zerofill,並且預設變為無符號整型

2、浮點型

定點數:decimal(m,d)

浮點數:

float(m,d) 4

double(m,d) 8

特點:①m代表整數部位+小數部位的個數,d代表小數部位

②如果超出範圍,則報out or range異常,並且插入臨界值

③m和d都可以省略,但對於定點數,m預設為10,d預設為0

④如果精度要求較高,則優先考慮使用定點數

二、字元型

char、varchar、binary、varbinary、enum、set、text、blob

char:固定長度的字元,寫法為char(m),最大長度不能超過m,其中m可以省略,預設為1

varchar:可變長度的字元,寫法為varchar(m),最大長度不能超過m,其中m不可以省略

三、日期型

year年

date日期

time時間

datetime 日期+時間 8

timestamp 日期+時間 4 比較容易受時區、語法模式、版本的影響,更能反映當前時區的真實時間

一、常見的約束

not null:非空,該字段的值必填

unique:唯一,該字段的值不可重複

default:預設,該字段的值不用手動插入有預設值

check:檢查,mysql不支援

primary key:主鍵,該字段的值不可重複並且非空 unique+not null

foreign key:外來鍵,該字段的值引用了另外的表的字段

主鍵和唯一

1、區別:

①、乙個表至多有乙個主鍵,但可以有多個唯一

②、主鍵不允許為空,唯一可以為空

2、相同點

都具有唯一性

都支援組合鍵,但不推薦

外來鍵:1、用於限制兩個表的關係,從表的字段值引用了主表的某字段值

2、外來鍵列和主表的被引用列要求型別一致,意義一樣,名稱無要求

3、主表的被引用列要求是乙個key(一般就是主鍵)

4、插入資料,先插入主表

刪除資料,先刪除從表

可以通過以下兩種方式來刪除主表的記錄

#方式一:級聯刪除

alter table stuinfo add constraint fk_stu_major foreign key(majorid) references major(id) on delete cascade;

#方式二:級聯置空

alter table stuinfo add constraint fk_stu_major foreign key(majorid) references major(id) on delete set null;

二、建立表時新增約束

create table 表名(

欄位名 字段型別 not null,#非空

欄位名 字段型別 primary key,#主鍵

欄位名 字段型別 unique,#唯一

欄位名 字段型別 default 值,#預設

constraint 約束名 foreign key(欄位名) references 主表(被引用列)

)注意:

支援型別 可以起約束名

列級約束 除了外來鍵 不可以

表級約束 除了非空和預設 可以,但對主鍵無效

列級約束可以在乙個欄位上追加多個,中間用空格隔開,沒有順序要求

三、修改表時新增或刪除約束

1、非空

新增非空

alter table 表名 modify column 欄位名 字段型別 not null;

刪除非空

alter table 表名 modify column 欄位名 字段型別 ;

2、預設

新增預設

alter table 表名 modify column 欄位名 字段型別 default 值;

刪除預設

alter table 表名 modify column 欄位名 字段型別 ;

3、主鍵

新增主鍵

alter table 表名 add【 constraint 約束名】 primary key(欄位名);

刪除主鍵

alter table 表名 drop primary key;

4、唯一

新增唯一

alter table 表名 add【 constraint 約束名】 unique(欄位名);

刪除唯一

alter table 表名 drop index 索引名;

5、外來鍵

新增外來鍵

alter table 表名 add【 constraint 約束名】 foreign key(欄位名) references 主表(被引用列);

刪除外來鍵

alter table 表名 drop foreign key 約束名;

四、自增長列

特點:1、不用手動插入值,可以自動提供序列值,預設從1開始,步長為1

auto_increment_increment

如果要更改起始值:手動插入值

如果要更改步長:更改系統變數

set auto_increment_increment=值;

2、乙個表至多有乙個自增長列

3、自增長列只能支援數值型

4、自增長列必須為乙個key

一、建立表時設定自增長列

create table 表(

欄位名 字段型別 約束 auto_increment

)二、修改表時設定自增長列

alter table 表 modify column 欄位名 字段型別 約束 auto_increment

三、刪除自增長列

alter table 表 modify column 欄位名 字段型別 約束

My SQL資料定義語言 DDL

create if notexists db name create specification create specification create specification default character set charset name default collate collatio...

MySQL 資料定義語言(DDL)

mysql 資料定義語言 ddl 一 create命令 1 建立資料庫 create database if not exists 資料庫名 例 create database aa 2 建立資料表 create table if not exists 表名 欄位名1 列型別 屬性 索引 注釋 欄位...

MySQL之資料定義語言(DDL)

資料定義語言 用來建立資料庫,資料庫物件和定義列的命令。mysql uroot p輸入密碼後進入mysql,exit或quit退出 檢視所有資料庫show databases 建立資料庫create database 資料庫名 刪除資料庫drop database 資料庫名 切換進入某個資料庫use...