約束條件
表關係學習到的知識如下
create table stu(stu_id int primary key auto_increment,
name varchar(20),
age tinyint,
ins_id int not null);
alter table tb_name rename to new_tb_name;
把原表名為tb_name的修改為new_tb_name;
alter table new_tb_name change name sut_name datetime;
將表名為new_tb_name中字段為name的名字修改為stu_name,並且字段值的型別修改為datetime型別,
注:修改字段,必須帶上修改後的字段型別
alter table new_tb_name modify stu_name varchar(20);
將表名為new_tb_name中字段為sut_name的字段型別修改為varchar(20)
注:如果將字元型別的字段修改為型別為數值型,那麼修改前需確認字元中是否是全部是數字,如果不是,會出現不匹配報錯```
alter table new_tb_name add *** varchar(10);
在表new_tb_name中新增乙個新字段***,且字段型別為varchar,長度為10的字段。
alter table new_tb_name drop ***;
將表new_tb_name中字段為***的字段刪除
是一種限制,通過對錶中的資料做出限制,來確保資料的完整性,唯一性
default
建立時約束
create table tb_name (id int default 0);
建立tb_name時制定欄位id型別為int,預設值為0
加字段時制定
alter table tb_name add name varchar(20) default "name";
增加欄位name時制定預設值為name
not null
建立時制定
create table tb_name (id int not null,name varchar(20));
建立表tb_name時欄位型別為int,插入資料時不能為空值,所以一般非空和預設約束配合使用。
同樣可以在修改或者增加欄位時指定。
unique key
建立時制定
create table tb_name(id int unique key);
建立表tb_name 時欄位id唯一,插入值時id不能重複,否則會報錯。
同樣可以在修改或者增加欄位時指定。
primary key
乙個表只能有乙個主鍵
建立時指定
create table tb_name(id int primary key);
建立表tb_name時欄位id為主鍵,主鍵是非空加唯一
刪除主鍵約束
alter table tb_name drop primary key;
刪除表tb_name的主鍵約束
auto_increment
一般和主鍵配合使用乙個表只能有乙個
建立時指定
create table tb_name(id int primary key auto_increment,name varchar(20));
建立表tb_name時,欄位id型別int,且為主鍵,沒插入乙個資料,id會自動加1.
所以插入資料時,如果資料為空,必須制定主鍵值,或者加上default
insert into tb_name values(default,"jiuchen");
insert into tb_name values(null,"jiuchen");
foreign key … references
外來鍵約束是連線兩個表,所以外來鍵約束必須有兩個表以上才行
建立時指定
表1:
create table tb_name1(tb1_id int primary key auto_increment,name varchar(20));
表2:加上外來鍵約束
create table tb_name2(tb2_id int primary key,phone int,foreign key(tb2_id) references tb_name1(tb1_id));
上述表tb_name1和tb_name2其中都是以id為主鍵。且表2中的tb2_id為外來鍵,與表tb_name1中tb1_id相關聯。注:
修改外來鍵約束
先查表的外鍵名
show create table course;
然後刪除
alter table course drop foreign key course_ibfk_1;
新增外來鍵約束
alter table course add foreign key(col_id) reference college(col_id);
用主鍵加主鍵來實現一對一
表1:
create table stu_out(stu_id int primary key ,
name varchar(20),
age tinyint,
*** varchar(20));
表2:
create table stu_in(stu_id int primary key ,
grade varchar(20),
phone int,
address varchar(50)
foreign key(stu_id) references stu_out(stu_id));
以上的兩個表stu_out和stu_in通過主鍵id形成了一對一的關係。
主鍵加主鍵,外來鍵關聯
表3:
create table deparment(dep_id int primary key auto_increment,
dep_name varchar(20));
表1:一對一關係中的表1加乙個dep_id為非主鍵
create table stu_out(stu_id int primary key ,
name varchar(20),
age tinyint,
*** varchar(20)
dep_id int not null
foreign key(dep_id) references deparment(dep_id));
表1的主鍵stu_id已經與表2的主鍵關聯起來了,但是表1中的dep_id又與表3中的主鍵
dep_id關聯起來,這種情況就是一對多。
即乙個主鍵可以用來對應多個主鍵
需要通過中間表來實現
通過中間表來聯合主鍵,分別關聯兩個表(通過外來鍵關聯)
表4:
create table cours(cou_id int primary key auto_increment,
cou_name varchar(20) not null);
中間表:
create table select(stu_id int ,
cou_id int,
primary key(stu_id,cou_id),
foreign key(stu_id) references stu_out(stu_id),
foreign key(cou_id) references cours(cou_id));
其中 primary key(stu_id,cou_id),為聯合主鍵,下面的兩個foreign key分別關聯兩個表:表1 stu_out和表4 cours的主鍵。
即中間表的聯合主鍵分別對應兩個表的多個主鍵,即中間表的
stu_id 可以對應多個表1的stu_id;
cou_id可以對應多個表4的cou_id;
這樣就形成了多對多的關係
MySQL資料庫(三)MySQL基礎常見命令
1.檢視當前所有資料庫 show databases 2.開啟指定的庫 use 庫名 3.檢視當前庫中所有的表 show tables 4.檢視其它庫中所有的表 show tables from 庫名 5.檢視某個表的結構 desc 表名 6.建立乙個表 create table 表名 列名 資料型...
Mysql 指令建立資料庫
一 連線mysql 格式 mysql h主機位址 u使用者名稱 p使用者密碼 1 連線到本機上的mysql。首先開啟dos視窗,然後進入目錄mysql bin,再鍵入命令mysql u root p,回車後提示你輸密碼.注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸...
MySQL資料庫常見操作
1.為所有使用者授權 grant all privileges on to 使用者名稱 identified by 密碼 2.資料庫基礎操作 1 登陸mysql資料庫 mysql u root p,回車後再輸入密碼即可 2 檢視所有資料庫 show databases 3 刪除某個資料庫 drop ...