数据库实例操作

各种实例

–创建数据库

create database StudentCourse

–1.建表

–建立学生表
CREATE TABLE Student(
Sno CHAR(9) PRIMARY KEY, /列级完整性约束性条件,Sno是主码/
Sname CHAR(20)UNIQUE, /Sname取唯一值/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
–建立课程表
CREATE TABLE Course(
Cno CHAR(4) PRIMARY KEY, /列级完整性约束性条件,Cno是主码/
Cname CHAR(40) NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES COurse(Cno)
/表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno/
);
–建立学生选课表
CREATE TABLE SC(
Sno char(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno),
/主码有两个属性构成;表级完整性约束条件,Sno,Cno是外码,各有参照表/
);

–2.修改基本表

ALTER TABLE Student ADD S_entrance DATE;

ALTER TABLE Student ALTER COLUMN Sage INT;

ALTER TABLE Course ADD UNIQUE(Cname);

–3.删除基本表

DROP TABLE Student;

–4.建立索引

CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

ALTER INDEX SCno RENAME TO SCSno;

–5.删除索引

DROP INDEX Stusname;

–6.数据查询

SELECT Sno,Sname
FROM Student;

SELECT Sno,Sname,Sdept
FROM Student;

SELECT *
FROM Student;

SELECT Sname,2014-Sage
FROM Student;

SELECT Sname,‘Year of Birth:’,2014-Sage,LOWER(Sdept)
FROM Student;

SELECT Sno
FROM SC;

SELECT Sname
FROM Student
WHERE Sdept=‘CS’;

SELECT Sname,Sage
FROM Student
WHERE Sage<20;

SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;

SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;

SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;

SELECT Sname,Ssex
FROM Student
WHERE Sdept IN (‘CS’,‘MA’,‘IS’);

SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN (‘CS’,‘MA’,‘IS’);

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE ‘刘%’;

SELECT Sname
FROM Student
WHERE Sname LIKE ‘欧阳_’;

SELECT Sname,Sno
FROM Student
WHERE Sname LIKE ‘_阳%’;

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname NOT LIKE ‘刘%’;

SELECT Sno,Cno
FROM SC
WHERE Grade IS NUll;

SELECT Sno,Cno
FROM SC
WHERE Grade IS NOT NUll;

SELECT Sname
FROM Student
WHERE Sdept=‘CS’ AND Sage<20;

SELECT Sname,Ssex
FROM Student
WHERE Sdept=‘CS’ OR Sdept=‘MA’ OR Sdept=‘IS’;

SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;

–7.聚集函数

SELECT COUNT(*)
FROM Student;

SELECT COUNT(DISTINCT Sno)
FROM SC;

SELECT MAX(Grade)
FROM SC
WHERE Cno=‘1’;

SELECT SUM(Ccredit)
FROM SC,Course
WHERE Sno=‘201215121’ AND SC.Cno=Course.Cno;

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;

SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;

–8.连接查询(多个表连接)

SELECT Student.,SC.
FROM Student,SC
WHERE Student.Sno=SC.Sno;

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno;

–3.51
SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND /连接谓词/
SC.Cno=‘2’ AND SC.Grade>90;

–9.自身连接

SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;

–10.外连接

SELECT Student.Sno,Sname,Cname,Grade
FROM Student,Course,SC
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno;

SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
(SELECT Sdept
FROM Student
WHERE Sname=‘刘晨’);

SELECT Student.Sno,Sname
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND
SC.Cno=Course.Cno AND
Course.Cname=‘信息系统’;

SELECT Sno,Cno
FROM SC x
WHERE Grade>=(SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno);

SELECT Sname,Sage
FROM Student
WHERE Sage<ANY(SELECT Sage
FROM Student
WHERE Sdept=‘CS’)
AND Sdept<>‘CS’;

SELECT Sname,Sage
FROM Student
WHERE Sage<ALL(SELECT Sage
FROM Student
WHERE Sdept=‘CS’)
AND Sdept<>‘CS’;

SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE SNO =Student.Sno AND Cno=‘1’);

SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno =Student.Sno AND Cno=‘1’);

SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno=Course.Cno));

SELECT DISTINCT Sno
FROM SC SCX
WHERE NOT EXISTS
(SELECT *
FROM SC SCY
WHERE SCY.Sno=‘201215122’ AND
NOT EXISTS
(SELECT *
FROM SC SCZ
WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno));

–11.集合查询

SELECT *
FROM Student
WHERE Sdept=‘CS’
UNION
SELECT *
FROM Student
WHERE Sage<=19;

SELECT Sno
FROM SC
WHERE Cno=‘1’
UNION
SELECT Sno
FROM SC
WHERE Cno=‘2’;

SELECT *
FROM Student
WHERE Sdept=‘CS’
INTERSECT
SELECT *
FROM Student
WHERE Sage<=19;

SELECT Sno
FROM SC
WHERE Cno=‘1’
INTERSECT
SELECT Sno
FROM SC
WHERE Cno=‘2’;

–3.68
SELECT *
FROM Student
WHERE Sdept=‘CS’
EXCEPT
SELECT *
FROM Student
WHERE Sage<=19;

–基于派生表的查询

–1.插入数据

–数据更新

INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES(‘201215128’,‘张成明’,‘男’,‘IS’,18);

INSERT
INTO Student
VALUES(‘201215126’,‘张成明’,‘男’,18,‘IS’);

INSERT
INTO SC(Sno,Cno)
VALUES(‘201215128’,‘1’);

–插入子查询结果

CREATE TABLE Dept_age(
Sdept CHAR(15),
Avg_age SMALLINT);
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;

–2.修改数据

UPDATE Student
SET Sage=22
WHERE Sno=-‘201215121’;

UPDATE Student
SET Sage=Sage+1;

UPDATE SC
SET Grade=0
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept=‘CS’);

–3.删除数据

DELETE
FROM Student
WHERE Sno=‘201215128’;

DELETE
FROM SC;

DELETE
FROM SC
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept=‘CS’);

–4.空值处理

INSERT INTO SC(Sno,Cno,Grade)
VALUES(‘201215126’,‘1’,NULL);

UPDATE Student
SET Sdept=NULL
WHERE Sno=‘201215200’;

SELECT *
FROM Student
WHERE Sname IS NULL OR Ssex IS NULL OR Sage IS NULL OR Sdept IS NULL;

SELECt Sno
FROM SC
WHERE Grade<60 AND Cno=‘1’;

SELECT Sno
FROM SC
WHERE Grade<63 AND Cno=‘1’
UNION
SELECT Sno
FROM SC
WHERE Grade IS NULL AND Cno=‘1’;
–或者
SELECT Sno
FROM SC
WHERE Cno=‘1’ AND (Grade<60 OR Grade IS NULl);

视图

–1.建立视图

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept=‘IS’;

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept=‘IS’
WITH CHECK OPTION;

CREATE VIEW IS_S1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Sage
FROM Student,SC
WHERE Sdept='IS’AND
Student.Sno=SC.Sno AND
SC.Cno=‘1’;

CREATE VIEW IS_S2
AS
SELECT Sno,Sname,Grade
FROM IS_S1
WHERE Grade>=90;

CREATE VIEW BT_S(Sno,Sname,Sbirth)
AS
SELECT Sno,Sname,2014-Sage
FROM Student;

CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno;

CREATE VIEW F_Student(F_sno,name,sex,age,dept)
AS
SELECT *
FROM Student
WHERE Ssex=‘女’;

–2.删除视图

DROP VIEW BT_S;
DROP VIEW IS_S1;

–3.查询视图

SELECT Sno,Sage
FROM IS_Student
WHERE Sage<20;

SELECT IS_Student.Sno,Sname
FROM IS_Student,SC
WHERE IS_Student.Sno=SC.Sno AND SC.Cno=‘1’;

第一次用CSDN,不太熟练,也没用心,就这样吧。

发布了26 篇原创文章 · 获赞 3 · 访问量 241

猜你喜欢

转载自blog.csdn.net/qq_41898248/article/details/103551715