1. 程式人生 > 資料庫 >資料庫-資料型別-資料庫建立表的 約束以及 DDL操作

資料庫-資料型別-資料庫建立表的 約束以及 DDL操作

-- MySql 的資料型別

-- 在建立表結構時,資料型別可以對欄位約束,類似Java的資料型別
-- 資料型別分類
-- 1、數值型別 : 修飾字段數字的型別
-- tinyint 微整型 1個位元組
-- smallint 短整型 2個位元組
-- mediumint 中等整型 3個位元組
-- int 整型 4個位元組
-- BIGINT 長整型 8個位元組
-- float 小數型 4個位元組
-- double 小數型 8 個位元組
-- decimal(總長度,小數點個數)

-- 在建立表時,指定資料型別
-- 建立表語法
create table 表名(
欄位1 資料型別 [primary key] ,
欄位2 資料型別 [not null]
...
)
-- 刪除表 (一起刪除與該表相關的所有記錄 資料和約束)
drop table mytest1;

create table mytest1 (
id tinyint primary key ,
id_2 smallint not null,
id_3 mediumint ,
id_4 int ,
id_5 float ,
money decimal(5,2) -- 5:數值的整個個數, 2:小數點的個數

)

-- 2 文字型別 用於定義表的欄位是文字的型別
-- char 不可變長度字元型別 0-255
-- varchar 可變長度字元型別 0-255
-- tinyblob 儲存二進位制型別(影象,視訊等)0-255
-- tinytext 儲存文字型別
-- blob 儲存二進位制型別(影象,視訊等)
-- text 儲存文字型別
-- mediumblob 儲存二進位制型別(影象,視訊等)(中等大小)
-- mediumtext 儲存文字型別
-- longblob 儲存二進位制型別(影象,視訊等)(超大記憶體)
-- longtext 儲存文字型別

create table mytest2(
id int primary key auto_increment, -- 主鍵自增長 預設從1開始
username varchar(20) , -- 可變長度
sex char(1) ,-- 不可變長度
introduce text, -- 儲存文字型別
image blob

)

select * from mytest2

3、日期 時間型別
-- date 日期型別 yyyy-mm-dd
-- time 時間型別 hh:mi:ss
-- year 年份
-- datetime 日期時間類
-- timestamp
create table mytest3(
id int primary key auto_increment ,
birthday date ,
mytime time ,
bir_year year ,
publishDate datetime ,-- 釋出時間
createDate timestamp -- 建立時間 需要開啟自動更新時間戳操作 每次修改新增都自動更新為系統時間
)

select * from mytest3;

-- 資料庫建立表的 約束以及 DDL操作

-- 所謂表的約束: 用於在建立表時,為了確保資料的完整性 訂製資料表的規則。
mysql中常用約束
1、 主鍵約束 : 用於唯一標誌該條記錄的約束 (等價於 非空約束+唯一約束 , 一張表中只能有一個主鍵列 主鍵可以是多欄位組合)

2、非空約束 : 約束該欄位插入時不為空

3、唯一約束: 該欄位的資料在一整列是唯一的

4、預設值約束: 設定該欄位的 預設值

5、檢查約束(check):設定欄位值的範圍是否符合指定條件

6、外來鍵約束: 用於主外來鍵關聯的約束

-- 建立使用者表 指定相關約束
create table t_user(
userid int primary key auto_increment, -- 主鍵 自增長 從1 開始
username varchar(20) not null, -- 非空約束
password varchar(20),
email varchar(50) unique , -- 唯一約束
sex char(1) default ('男'), -- 預設約束
age int check( age >0 and age<120), -- 檢查約束年齡在0-120之間
birthday datetime default(now()) -- 如果沒有指定生日,預設值為系統時間
)
-- 訂單表
create table t_order(
orderid int primary key ,
orderno varchar(30) not null,
order_amout decimal(8,2), -- 訂單金額
user_id int references t_user(userid) -- 外來鍵約束
)

-- 以上約束 既可以在建立表的時候完成 ,也可以在建立表之後通過alter新增約束
create table my_user(
user_id int ,
user_name varchar(20)

)

-- 使用alter 新增 主鍵約束、 唯一約束、 檢查約束 ,外來鍵約束 其中非空約束不能單獨新增
-- 1、主鍵約束語法: alter table 表名 add constraint 約束名 primary key (列名)
alter table my_user add constraint pk_userid primary key (user_id);

-- 2 唯一約束語法:
alter table 表名 add constraint 約束名 unique(列名);
alter table my_user add constraint uk_username unique(user_name );

-- 3、檢查約束
alter table 表名 add constraint 約束名 check(列名);
alter table t_user add constraint ck_age check (age>0 and age<100);

-- 4、外來鍵約束 (指定關聯表的主鍵 )
alter table 表名 add constraint 約束名 foreign key(外來鍵列名) references 主表(主鍵)

alter table t_order add constraint fk_userid foreign key (user_id) references t_user(userid);

-- 如果表建立好了 ,需要修改表結構,也可以通過alter 修改
select * from t_user;
-- 1 在t_user表中 新增 money 欄位
-- 語法: alter table 表名 add column 欄位名 資料型別(長度)
alter table t_user add column money decimal(8,2);

-- 2、刪除表的欄位 birthday
-- 語法: alter table 表名 drop column 欄位名
alter table t_user drop column birthday ;

-- 3、修改欄位的資料型別或長度
-- 語法: alter table 表名 modify column 欄位名 資料型別(長度)
desc t_user;
alter table t_user modify column sex varchar(10);

-- DML insert update delete