多表關係:
第一大正規化:每一列都是最小的原子單位,不可以進行再分割
第二大正規化: 每一張表只能夠描述一種事物的特徵
第三大正規化: 每乙個列只能與主鍵進行依賴,不能出現區域性傳遞
新增主鍵約束
create table user2(
id int primary key,
name varchar(20)
);alter table user2 add primary key(id);
alter table user2 drop primary key(id);
alter table user2 modify id int primary key;
聯合主鍵
只要聯合的主鍵加起來不重複就可以了
create table user(
id int,
name varchar(30),
password varchar(30),
primary key(id,name)
);自增約束
create table user2(
id int primary key auto_increment,
name varchar(20),
unique(name)
);alter table user add unique(name);
unicreate table user3(
id int,
name varchar(20),
unique(name)
);mul
create table user3(
id int,
name varchar(20) unique,
);create table user3(
id int,
name varchar(20),
unique(id,name)
);create table user2(
id int,
name varchar(20) unique
);如何刪除唯一約束
alter table user drop index name;
新增唯一約束
alter table user modify name varchar(20) unique;
總結:1.建表的時候就新增約束
2.alter… add…
3.alter …modify…
4.刪除 alter… drop…
為空出錯
create table user2(
id int,
name varchar(20) not null
);當我們沒有插入字段值的時候,如果沒有傳值,就會使用預設值
create table user2(
id int,
name varchar(20)
age int default 10
);insert into user(id,name)values(1,「zhangsan」);
foreign_key
主表create table classes(
id int,
name varchar(20),
primary key(id)
);副表
create table students(
id int primary key,
name varchar(20),
class_id int,
foreign key(class_id) references classes(id)
);alter table product add constraint fk_id foreign key(class_id) references classes(id);
alter table classes drop foreign key class_id;
刪除index
1.主表classes 中沒有的資料值,在副表中,是不可以使用的。
2.主表中的記錄被副表引用,是不可以被刪除的。
一對一 (比較少) man ==>身份證 ()
一對多 多對一 部門與員工之間的關係 省級聯動(重點)
多對多 演員 與角色
在開發裡面,不會去新增很多外來鍵(增加 刪除修改比較麻煩)==>邏輯外來鍵 (找準)
(不管滿不滿足要求都查詢出來)
select s.studentno,s.studentname,r.subjectno,r.studentresult from student s,result r
(其實就是加上where 條件)
#查詢課程為《高等數學-2》且分數不小於80分的學生的學號和姓名
1.查詢語句的第一種寫法 也就是把子查詢出來的結果給前面的查詢語句當做條件
select s.studentno,s.studentname from student s where s.studentno in(
select r.studentno from result r where r.subjectno in(
select sub.subjectno fromsubject
sub where sub.subjectname=「高等數學-2」
) and r.studentresult>80)
2.第二種子查詢的格式 s.studentno,s.studentname 班級的名稱
select s.studentno,s.studentname,
(select g.gradename from grade g where s.gradeid=g.gradeid) as gradename
from student s
mysql三大特性 三正規化 五大約束
1.資料庫的三大特性 實體 表 屬性 表中的資料 字段 關係 表與表之間的關係 2.資料庫設計三大正規化 a 確保每列保持原子性 即資料庫表中的所有字段值是不可分解的原子值 c 確保每列都和主鍵直接相關,而不是間接相關 在乙個資料庫表中儲存的資料只能與主鍵相關 消除傳遞依賴 間接 比如在設計乙個訂單...
資料庫三大正規化與五大約束
正規化 英文名稱是 normal form,是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。目前共有8種正規化,依次是 1nf,2nf,3nf,bcnf,4nf,5nf,dknf,6nf。但通常用到的只是前三種正規化,即 第一正規化 1nf 第二正規化 2nf 第三...
資料庫的三大正規化以及五大約束
實體 表 屬性 表中的資料 字段 關係 表與表之間的關係 資料庫設計三大正規化 重點 第一正規化 1nf 資料表中的每一列 每個字段 必須是不可拆分的最小單元,也就是確保每一列的原子性 例如 userinfo 山東省煙台市 131777368781 userads 山東0省煙台市 usertel 1...