mysql如何用sql語句建立學(xué)生課程數(shù)據(jù)庫基本表
首先要準(zhǔn)備三個(gè)表Student學(xué)生表、Course課程表、SC選課表
| 學(xué)生表 | 學(xué)號(hào) | 姓名 | 年齡 | 性別 | 院系 |
| Student | Sno | Sname | Sage | Ssex | Sdept |
| 課程表 | 課程號(hào) | 課程名 | 先行課 | 學(xué)分 |
| Course | Cno | Cname | Cpno | Ccredit |
| 選課表 | 學(xué)號(hào) | 課程號(hào) | 成績(jī) |
| SC | Sno | Cno | Grade |
sql語句 創(chuàng)建表
-- 刪除表 DROP TABLE IF EXISTS Student; -- 創(chuàng)建表 CREATE TABLE Student( Sno CHAR(9) PRIMARY KEY,-- 學(xué)號(hào) 主鍵 Sname VARCHAR(20) NOT NULL,-- 姓名 非空且唯一 Sage INT NOT NULL,-- 年齡 Ssex VARCHAR(5) NOT NULL,-- 性別 Sdept VARCHAR(10) NOT NULL -- 所在系 )charset=utf8;
-- 刪除表 DROP TABLE IF EXISTS Course; -- 創(chuàng)建表 CREATE TABLE Course( Cno CHAR(5) PRIMARY KEY,-- 課程號(hào) 主鍵 Cname VARCHAR(20) NOT NULL ,-- 課程名 非空 Cpno VARCHAR(20) NOT NULL,-- 先行課 Ccredit Double(5,2) NOT NULL-- 學(xué)分 )charset=utf8;
-- 刪除表 DROP TABLE IF EXISTS SC; -- 創(chuàng)建表 CREATE TABLE SC( Sno CHAR(9),-- 學(xué)號(hào) 主鍵 Cno CHAR(5),-- 課程號(hào) 主鍵 Grade INT NOT NULL, -- 成績(jī) foreign key(Sno) references Student(Sno), foreign key(Cno) references Course(Cno) )charset=utf8;
注意創(chuàng)建表的時(shí)候要注意它的字段名,類型,長(zhǎng)度,約束條件,取值范圍要合適,大小寫符號(hào)要正確,中文逗號(hào),分號(hào)和英文的要注意區(qū)分,sql語句有時(shí)運(yùn)行不起來,可能就在某個(gè)標(biāo)點(diǎn)符號(hào)寫漏或者寫錯(cuò)
這里Sno 和 Cno 分別是學(xué)生表和課程表的主鍵,但同時(shí)又是SC的外鍵,這里要寫外鍵約束
插入數(shù)據(jù)
INSERT INTO Student
(Sno,Sname,Sage,Ssex,Sdept) VALUES
('20211127','殷郊',22,'男','數(shù)學(xué)系'),
('20211128','姬發(fā)',20,'男','農(nóng)業(yè)系'),
('20211129','蘇妲己',18,'女','外語系'),
('20211130','崇應(yīng)彪',23,'男','體育系')INSERT INTO Course
(Cno,Cname,Cpno,Ccredit) VALUES
('1001','數(shù)據(jù)庫原理及應(yīng)用','數(shù)據(jù)結(jié)構(gòu)',2),
('2002','LINUX操作系統(tǒng)與程序設(shè)計(jì)','操作系統(tǒng)',4),
('3003','離散數(shù)學(xué)','高等數(shù)學(xué)',2),
('4004','Java程序設(shè)計(jì)語言','c語言和c++語言',2),
('5005','網(wǎng)絡(luò)安全','計(jì)算機(jī)網(wǎng)絡(luò)',4)INSERT INTO SC
(Sno,cno,Grade) VALUES
('20211127','1001',98),
('20211127','2002',96),
('20211127','3003',95),
('20211127','4004',90),
('20211127','5005',93),
('20211128','1001',98),
('20211128','2002',96),
('20211128','3003',95),
('20211128','4004',90),
('20211128','5005',93),
('20211129','1001',98),
('20211129','2002',96),
('20211129','3003',95),
('20211129','4004',90),
('20211129','5005',93),
('20211130','1001',98),
('20211130','2002',96),
('20211130','3003',95),
('20211130','4004',90),
('20211130','5005',93)
查詢數(shù)據(jù)表
-- 查詢表所有 select * from Student; select * from Course; select * from SC;
結(jié)果



