ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:25.53KB ,
资源ID:6088212      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6088212.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(32数据定义.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

32数据定义.docx

1、32数据定义3.2数据定义3.2.1 定义、删除与修改基本表一、 定义基本表格式:CREAT TABLE 表名(列名数据类型列级完整性约束条件 ,列名数据类型列级完整性约束条件 ,表级完整性约束条件;例1 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREAT TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, /*列级完整性约束条件,Sname CHAR(20) UNIQUE, Sno取值唯一,不许取空值*/Ssex CHAR(

2、1),Sage INT,Sdept CHAR(15);二、 修改基本表格式:ALTER TABLE 表名ADD新列名数据类型完整性约束DROPMODIFY ;例2 向Student表增加“入学时间”列,其数据类型为日期型。ALTER TABLE Student ADD Scome DATE;例3 将年龄的数据类型改为半字长整数。ALTER TABLE Student MODIFY Sage SMALLINT;例4 删除学生姓名必须取唯一值的约束。ALTER TABLE Student DROP UNIQUE(Sname);三、 删除基本表格式: DROP TABLE 例5 删除Student表

3、 DROP TABLE Student3.2.2 建立与删除索引一、 建立索引格式:CREATE UNIQUE CLUSTER INDEX ON ( )例6 CREATE TABLE UNIQUE INDEX Stusno ON Student (Sno); CREATE TABLE UNIQUE INDEX Coucno ON Course(Cno);CREATE TABLE UNIQUE INDEX Scno ON SC(Sno ASC,Cno DESC);二、 删除索引格式:DROP INDEX ;例7 DROP INDEX Stusno3.3 查询格式:SELECT ALLDISTIN

4、CT ,FROM ,WHEREGROUP BY HAVINGORDER BYASCDESC;学生-课程数据库中包括三个表学生表: Student(Sno,Sname,Ssex,Sage,Sdpt)课程表: Course(Cno,Cname,Cpno,Ccredit)选课表: SC(Sno,Cno,Grade)3.3.1单表查询一、 选择表中的若干列例1 查询全体学生的学号与姓名。SELECT Sno,SnameFROM Student;例2 查询全体学生的姓名、学号、所在系。SELECT Sname,Sno,SdeptFROM Student;例3 查询全体学生的详细记录。SELECT *FR

5、OM Student;例4 查询全体学生的姓名及出生年份。SELECT Sname,2001-Sage,FROM Student;Sname 2001-Sage李勇 1980刘晨 1981王敏 1982张立 1981例5 查询全体学生的姓名、出生年份、所在系(小写)。SELECT Sname, “Year of Birth:”, 2001-Sage, ISLOWER(Sdept)FROM Student; Sname “Year of Birth:” 2001-Sage ISLOWER(Sdept)李勇 Year of Birth: 1980 cs刘晨 Year of Birth: 1981

6、is王敏 Year of Birth: 1982 ma张立 Year of Birth: 1981 isSELECT Sname NAME, “Year of Birth:” BIRTH, 2001-Sage BIRTHDAY, ISLOWER(Sdept) DEPARTMENTFROM Student; Sname “Year of Birth:” 2001-Sage ISLOWER(Sdept)李勇 Year of Birth: 1980 cs刘晨 Year of Birth: 1981 is王敏 Year of Birth: 1982 ma张立 Year of Birth: 1981 i

7、s二、 选择表中的若干元组假设SC表中有下列数据Sno Cno Grade95001 1 9295001 2 8595001 3 8895002 2 9095002 3 80例6 查询选修了课程的学生学号。SELECT Sno FROM SC;结果为:Sno 95001 95001 95001 95002 95002 SELECT DIATINCT Sno FROM SC;结果为:Sno 95001 95002 * DISTINCT消除重复行*例7 查询计算机系全体学生的名单。SELECT SnameFROM StudentWHERE Sdept=CS;例8 查询所有年龄在20岁以下的学生姓名

8、及年龄。SELECT Sname,SageFROM StudentWHERE Sage=20;例9 查询考试成绩有不及格的学生的学号。SELECT DISTINCT Sno FROM CourseWHERE Grade60;例10 查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND23;例11 查询年龄不在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。SELECT Sname,Sdept,SageFROM StudentWHERE Sag

9、e NOT BETWEEN 20 AND23;例12 查询信息系(IS)、数学系(MA)和计算机系(CS)学生的姓名和性别。SELECT Sname,SsexFROM StudentWHERE Sdept IN (IN,MA,CS)例13 查询不是信息系(IS)、数学系(MA)和计算机系(CS)学生的姓名和性别。SELECT Sname,SsexFROM StudentWHERE Sdept NOT IN (IN,MA,CS)%代表任意长度的字符串。_代表任意单个字。例14 查询学号为95001的学生的详细情况。SELECT *FROM Student WHERE Sno LIKE 95001

10、等价于:SELECT *FROM Student WHERE Sno LIKE 95001例15 查询所有姓刘的学生的姓名、学号和性别。SELECT Sname,Sno,SsexFROM StudentWHERE Sname LIKE 刘%例16 查询姓“欧阳”且全名为三个汉字的学生的姓名。SELECT SnameFROM StudentWHERE Sname LIKE 欧阳_ _;例17 查询名字中第2个字为“阳”字的学生的姓名和学号。SELECT Sname,Sno FROM Student WHERE Sname LIKE _ _阳%;例18 查询所有不姓刘的学生的姓名。SELECT S

11、name,Sno,SsexFROM StudentWHERE Sname NOT LIKE 刘%例19 查询DB_Design课程的课程号和学分。SELECT Cno,CcreditFROM CourseWHERE Cname LIKE DB_Design ESCAPE 例20 查询以“DB_”开头,且倒数第3个字符为i的课程的详细情况。SELECT *FROM CourseWHERE Cname LIKE DB _ %_ _ ESCAPE ;例21 查询缺少成绩的学生的学号和相应的课程号。SELECL Sno, CnoFORM SCWHERE Grade IS NULL;或 SELECL S

12、no, CnoFORM SCWHERE Grade IS NULL;例22 查询所有有成绩的学生的学号和相应的课程号。SELECL Sno, CnoFORM SCWHERE Grade IS NOT NULL;例23 查询计算机系年龄在20岁以下的学生姓名。SELECT SnameFROM Student WHERE Sdept=CS AND Sage20;三、 对查询结果排序例24 查询选修了3号课程的学生的学号及成绩,查询结果按分数的降序排列。SELECT Sno,GradeFROM SCWHERE Cno=3ORDER BY Grade DESC;例25 查询全体学生情况,查询结果按所在

13、系的系号升序排列,同一系中的学生按年龄降序排列。SELECT *FROM Student ORDER BY Sdept,Sage DESC;四、 使用集函数COUNT (DISTINCTALL*) 统计元组个数COUNT(DISTINCTALL) 统计一列中值的个数SUM(DISTINCTALL) 计算一列值的总和(数值型)AVG(DISTINCTALL) 计算一列值的平均值(数值型)MAX(DISTINCTALL) 求一列值的最大值(数值型)MIN(DISTINCTALL) 求一列值的最小值(数值型)例26 查询学生总数。SELECT COUNT(*)FROM Student例27 查询选修

14、了课程的学生人数。SELECT COUNT(DISTINCT Sno)FROM SC例28 计算1号课程的学生平均成绩。SELECT AVG(Grade)FROM SCWHERE Cno=1;例29 查询选修1号课程的学生最高分数。SELECT MAX(Grade)FROM SCWHERE Cno=1;五、 对查询结果分组例30 求各个课程号及相应的选课人数。SELECT Cno,COUNT(Sno)FROM SCGROUP BY Cno;Cno COUNT(Sno)1 222 343 444 335 48例31 查询选修了3门以上课程的学生学号。SELECT Sno FROM SCGROUP

15、 BY SnoHAVING COUNT(*)3;3.3.2 连接查询例32 查询每个学生及其选修课程的情况。SELECT student.*,SC.*FROM Student,SCWHERE Student.Sno=SC.Sno;例33 查询每个学生及其选修课程的情况(自然连接)。SELECT student.Sno,Sname,Sage,Sdept,Cno,GradeFROM Student,SCWHERE Student.Sno=SC.Sno;例34 查询每门课的间接先修课(即先修课的先修课)。FIRST表(Course表)Cno Cname Cpno Ccredit 1 数据库 5 42

16、 数学 23 信息系统 1 44 操作系统 6 35 数据结构 7 46 数据处理 27 PASCAL语言 6 4SECOND表(Course表)Cno Cname Cpno Ccredit 1 数据库 5 42 数学 23 信息系统 1 44 操作系统 6 35 数据结构 7 46 数据处理 27 PASCAL语言 6 4SELECLE FIRST.Cno,SECOND.CpnoFROM Course FIRSE, Course SECONDWHERE FIRSE.Cpno=SECOND.Cno;结果为: Cno Cpno1 73 5外连接SELECT student.Sno,Sname,S

17、age,Sdept,Cno,GradeFROM Student,SCWHERE Student.Sno=SC.Sno(*);复合条件连接例35 查询选修2号课程且成绩在90分以上的所有学生。SELECT Student.Sno, SnameFROM Student, SCWHERE Student.Sno=SC.Sno AND SC.Cno=2 AND SC.Ggrade90;多表连接例36 查询每个学生的学号、姓名、选修的课程名及成绩。SELECE Student.Sno,Sname,Cname,GradeFROM Student,SC,CourseWHERE Student.Sno=SC.

18、Sno and SC.Cno=Course.Cno;3.3.3嵌套查询例37 查询与“刘晨”在同一个系学习的学生。SELECT Sno,Sname,SdeptFROM StudentWHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname=刘晨;当结果为单值时可以用=代替INSELECT Sno,Sname,SdeptFROM StudentWHERE Sdept = (SELECT Sdept FROM Student WHERE Sname=刘晨;用自然连接完成SELECT S1.Sno,S1.Sname,S1.SdeptFROM Stud

19、ent S1,Student S2WHERE S1.Sdept=S2.Sdept AND S2.Sname=刘晨;例38 查询选修了课程名为“信息系统”的学生学号和姓名。SELECT Sno,SnameFROM StudentWHERE Sno IN(SELECT SnoFROM SCWHERE Cno IN (SELECT Cno FROM Course WHERE Cname=信息系统);用连接查询SELECT Sno,SnameFROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.C

20、name=信息系统;带有ANY或ALL谓词的子查询 ANY 大于子查询结果中的某个值ALL 大于子查询结果中的所有值ANY 小于子查询结果中的某个值=ANY 大于等于子查询结果中的某个值=ALL 大于等于子查询结果中的所有值=ANY 小于等于子查询结果中的某个值=ALL 小于等于子查询结果中的所有值=ANY 等于子查询结果中的某个值=ALL 等于子查询结果中的所有值(无意义)!=(或)ANY 不等于子查询结果中的某个值!=(或)ALL 不等于子查询结果中的任何一个值例39 查询其他系中比信息系某一学生年龄小的学生姓名和年龄。SELECT Sname, Sage FROM Student WHE

21、RE SageANY(SELECT Sage FROM Student WHERE Sdept=IS AND SdeptIS用集函数实现SELECT Sname.SageFROM StudentWHERE Sage (SELECT MAX(Sage) FROM Student WHERE Sdept=IS) AND SdeptIS例40 查询其他系中比信息系所有学生年龄都小的学生姓名及年龄。SELECT Sname, Sage FROM StudentWHERE SageALL(SELECT Sage FROM Student WHERE Sdept=IS)AND SdeptIS用集函数实现S

22、ELECT Sname, Sage FROM StudentWHERE Sage(SELECT MIN(Sage) FROM Student WHERE Sdept=IS)AND SdeptIS带有EXISTS谓词的子查询例41 查询所有选修了1号课程的学生姓名。SELECT SnameFROM StudentWHERE EXISTS(SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=1);例42 查询没有选修1号课程的学生姓名。SELECT SnameFROM StudentWHERE NOT EXISTS(SELECT * FROM SC WHE

23、RE Sno=Student.Sno AND Cno=1);例43 查询选修了全部课程的学生姓名。SELECT SnameFROM StudentWHERE NOT EXISTS (SELECT * FROM Course WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno=Student.SnoAND Cno=Course.Cno);例44 查询至少选修了学生95002选修的全部课程的学号号码。SELECT DISTINCT SnoFROM SC SCXWHERE NOT EXISTS (SELECT * FROM SC SCY WHERE SCY.Sn

24、o=95002 AND NOT EXISTS (SELECT * FROM SC SCZ WHERE SCZ.Cno=SCY.Cno3.3.4 集合查询例45 查询计算机系的学生及年龄不大于19岁的学生。SELECT *FROM StudentWHERE Sdept=CSUNIONSELECT *FROM StudentWHERE Sage=19;例46 查询选修了课程1或选修了课程2的学生。*查询选修课程1的学生集合与选修课程2的学生集合的并集。SELECT SnoFROM SCWHERE Cno=1UNIONSELECT SnoFROM SCWHERE Cno=2;例47 查询计算机系的学

25、生与年龄不大于19岁的学生的交集。*查询计算机系中年龄不大于19岁的学生。SELECT *FROM StudentWHERE Sdept=CS AND Sage19;3.4 数据更新SQL中数据更新包括插入数据、修改数据和删除数据三条语句。3.4.1 插入数据格式1: INSERTINTO表名(属性列1,属性列2)VALUE (常量1,常量2)例1 将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。INSERTINTO StudentVALUE (95020, 陈冬, 男, IS, 18)例2 插入一条选课记录(95020, 1)。

26、INSERTINTO SC(Sno,Cno)VALUE (95020, 1)新插入记录在Grade列上取空值。格式2: INSERTINTO表名(属性列1,属性列2) 子查询;例3 对每个系,求学生的平均年龄,并把结果存入数据库。CREAT TABLE Deptage (Sdept CHAR(15) Avgage SMALINT);INSERTINTO Deptage(Sdept,Avgage)SELECT Sdept, AVG(Sage)FROM StudentGROUP BY Sdept;3.4.2 修改数据格式:UPDATE 表名SET列名=表达式,列名=表达式WHERE 条件;例4 将

27、学生95001的年龄改为22岁。UPDATE Student SET Sage=22WHERE Sno=95001例5 将所有学生的年龄增加1岁。UPDATE Student SET Sage=Sage+1;例6 将计算机系全体学生的成绩置零。UPDATE SCSET Grade=0WHERE CS= (SELECT Sdept FROM Student WHERE Student,Sno=SC.Sno);3.4.3 删除数据格式:DELETEFROM 表名WHERE条件;例7 删除学号为95019的学生记录。DELETEFROM StudentWHERE Sno=95019;例8 删除所有的学生选课记录。DELETE FROM SC例9 删除计算机系所有学生的选课记录。DELETEFROM SCWHERE CS=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno);更新操作与数据库的一致性删除95019学生同时删除95019学生的选课记录。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1