日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql表一对多关系,mysql表与表之间的关系(多对多,一对多)

發(fā)布時(shí)間:2025/3/20 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql表一对多关系,mysql表与表之间的关系(多对多,一对多) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE day15;

#使用

USE day15;

#創(chuàng)建表

CREATE TABLE test1(

id INT PRIMARY KEY AUTO_INCREMENT,#這是主鍵

num INT UNIQUE,#這個(gè)唯一鍵不起作用?

NAME VARCHAR(22)

);

#存入數(shù)據(jù)

INSERT INTO test1(NAME) VALUES(‘a(chǎn)aa‘);

#刪除數(shù)據(jù)但是不重置自動(dòng)增長(zhǎng)數(shù)

DELETE FROM test1;

#刪除數(shù)據(jù)重置行數(shù)(相當(dāng)于刪除掉整個(gè)表,然后再創(chuàng)建)

TRUNCATE TABLE test1;

############表與表之間的關(guān)系#####################

###一對(duì)多(B表外鍵字段存著A表的唯一主鍵表示拿一行被A表引用)

#主表user

CREATE TABLE t_user(

id VARCHAR(22),

username VARCHAR(22),

PASSWORD VARCHAR(32)

);

#主表的主鍵

ALTER TABLE t_user ADD CONSTRAINT PRIMARY KEY (id);

#從表:book表

CREATE TABLE t_book(

id VARCHAR(22),

title VARCHAR(55),

author VARCHAR(50),

user_id VARCHAR(32)#外鍵

);

#從表外鍵引用主表主鍵

#格式:ALTER TABLE 從表名 ADD CONSTRAINT FOREIGN KEY (從表外鍵) REFERENCES 主表名 (主表主鍵);

ALTER TABLE t_book ADD CONSTRAINT FOREIGN KEY (user_id) REFERENCES t_user (id);

###測(cè)試(查詢)

#主表存入數(shù)據(jù)

INSERT INTO t_user(id,username,PASSWORD) VALUES(‘u001‘,‘琳琳‘,‘1234‘);

INSERT INTO t_user(id,username,PASSWORD) VALUES(‘u002‘,‘問我‘,‘1234‘);

INSERT INTO t_user(id,username,PASSWORD) VALUES(‘u003‘,‘恩恩‘,‘1234‘);

#從表存入數(shù)據(jù)

INSERT INTO t_book(id,title,author,user_id) VALUES(‘b001‘,‘短劍‘,‘麗麗‘,‘u001‘);

INSERT INTO t_book(id,title,author,user_id) VALUES(‘b002‘,‘宿舍‘,‘恩恩‘,‘u003‘);

INSERT INTO t_book(id,title,author,user_id) VALUES(‘b003‘,‘方法‘,‘額額‘,‘u001‘);

INSERT INTO t_book(id,title,author,user_id) VALUES(‘b004‘,‘覆蓋‘,‘44‘,‘u002‘);

#主表主鍵不能被刪除或更新,以為從表在使用

DELETE FROM t_user WHERE id=‘u001‘;

#############查詢

#1,笛卡爾積,兩個(gè)表的乘積集合

SELECT * FROM t_user,t_book;

SELECT COUNT(*) FROM t_user,t_book;

#2 隱式內(nèi)連接

SELECT * FROM t_user,t_book WHERE t_user.id = t_book.user_id;

SELECT t_user.username,t_book.title FROM t_user,t_book WHERE t_user.id=t_book.user_id;

#3內(nèi)連接

SELECT u.username,b.title FROM t_user u INNER JOIN t_book b ON u.id =b.`user_id`;

###4外鏈接

#左外連接:查詢A表所有內(nèi)容,設(shè)定條件顯示B表內(nèi)容

SELECT * FROM t_user u LEFT OUTER JOIN t_book b ON u.id = b.user_id;

#右外鏈接:查詢B表所有內(nèi)容,顯示符合條件的A表內(nèi)容

SELECT * FROM t_user u RIGHT OUTER JOIN t_book b ON u.id = b.user_id;

#######多對(duì)多(多對(duì)多是B表多項(xiàng)被A表多項(xiàng)引用)

##主表:學(xué)生表

CREATE TABLE m_student(

id VARCHAR(32) PRIMARY KEY, #主鍵

NAME VARCHAR(50),

age INT

);

##主表:中間表,學(xué)生課程表

CREATE TABLE m_course(

id VARCHAR(32) PRIMARY KEY, #主鍵

content VARCHAR(50),

teacher VARCHAR(50)

);

##從表:中間表,學(xué)生課程表

CREATE TABLE m_student_course(

student_id VARCHAR(32), #學(xué)生對(duì)應(yīng)外鍵

course_id VARCHAR(32) #課程表對(duì)應(yīng)外鍵

);

#######關(guān)系

###中間表與學(xué)生表:主外鍵關(guān)系

ALTER TABLE m_student_course ADD CONSTRAINT FOREIGN KEY (student_id) REFERENCES m_student (id);

###中間表與課程表:主鍵關(guān)系

ALTER TABLE m_student_course ADD CONSTRAINT FOREIGN KEY (course_id) REFERENCES m_course (id);

###聯(lián)合主鍵

ALTER TABLE m_student_course ADD CONSTRAINT PRIMARY KEY (student_id,course_id);

###外鍵刪除

ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;

###測(cè)試

INSERT INTO m_student(id,NAME,age) VALUES(‘s001‘,‘宿舍‘,‘22‘);

INSERT INTO m_student(id,NAME,age) VALUES(‘s002‘,‘宿33‘,‘32‘);

INSERT INTO m_course(id,content,teacher) VALUES(‘c001‘,‘去你妹‘,‘問我‘);

INSERT INTO m_course(id,content,teacher) VALUES(‘c002‘,‘sad‘,‘恩恩‘);

INSERT INTO m_course(id,content,teacher) VALUES(‘c003‘,‘fdsa‘,‘額額‘);

INSERT INTO m_student_course(student_id,course_id) VALUES(‘s001‘,‘c001‘);

INSERT INTO m_student_course(student_id,course_id) VALUES(‘s002‘,‘c001‘);

INSERT INTO m_student_course(student_id,course_id) VALUES(‘s001‘,‘c002‘);

INSERT INTO m_student_course(student_id,course_id) VALUES(‘s002‘,‘c003‘);

##查詢:某人學(xué)某課

#隱式內(nèi)連接

SELECT s.name , content FROM m_student s, m_student_course sc , m_course c

WHERE s.id = sc.student_id AND sc.course_id = c.id;

#內(nèi)連接

SELECT s.name , c.content FROM m_student s

INNER JOIN m_student_course sc ON s.id = sc.student_id

INNER JOIN m_course c ON sc.course_id = c.id;

原文:http://www.cnblogs.com/linjiqian/p/4488959.html

總結(jié)

以上是生活随笔為你收集整理的mysql表一对多关系,mysql表与表之间的关系(多对多,一对多)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。