Mysql 三大正規化,五大約束,多表查詢,子查詢

2021-09-27 04:05:43 字數 3665 閱讀 3953

多表關係:

第一大正規化:每一列都是最小的原子單位,不可以進行再分割

第二大正規化: 每一張表只能夠描述一種事物的特徵

第三大正規化: 每乙個列只能與主鍵進行依賴,不能出現區域性傳遞

新增主鍵約束

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 fromsubjectsub 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...