MySql複習四.1 DDL語言

一,庫的管理

一、創建庫

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 字段名 字段類型 約束

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章