mysql、SQL ステートメントを使用して学生コース データベースの基本テーブルを作成する

まず、学生テーブル、コーステーブル、SCコース選択テーブルの3つのテーブルを用意します。

学生テーブル 学生証 名前 性別 部門
学生 スノ 離陸します セージ セックス スデプト
時間割 コース番号 コース名 予習 クレジット
コース Cno 名前 CPNO と彼は信じている
コース選択表 学生証 コース番号 スコア
SC スノ Cno 学年

SQLステートメントはテーブルを作成します

-- 删除表
DROP TABLE IF EXISTS Student;
-- 创建表
CREATE TABLE Student(
Sno CHAR(9) PRIMARY KEY,-- 学号 主键
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;
-- 创建表
CREATE TABLE Course(
Cno CHAR(5) PRIMARY KEY,-- 课程号 主键
Cname VARCHAR(20) NOT NULL ,-- 课程名 非空
Cpno VARCHAR(20)  NOT NULL,-- 先行课
Ccredit Double(5,2) NOT NULL-- 学分
)charset=utf8;
-- 删除表
DROP TABLE IF EXISTS SC;
-- 创建表
CREATE TABLE SC(
Sno CHAR(9),-- 学号 主键
Cno CHAR(5),-- 课程号 主键
Grade INT NOT NULL, -- 成绩
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
)charset=utf8;

テーブルを作成するときは、そのフィールド名、タイプ、長さ、制約、および値の範囲に注意する必要があります。大文字と小文字の記号が正しい必要があります。中国語のカンマ、セミコロン、および英語を区別する必要があります。場合によっては SQL ステートメントも必要です。実行できません。句読点を見逃したか、書き間違えたのかもしれません。

ここで、Sno と Cno はそれぞれ Student テーブルと Course テーブルの主キーですが、SC の外部キーでもあります。ここに外部キー制約を記述する必要があります。

データの挿入

INSERT INTO Student
(Sno,Sname,Sage,Ssex,Sdept) VALUES
('20211127','殷郊',22,'男','数学系'),
('20211128','姬发',20,'男','农业系'),
('20211129','苏妲己',18,'女','外语系'),
('20211130','崇应彪',23,'男','体育系')


INSERT INTO Course
(Cno,Cname,Cpno,Ccredit) VALUES
('1001','数据库原理及应用','数据结构',2),
('2002','LINUX操作系统与程序设计','操作系统',4),
('3003','离散数学','高等数学',2),
('4004','Java程序设计语言','c语言和c++语言',2),
('5005','网络安全','计算机网络',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)

クエリデータテーブル

-- 查询表所有
select * from Student;
select * from Course;
select * from SC;

結果

 

 

 複数のテーブルをクエリすることもできます

-- 多表查询,
-- 查询表 Student和SC
SELECT SC.Sno AS 学生学号 ,Student.Sname AS 学生姓名,Student.Ssex AS 学生性别 Student.Sdept AS 学生院系,SC.Cno AS 选择课程号,SC.Grade AS 课程成绩
FROM SC,Student
WHERE SC.Sno=Student.Sno;
-- 查询表 course 和 SC
SELECT SC.Sno AS 学生学号 ,SC.Cno AS 选择课程号,Course.Cname AS 学生课程名, Course.cpno AS 学生先行课, Course.Ccredit AS 课程学分, SC.Grade AS 课程成绩
FROM SC,Course
WHERE SC.Cno=Course.Cno;
-- 查询表 course 和 SC 和 Student
SELECT SC.Sno AS 学生学号 ,Student.Sname AS 学生姓名,Student.Ssex AS 学生性别, Student.Sdept AS 学生院系,
SC.Cno AS 选择课程号,Course.Cname AS 学生课程名, Course.cpno AS 学生先行课, Course.Ccredit AS 课程学分,SC.Grade AS 课程成绩
FROM SC,Student,Course
WHERE SC.Sno=Student.Sno AND SC.Cno=Course.Cno AND SC.Sno= 20211127;

ここで、興味のある方はぜひ試してみてください。

データテーブルの変更 (単一の例)


-- 修改语句 单个示例
update Student set Sname='姜子牙' where Sno='20211127';
-- 删除语句,单个示例
-- 这里删除不了是因为外键约束的问题
delete from Student where Sno='20211127';

最終的なリマインダ

最終操作中にエラーが発生した場合は、SC テーブルに設定された外部キー制約が原因である可能性があります。

削除したいデータとテーブルが他のデータまたはテーブルと主キーおよび外部キー関係を持っているために、 このエラーが報告されることがあります。MYSQL は規定しています。

テーブル構造の安定性を維持するために、この操作は禁止されています。つまり、外部キー制約が失敗します。解決するには、外部キー制約のあるテーブルを削除し、他のデータ テーブルを再実行するか、外部キー制約をキャンセルします。外部キーの関連付けを行った後、追加、削除、変更、およびクエリの操作を実行してから、外部キーの関連付けを再確立します。

おすすめ

転載: blog.csdn.net/yangkeOK/article/details/132509470