mysql表關係
一對多關係
一對多與多對一是乙個概念,指的是乙個實體的某個資料與另外乙個實體的多個資料有關聯關係。 舉例,學校中乙個學、院可以有很多的學生,而乙個學生只屬於某乙個學院(通常情況下),學院與學生之間的關係就是一對多的關係,通過外來鍵關聯來實現這種關係。
#建立學院表:
mysql> create table `department`(
-> `id` int primary key auto_increment,
-> `name` varchar(10) not null,
-> `code` int not null
#建立學生表
mysql> create table `student`(
-> `id` int primary key auto_increment,
-> `name` varchar(10) not null,
-> `dep_id` int,
-> constraint `stu_dep_for_key` foreign key (`dep_id`) references `department`(`id`) on delete restrict
#插入資料
mysql> insert into `department`(`name`,`code`)
-> values('理學院',01),
-> ('計算機學院',02)
mysql> select * from `department`;
mysql> insert into `student`(`name`,`dep_id`)
-> values('budong',1),
-> ('awen',1),
-> ('dongdong',2);
mysql> select * from `student`;
一對一關係
舉例,學生表中有學號、姓名、學院,但學生還有些比如**,家庭住址等比較私密的資訊,這些資訊不會放在學生表當中,會新建乙個學生的詳細資訊表來存放。這時的學生表和學生的詳細資訊表兩者的關係就是一對一的關係,因為乙個學生只有一條詳細資訊。用外來鍵加主鍵的方式來實現這種關係。
mysql> describe `student`;
#建立學生的詳細資訊表
mysql> create table `student_details`(
-> `id` int primary key auto_increment,
-> `id_card` int not null unique key,
-> `telephone` int,
-> `stu_id` int,
-> constraint `stu_deta_for_key` foreign key (`stu_id`) references `student`(`id`) on delete cascade
#插入資料
mysql> insert into `student_details`(`id_card`,`telephone`,`stu_id`)
-> values(4301,133,1),
-> (4302,157,2);
#這裡資訊一一對應,所以一般會同步插入
多對多關係
乙個實體的資料對應另外乙個實體的多個資料,另外實體的資料也同樣對應當前實體的多個資料。
舉例,學生要報名選修課,乙個學生可以報名多門課程,乙個課程有很多的學生報名,那麼學生表和課程表兩者就形成了多對多關係。對於多對多關係,需要建立第三張關係表,關係表中通過外來鍵加主鍵的形式實現這種關係。
#建立課程表
mysql> create table `course`(
-> `id` int primary key auto_increment,
-> `name` varchar(20) not null
mysql> create table `select`(
-> `stu_id` int,
-> `coures_id` int,
-> primary key(`stu_id`,`coures_id`),
-> constraint `select_stu_id_for_key` foreign key (`stu_id`) references `student`(`id`),
-> constraint `select_coures_id_for_key` foreign key (`coures_id`) references `course`(`id`)
create table select(stu_id int,course_id int,primary key(stu_id,course_id),constraint select_stu_id_for_key foreign key (stu_id) references students(id),constraint select_course_id_for_key foreign key (course_id) references course(id));
create table select(stu_id int, course_id int,primary key(stu_id,course_id),constraint select_stu_id_for_key foreign key (stu_id) references students(id),constraint select_course_id_for_key foreign key (course_id) references course(id));
mysql查詢關係表 MySQL查詢之關係查詢
連線查詢 select table b.type,table b.title,table b.content,table b.author from table a left join table b on table a.type table b.type where table a.id 1 子...
mysql 表參照關係 MYSQL表關係
表關係 一 外來鍵 foreign key 作用 約束當前表的某列值必須取自於另一張表的主鍵列值 外來鍵所在的列稱之為 外來鍵列 外來鍵所在的表稱之為 外來鍵表 或 子表 被外來鍵列所引用的表稱之為 主表 或 主鍵表 語法 1.建立表的同時指定外來鍵 create table 字段 型別,const...
mysql 關係表 MySQL表關係的理解
關係型資料庫表之間存在各種各樣的聯絡,及一對多,多對一,多對多。這裡主要講下一對多,為什麼要建立表之間的關聯。一對多的定義 一對多關係 一對多關係是關聯式資料庫中兩個表之間的一種關係,該關係中第乙個表中的單個行可以與第二個表中的乙個或多個行相關,但第二個表中的乙個行只可以與第乙個表中的乙個行相關。一...