還可以多表查詢
-- 多表查詢, -- 查詢表 Student和SC SELECT SC.Sno AS 學(xué)生學(xué)號(hào) ,Student.Sname AS 學(xué)生姓名,Student.Ssex AS 學(xué)生性別 Student.Sdept AS 學(xué)生院系,SC.Cno AS 選擇課程號(hào),SC.Grade AS 課程成績(jī) FROM SC,Student WHERE SC.Sno=Student.Sno; -- 查詢表 course 和 SC SELECT SC.Sno AS 學(xué)生學(xué)號(hào) ,SC.Cno AS 選擇課程號(hào),Course.Cname AS 學(xué)生課程名, Course.cpno AS 學(xué)生先行課, Course.Ccredit AS 課程學(xué)分, SC.Grade AS 課程成績(jī) FROM SC,Course WHERE SC.Cno=Course.Cno; -- 查詢表 course 和 SC 和 Student SELECT SC.Sno AS 學(xué)生學(xué)號(hào) ,Student.Sname AS 學(xué)生姓名,Student.Ssex AS 學(xué)生性別, Student.Sdept AS 學(xué)生院系, SC.Cno AS 選擇課程號(hào),Course.Cname AS 學(xué)生課程名, Course.cpno AS 學(xué)生先行課, Course.Ccredit AS 課程學(xué)分,SC.Grade AS 課程成績(jī) FROM SC,Student,Course WHERE SC.Sno=Student.Sno AND SC.Cno=Course.Cno AND SC.Sno= 20211127;
這里,感興趣的自己去試一試吧,
修改數(shù)據(jù)表(單個(gè)示例)
? -- 修改語句 單個(gè)示例 update Student set Sname='姜子牙' where Sno='20211127'; -- 刪除語句,單個(gè)示例 -- 這里刪除不了是因?yàn)橥怄I約束的問題 delete from Student where Sno='20211127';?
最后提醒
如果最后操作運(yùn)行時(shí)出錯(cuò),可能是SC表設(shè)置了外鍵約束的問題,

它可能報(bào)這種錯(cuò)誤,原因是想要?jiǎng)h除的數(shù)據(jù)和表與其他的數(shù)據(jù)或表存在主外鍵關(guān)系,MYSQL規(guī)定
為了維護(hù)表結(jié)構(gòu)的穩(wěn)定,禁止執(zhí)行該操作,即外鍵約束失敗,解決方法,將帶有外鍵約束的表刪掉,,然后重新執(zhí)行其他數(shù)據(jù)表即可,亦或者解除外鍵關(guān)聯(lián),然后執(zhí)行增刪改查操作,然后重新建立外鍵關(guān)聯(lián)
總結(jié)
到此這篇關(guān)于mysql如何用sql語句建立學(xué)生課程數(shù)據(jù)庫基本表的文章就介紹到這了,更多相關(guān)sql語句建立學(xué)生課程基本表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Navicat查詢到的數(shù)據(jù)不能修改問題
文章主要討論了在Navicat中查詢到的數(shù)據(jù)不能修改的幾種可能原因,包括表是只讀、權(quán)限不夠、表沒有設(shè)置主鍵以及使用了GROUP BY查詢導(dǎo)致的數(shù)據(jù)不是原來表里的數(shù)據(jù)2025-11-11
MySQL和Elasticsearch數(shù)據(jù)同步方案詳解
在現(xiàn)代電商系統(tǒng)中,MySQL 作為關(guān)系型數(shù)據(jù)庫負(fù)責(zé)數(shù)據(jù)的持久化存儲(chǔ),而 Elasticsearch 則作為搜索引擎提供高效的全文檢索能力,本文就來詳細(xì)的介紹一下MySQL和Elasticsearch數(shù)據(jù)同步方案,感興趣的可以了解一下2025-10-10
Mysql的Binlog數(shù)據(jù)恢復(fù):不小心刪除數(shù)據(jù)庫詳解
這篇文章主要介紹了Mysql的Binlog數(shù)據(jù)恢復(fù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
關(guān)于Mysql子查詢的三個(gè)應(yīng)用場(chǎng)景
這篇文章主要介紹了關(guān)于Mysql子查詢的三個(gè)應(yīng)用場(chǎng)景,子查詢是在一個(gè)完整的查詢語句中,嵌套不同功能的小查詢,從而完成復(fù)雜查詢的一種編寫形式,需要的朋友可以參考下2023-07-07
Navicat for MySQL 11注冊(cè)碼\激活碼匯總
Navicat for MySQL注冊(cè)碼用來激活 Navicat for MySQL 軟件,只要擁有 Navicat 注冊(cè)碼就能激活相應(yīng)的 Navicat 產(chǎn)品。這篇文章主要介紹了Navicat for MySQL 11注冊(cè)碼\激活碼匯總,需要的朋友可以參考下2020-11-11
mysqld_multi在Linux服務(wù)器上運(yùn)行多個(gè)MySQL實(shí)例
在Linux系統(tǒng)上使用mysqld_multi來啟動(dòng)和管理多個(gè)MySQL實(shí)例是一種常見的做法,這種方式允許你在同一臺(tái)機(jī)器上運(yùn)行多個(gè)MySQL服務(wù),每個(gè)服務(wù)可以有不同的配置和數(shù)據(jù)目錄,這篇文章展示如何設(shè)置和使用mysqld_multi來啟動(dòng)多個(gè)MySQL實(shí)例2025-02-02

