먼저 학생 테이블, 코스 테이블, SC 코스 선택 테이블의 세 가지 테이블을 준비합니다.
학생 테이블 | 학생 아이디 | 이름 | 나이 | 성별 | 부서 |
학생 | 스노 | 이륙한다 | 세이지 | 섹스 | 스뎁트 |
수업 시간표 | 강좌번호 | 코스 이름 | 예비 수업 | 신용 거래 |
강의 | 크노 | C이름 | CPNO | 그는 믿는다 |
코스 선택 테이블 | 학생 아이디 | 강좌번호 | 점수 |
SC | 스노 | 크노 | 등급 |
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에서는 규정합니다.
테이블 구조의 안정성을 유지하기 위해 이 작업을 금지합니다, 즉 외래 키 제약 조건이 실패하므로 해결 방법은 외래 키 제약 조건이 있는 테이블을 삭제한 후 다른 데이터 테이블을 다시 실행하거나 취소하는 것입니다. 외래 키 연결을 클릭한 다음 추가, 삭제, 수정 및 쿼리 작업을 수행한 다음 외래 키 연결을 다시 설정합니다.