1,啓動MySql數據庫 開啓服務數據庫
2.1.0新建一張班級表測試
備註:CHARSET = UTF8 (指定編碼格式爲utf8 防止中文亂碼)編碼
/*班級表*/ CREATE TABLE CLASS_INFO( C_ID INT PRIMARY KEY, CLASS_NAME VARCHAR(20) not NULL )CHARSET = UTF8;
運行效果:spa
新建成功3d
2.1.1依次建好學生表(學生表有一個指向班級表的主鍵 以便作關聯查詢)code
/*學生表*/ CREATE TABLE STUDENTS( STU_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, STU_NAME VARCHAR(20) NOT NULL, STU_AGE INT NOT NULL, C_ID INT references CLASS_INFO(C_ID) )CHARSET = UTF8;
2.1.2身份證表(身份證表有一個外鍵指向學生表的主鍵 以便作學生—身份證一對一查詢)blog
/*身份證表*/ CREATE TABLE STU_CARD( CARD_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, CARD_NUM VARCHAR(30) NOT NULL, STU_ID INT REFERENCES STUDENTS(STU_ID) )CHARSET = UTF8; /*給STU_CARD列添加一個惟一約束 保證身份證跟學生是一對一的關係*/ ALTER TABLE STU_CARD ADD UNIQUE (STU_ID);
2.1.3課程表數學
/*課程表*/ CREATE TABLE COURSE( COURSE_ID INT PRIMARY KEY NOT NULL, COURSE_NAME VARCHAR(20) NOT NULL )CHARSET = UTF8;
2.1.4 學生跟課程關聯的中間表(多對多須要有一箇中間表來維護2張表的關係)table
/*關聯學生和課程的中間表*/ CREATE TABLE COURSE_STU( STU_ID INT references STUDENTS(STU_ID), COURSE_ID INT REFERENCES COURSE(COURSE_ID) )CHARSET = UTF8;
3.1.0給班級表插入測試數據class
INSERT INTO CLASS_INFO VALUES (1,'TEAM01'); INSERT INTO CLASS_INFO VALUES (2,'TEAM02'); INSERT INTO CLASS_INFO VALUES (3,'TEAM03');
3.1.1給學生表插入測試數據(學生id,學生姓名,年齡,該學生所在的班級)
INSERT INTO STUDENTS VALUES(1,'張三',12,1); INSERT INTO STUDENTS VALUES(2,'李四',15,3); INSERT INTO STUDENTS VALUES(3,'王五',15,2); INSERT INTO STUDENTS VALUES(4,'趙六',16,2); INSERT INTO STUDENTS VALUES(5,'小二',12,3);
3.1.2給身份證表插入測試數據(id,身份證號,身份證所關聯的學生)
INSERT INTO STU_CARD VALUES(1,'1234566543',2); INSERT INTO STU_CARD VALUES(2,'4324543565',1); INSERT INTO STU_CARD VALUES(3,'2345654334',3);
3.1.3給課程表表插入測試數據(id,課程)
INSERT INTO COURSE VALUES(1,'語文'); INSERT INTO COURSE VALUES(2,'數學'); INSERT INTO COURSE VALUES(3,'英語');
3.1.4給學生—學科中間表插入測試數據(第一列指向學生ID , 第二列指向課程ID)
INSERT INTO COURSE_STU VALUES (1,1); INSERT INTO COURSE_STU VALUES (2,2); INSERT INTO COURSE_STU VALUES (2,3); INSERT INTO COURSE_STU VALUES (3,2);
4.查出全部所建的表 以及 插入的數據
SELECT * FROM CLASS_INFO; SELECT * from students; SELECT * FROM STU_CARD; SELECT * from COURSE; SELECT * FROM COURSE_STU;
運行效果:
5.查詢
5.1.1查出班級ID爲2的全部學生信息
/* 查出班級ID爲2的全部學生信息*/ SELECT * FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;
運行效果:
5.1.2查詢學生表的總記錄數
/*查詢學生表的總記錄數*/ SELECT COUNT(*) FROM STUDENTS;
運行效果:
5.1.3查詢班級id爲2的總記錄數
/*查詢班級id爲2的總記錄數*/ SELECT COUNT(*) FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2;
運行效果:
5.1.4查出班級名稱爲TEAM01的全部學生信息
/* 查出班級名稱爲TEAM01的學生信息(班級,姓名,年齡)*/ SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.CLASS_NAME='TEAM01';
運行效果:
5.1.5查出全部人以及所在的班級
/*查出全部人以及所在的班級*/ SELECT S.STU_NAME, C.CLASS_NAME FROM STUDENTS S LEFT JOIN CLASS_INFO C ON C.C_ID = S.C_ID;
運行效果:
5.1.6查詢班級ID爲2 的全部學生id 姓名 以及年齡
/*查詢班級ID爲2 的全部學生id 姓名 以及年齡*/ SELECT C.C_ID , C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE S.C_ID= 2;
運行效果:
5.1.7查詢班級ID爲3 的班級名稱 以及學生年齡 降序排列
/*查詢班級ID爲3 的班級名稱 以及學生年齡 降序排列 升序ASC*/ SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE C.C_ID=3 ORDER BY S.STU_AGE DESC;
運行效果:
5.1.8查詢ID爲1 的學生所在的班級(CLASS_INFO) 姓名 年齡(STUDENTS) 以及 身份證號(STU_CARD) 3表聯查
/*查詢ID爲1 的學生所在的班級(CLASS_INFO) 姓名 年齡(STUDENTS) 以及 身份證號(STU_CARD) 3表聯查*/ SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE,CA.CARD_NUM FROM STU_CARD CA LEFT JOIN STUDENTS S ON CA.STU_ID=S.STU_ID LEFT JOIN class_info C ON C.C_ID=S.C_ID WHERE S.STU_ID = 1;
運行效果:
5.1.9右鏈接查詢每一個學生所選的每一門課程 以課程爲基準
/*右鏈接查詢每一個學生所選的每一門課程 以課程爲基準*/ SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;
運行效果:
5.2.0右鏈接查詢 學生ID 姓名 以及所選的課程
/*右鏈接查詢 學生ID 姓名 以及所選的課程*/ SELECT S.STU_ID, S.STU_NAME,C.COURSE_NAME FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;
運行效果:
5.2.1查詢全部學生ID 姓名 年齡(STUDENTS) 以及他所選的課程(3表聯查)
/*查詢全部學生ID 姓名 年齡(STUDENTS) 以及他所選的課程(3表聯查)*/ SELECT S.STU_ID , S.STU_NAME,S.STU_AGE, C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID;
運行效果:
5.2.2查詢學生id爲2的學生姓名 以及他所選的課程
/*查詢學生id爲2的學生姓名 以及他所選的課程*/ SELECT S.STU_NAME,C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID WHERE S.STU_ID = 2;
運行效果:
5.2.3查詢班級id爲2 的學生姓名 所選的課程 以及所在的班級名稱
/*查詢班級id爲2 的學生姓名 所選的課程 以及所在的班級名稱*/ SELECT S.STU_NAME, C.COURSE_NAME,CL.CLASS_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CL ON CL.C_ID=S.C_ID WHERE CL.C_ID=2;
運行效果:
5.2.4查詢全部學生的學生身份證信息,身份證信息,班級信息
/*查詢全部學生的學生身份證信息,身份證信息,班級信息*/ SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID;
運行效果:
5.2.5 4表聯查 學生信息,課程信息 班級信息 身份證信息
/*4表聯查 學生信息,課程信息 班級信息 身份證信息*/ SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;
運行效果:
5.2.6 5張表聯查 查出學生姓名 他所在的班級 所選的課程 以及該學生的身份證號
/*5張表聯查 查出學生姓名 他所在的班級 所選的課程 以及該學生的身份證號*/ SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID;
運行效果:
5.2.7 5張表聯查 查出學生ID爲2的學生姓名 他所在的班級 所選的課程 以及該學生的身份證號
/*5張表聯查 查出學生ID爲2的學生姓名 他所在的班級 所選的課程 以及該學生的身份證號*/ SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID WHERE S.STU_ID=2;
運行效果:
drop TABLE students drop table CLASS_INFO drop table course drop table stu_card; drop table COURSE_STU; /*學生表*/ CREATE TABLE STUDENTS( STU_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, STU_NAME VARCHAR(20) NOT NULL, STU_AGE INT NOT NULL, C_ID INT references CLASS_INFO(C_ID) )CHARSET = UTF8; /*班級表*/ CREATE TABLE CLASS_INFO( C_ID INT PRIMARY KEY, CLASS_NAME VARCHAR(20) not NULL )CHARSET = UTF8; /*身份證表*/ CREATE TABLE STU_CARD( CARD_ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, CARD_NUM VARCHAR(30) NOT NULL, STU_ID INT REFERENCES STUDENTS(STU_ID) )CHARSET = UTF8; /*給STU_CARD列添加一個惟一約束 保證身份證跟學生是一對一的關係*/ ALTER TABLE STU_CARD ADD UNIQUE (STU_ID); /*課程表*/ CREATE TABLE COURSE( COURSE_ID INT PRIMARY KEY NOT NULL, COURSE_NAME VARCHAR(20) NOT NULL )CHARSET = UTF8; /*關聯學生和課程的中間表*/ CREATE TABLE COURSE_STU( STU_ID INT references STUDENTS(STU_ID), COURSE_ID INT REFERENCES COURSE(COURSE_ID) )CHARSET = UTF8; INSERT INTO CLASS_INFO VALUES (1,'TEAM01'); INSERT INTO CLASS_INFO VALUES (2,'TEAM02'); INSERT INTO CLASS_INFO VALUES (3,'TEAM03'); INSERT INTO STUDENTS VALUES(1,'張三',12,1); INSERT INTO STUDENTS VALUES(2,'李四',15,3); INSERT INTO STUDENTS VALUES(3,'王五',15,2); INSERT INTO STUDENTS VALUES(4,'趙六',16,2); INSERT INTO STUDENTS VALUES(5,'小二',12,3); INSERT INTO STU_CARD VALUES(1,'1234566543',2); INSERT INTO STU_CARD VALUES(2,'4324543565',1); INSERT INTO STU_CARD VALUES(3,'2345654334',3); INSERT INTO STU_CARD VALUES(4,'4345324534',3); INSERT INTO COURSE VALUES(1,'語文'); INSERT INTO COURSE VALUES(2,'數學'); INSERT INTO COURSE VALUES(3,'英語'); INSERT INTO COURSE_STU VALUES (1,1); INSERT INTO COURSE_STU VALUES (2,2); INSERT INTO COURSE_STU VALUES (2,3); INSERT INTO COURSE_STU VALUES (3,2); SELECT * FROM CLASS_INFO; SELECT * from students; SELECT * FROM STU_CARD; SELECT * from COURSE; SELECT * FROM COURSE_STU; DELETE FROM STU_CARD WHERE CARD_ID = 4; DELETE FROM COURSE_STU WHERE COURSE_ID = 3; /* 查出班級ID爲2的全部學生信息*/ SELECT * FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2; /*查詢學生表的總記錄數*/ SELECT COUNT(*) FROM STUDENTS; /*查詢班級id爲2的總記錄數*/ SELECT COUNT(*) FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.C_ID = 2; /* 查出班級名稱爲TEAM01的全部學生信息*/ SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM STUDENTS S LEFT JOIN CLASS_INFO C ON S.C_ID=C.C_ID WHERE C.CLASS_NAME='TEAM02'; /*查出全部人以及所在的班級*/ SELECT S.STU_NAME, C.CLASS_NAME FROM STUDENTS S LEFT JOIN CLASS_INFO C ON C.C_ID = S.C_ID; /*查詢班級ID爲2 的全部學生id 姓名 以及年齡*/ SELECT C.C_ID , C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE S.C_ID= 2; /*查詢班級ID爲1 的班級名稱 以及學生年齡 降序排列 升序ASC*/ SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE FROM CLASS_INFO C LEFT JOIN STUDENTS S ON C.C_ID = S.C_ID WHERE C.C_ID=3 ORDER BY S.STU_AGE DESC; /*查詢ID爲1 的學生所在的班級(CLASS_INFO) 姓名 年齡(STUDENTS) 以及 身份證號(STU_CARD) 3表聯查*/ SELECT C.CLASS_NAME, S.STU_NAME,S.STU_AGE,CA.CARD_NUM FROM STU_CARD CA LEFT JOIN STUDENTS S ON CA.STU_ID=S.STU_ID LEFT JOIN class_info C ON C.C_ID=S.C_ID WHERE S.STU_ID = 1; /*右鏈接查詢每一個學生所選的每一門課程 以課程爲基準*/ SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID; /*右鏈接查詢 學生ID 姓名 以及所選的課程*/ SELECT S.STU_ID, S.STU_NAME,C.COURSE_NAME FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID RIGHT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID; /*查詢全部學生ID 姓名 年齡(STUDENTS) 以及他所選的課程(3表聯查)*/ SELECT S.STU_ID , S.STU_NAME,S.STU_AGE, C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID; /*查詢學生id爲2的學生姓名 以及他所選的課程*/ SELECT S.STU_NAME,C.COURSE_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID WHERE S.STU_ID = 2; /*查詢班級id爲2 的學生姓名 所選的課程 以及所在的班級名稱*/ SELECT S.STU_NAME, C.COURSE_NAME,CL.CLASS_NAME FROM STUDENTS S LEFT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CL ON CL.C_ID=S.C_ID WHERE CL.C_ID=2; /*查詢學生ID爲2的全部學生信息(學生表+身份證表+班級表)*/ SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID LEFT JOIN CLASS_INFO C ON S.C_ID = C.C_ID WHERE S.STU_ID = 2; /*查詢全部學生的學生身份證信息,身份證信息,班級信息*/ SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID; /*查詢班級名稱爲TEAM02的全部學生的學生身份證信息,身份證信息,班級信息*/ SELECT * FROM STUDENTS S LEFT JOIN STU_CARD CA ON S.STU_ID = CA.STU_ID RIGHT JOIN CLASS_INFO C ON S.C_ID = C.C_ID WHERE C.CLASS_NAME='TEAM02'; /*4表聯查 學生信息,課程信息 班級信息 身份證信息*/ SELECT * FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID; /*5張表聯查 查出學生姓名 他所在的班級 所選的課程 以及該學生的身份證號*/ SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID; /*5張表聯查 查出學生ID爲2的學生姓名 他所在的班級 所選的課程 以及該學生的身份證號*/ SELECT S.STU_NAME,CI.CLASS_NAME,C.COURSE_NAME,SC.CARD_NUM FROM STUDENTS S RIGHT JOIN COURSE_STU CS ON S.STU_ID = CS.STU_ID LEFT JOIN COURSE C ON C.COURSE_ID = CS.COURSE_ID LEFT JOIN CLASS_INFO CI ON CI.C_ID=S.C_ID LEFT JOIN STU_CARD SC ON SC.STU_ID = S.STU_ID WHERE S.STU_ID=2;