您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 专升本数据库练习题及答案
一.关系代数运算1.选择σ(1)查询年龄小于20岁的学生σsage20(student)(2)查询学号为201215122的学生σsno=201215122(student)2.投影(1)查询学生姓名,和所在系same,sdept(student)(2)查询选修了2号课程的学生学号sno(σcno=‘2’2(student))SQL语句学生-课程数据库学生表:学生(学号,姓名,性别,年龄,所在系)课程表:课程(课程号,课程名,先行课,学分)学生选课表:选课(学号,课程号,成绩)二.创建数据库SQL1.创建数据库Createdatabase数据库名On(name=逻辑文件名,Filename=’物理文件名’,Size=初始文件大小,Maxsize=最大文件大小,Filegrowth=文件自动增量)Logon(name=逻辑文件名,Filename=‘物理文件名’,Size=初始文件大小,Maxsize=最大文件大小,Filegrowth=文件自动增量)例创建‘教务管理数据库’Createdatabase教务管理数据库On(name=教务管理_dat,Filename=‘E:\SQL\教务管理_dat.mdf’,Size=2,Filegrowth=1)Logon(name=教务管理.log,Filename=‘E:\SQL\教务管理_log.ldf’,Size=5M,Filegrowth=10%)1.查看数据库属性1)使用sp_helpdb查看数据库信息:sp_helpdb[数据库名](2)使用sp_databases查看可使用的数据库信息:sp_databases(显示所有可以使用的数据库名称和大小)(3)使用sp_helpfile查看数据库文件信息sp_helpfile[文件名]1.设置数据库选项Alterdatabase数据库名Set选项例设置教务管理数据库自动收缩Alterdatabase教务管理数据库Setauto_shrinkon(自动收缩)1.修改数据库大小Alterdatabase数据库名Addfile增加数据文件Addlogfile增加日志文件Removefile删除文件Modifyfile修改文件()例1.修改教务管理数据库,增加数据文件jwgl_dat1Alterdatabase教务管理数据库Addfile(Name=jwgl_dat1,Filename=‘E:\SQL\jwgl_dat1.ndf’,Size=2MB,Filegrowth=1MB)2.修改教务管理数据库Alterdatabase教务管理数据库Modifyfile(Name=jwgl_dat1,Size=5MB)2.删除教务管理数据库中次要数据文件jwgl_dat1Alterdatabase教务管理数据库Removefilejwgl_dat11.数据库更名1)更改数据库名Alterdatabase数据库名Modifyname=新数据库名例将数据库test更名为mytestAlterdatabasetestModifyname=mytest1)更改数据库的逻辑文件名Alterdatabase数据库名Modifyfile(Name=逻辑文件名,Newname=新逻辑文件名)例将数据库逻辑文件test更名为mytestAlterdatabasemytestModifyfile(Name=test,Newname=mytest)GoAlterdatabasemytestModifyfile(Name=test_log,Newname=mytest_log)1)更改数据库的物理文件名Alterdatabase数据库名Modifyfile(Name=逻辑文件名,Filename=‘新路径\操作系统文件名’)例将数据库物理文件test更名为mytestAlterdatabasemytestModifyfile(Name=mytest,Filename=‘E:\sql\mytest.mdf’)GOAlterdatabasemytestModifyfile(Name=mytest_log,Filename=‘E:\sql\mytest_log.ldf’)1.删除数据库Dropdatabase数据库名例删除数据库名为test和数据库salesDropdatabasetest,sales1.数据库分离Sp_detach_db数据库名1.数据库附加Createdatabase数据库名On(Filename=‘主文件的物理文件名’)Forattach三.基本表操作1.创建表Createtable表名()例创建一个学生表Createtable学生表(学号char(6)primarykey,姓名char(20)unique,性别char(2),年龄smallint,所在系char(20))1.修改表Altertable表名Add列名数据类型()//增加列(altercolumn列名数据类型()//对原有的基础上修改列)(dropcolumn列名//对原有的基础上删除列,可一次删除多列)例1.添加一新列电子邮箱char型长度20Altertable学生表Add电子邮箱char(20)例2.修改学生表列电子邮箱数据类型长度为22Altertable学生表altercolumn电子邮箱varchar(22)例3.删除学生表的电子邮箱列Altertable学生表dropcolumn电子邮箱3.删除表Droptable表名例删除学生表Droptable学生表四.数据更新1.插入数据InsertInto表名()Values值()例1插入一行数据到学生表的学生InsertInto学生表(学号,姓名,性别,年龄,所在系)Values(‘201215126’,‘张成民’,‘男’,18,‘计算机系’)1.修改数据Update表名Set列名=表达式Where条件1)修改某元祖的值例将学生201215121的年龄改为22Update学生表Set年龄=22Where学号=‘201215121‘1)修改多个元祖的值例将所有学生年龄增加一岁Update学生表Set年龄=年龄+11)带子查询的修改语句例将计算机科学系全体学生成绩置零Update选课表Set成绩=0Where学号in(select学号From学生表Where所在系=‘计算机科学系’)1)修改表名Sp_rename旧对象名,新对象名例课程表更名为课程信息表Sp_rename课程表,课程信息表3.删除数据Deletefrom表名Where条件例将课程信息表中c程序设计课程信息删除DeleteFrom课程信息表Where课程名=‘c程序设计’五.使用约束1.非空约束(NOTNULL)例创建一个学生表使姓名,性别为非空约束学号为主键Createtable学生表(学号char(6)primarykey,姓名char(20)NOTNULL,性别char(2)NOTNULL,年龄smallint,所在系char(20))1.唯一约束(UNIQUE)例创建一个学生表使姓名,性别为唯一约束学号为主键Createtable学生表(学号char(6)primarykey,姓名char(20)UNIQUE,性别char(2)UNIQUE,年龄smallint,所在系char(20))1.Check约束(检查列值是否满足一个条件表达式)1.完整性约束命令子句Constraint完整性约束条件名(包括非空主键唯一外键check约束等)约束条件例1创建一个学生表使性别只允许为‘男’或‘女’,年龄在20到30之间Createtable学生表(学号char(6)primarykey,姓名char(20)UNIQUE,性别char(2)CHECK((性别=‘男’)or(性别=‘女’)),年龄smallintCHECK(年龄between20and30),所在系char(20))2利用T-SQL命令设置课程表中的考核方式只能取值‘考试’或‘考查’,学分的值为1-6之间Altertable课程表withcheckAddconstraintCK_课程表_1check(考核方式in(‘考查’,‘考试’))Altertable课程表withnocheckAddconstraintCK_课程表_2check(学分between1and6)1.主键约束(PRIMARYKEY)例创建一个学生表使姓名,性别为唯一约束学号为主键Createtable学生表(学号char(6)primarykey,(在列定义后设置主键)姓名char(20)UNIQUE,性别char(2)UNIQUE,年龄smallint,所在系char(20))1.外键约束(FOREIGNKEY)Constraint约束名FOREIGNKEY(列名)Reference被引用表(列名)[ondeletecascade(级联删除)|onupdatecascade(级联更新)]例创建选课表设置选课表的课程号为外键引用课程表课程号Createtable选课表(学号char(6)primarykey,课程号char(11)Reference课程表(课程号)onupdatecascade,成绩numeric(5,1))7.默认约束(DEFAULT)Constraint约束名DEFAULT常量表达式可在创建表中数据类型后直接加例修改课程表设置考核方式默认值为‘考试’Altertable课程表Addconstraintdf_课程表_考核DEFAULT‘考试’)for考核方式六.数据查询1.单表查询1)选择列查询例查询全体学生姓名学号Select姓名,学号From学生表1)查询全部列例查询全体学生姓名学号Select*From学生表1)查询经过计算的值例查询全体学生姓名及出生年份Select姓名,2017-年龄From学生表1)消除取值重复的行(distinct)例查询选修了课程的学生学号结果取消重复行Selectdistinct学号From学生表1)查询满足条件的元祖(where子句)比较大小(=等)例查询选修了课程为‘计算机’的学生学号结果取消重复行Selectdistinct学号From学生表Where课程=‘计算机’确定查找范围(betweenand)例查询成绩为80-90的学生学号结果取消重复行Selectdistinct学号From选课表Where成绩between80and90确定集合(in)例查询成绩为80,90,100的学生学号结果取消重复行Selectdistinct学号From选课表Where成绩in(80,90,100)字符匹配(like)%:任意长度的字符串_(下划线):任意单个字符例1查询所有姓刘的学生姓名学号结果取消重复行Selectdistinct姓名,学号From学生表Where姓名like‘刘%’2查询名字中第二个字是阳学生姓名学号结果取消重复行Selectdistinct姓名,学号From学生表Where姓名like‘_阳%’空值查询(isnull/notnull)例查询成绩为空的中第二个字是阳学生姓名学号结果取消重复行Selectdistinct姓名,学号From学生表Where姓名like‘_阳%’多重条件查询(andorin)例查询成绩为80以上的女同学的姓名学号结果取消重复行Selectdistinct姓名,学号From学生表,选课表Where学生表.学号=选课表.学号And成绩=80AND性别=‘女’6)设置字段别名(as)表达式as别名或字段别名=表达式例查询学生姓名性别年龄Select姓名as学生姓名,性别,datediff(year,出生日期,getdate())as年龄From学生表或Select学生姓名=姓名,性别,年龄=datediff(year,出生日期,getdate())From学生表2.Orderby子句(对查询结果默认升序(asc)降序(desc))例查询选修了3号课程的学生学号成绩结果按分数降序排列Select成绩,学号From选课表Wh
本文标题:专升本数据库练习题及答案
链接地址:https://www.777doc.com/doc-5665355 .html