《无线自组织网络开发与设计综合实训项目》SQL语句部分(补充内容)
1-实验-常用SQL语句的使用
实验 常用SQL语句的使用【实验目的】1.熟悉掌握在Access中创建数据库和数据表的方法;2.熟悉掌握select语句、delete语句、insert语句、update语句的使用方法。
【实验内容】1.在Access中创建数据库开始→所有程序→Microsoft Office→Microsoft Office Access 2003,启动Access。
在右边“新建文件”窗格中,单击“空数据库”标签,打开“文件新建数据库”窗口,文件保存到“D:\学生学号”文件夹中,数据库文件名:address.mdb。
2.在address.mdb数据库中创建表tbAddress在表对象中,双击“使用设计器创建表”,打开表设计视图,创建表tbAddress结构如下图所示。
3.在表tbAddress中录入数据在表对象中,双击“tbAddress”表,打开表视图,录入tbAddress表数据如下图所示。
14.对表tbAddress完成以下SQL常用语句的操作在查询对象中,双击“在设计器视图中创建查询”,在打开的“显示表”对话框中,直接单击“关闭”按钮,在主窗口中,视图→SQL视图,打开“SQL视图”窗口,在其中输入以下SQL语句,单击“运行”按钮牛,即可查看运行结果。
①select语句的使用②insert语句的使用在tbAddress表中增加一条完整的记录(记录内容如下)Insert Into tbAddress(strName, strSex,intAge,strTel,strEmail,strIntro,dtmSubmit) Values("萌萌","女",21,"6112211"," mm@","金融系同学",#2008-8-8#)在tbAddress表中增加一条关于本人的完整的记录③delete语句使用删除自动编号字段ID等于1的用户Delete From tbAddress Where ID=1删除strName为"胡鹏"的用户Delete From tbAddress Where strName="胡鹏"④update语句使用更新strName为“萌萌”的用户的电话为"8282999",年龄为22。
sql课程设计项目
sql课程设计项目一、教学目标本课程旨在通过学习SQL语言,使学生掌握数据库的基本操作,能够使用SQL 语言进行数据的查询、更新、删除和插入操作,培养学生解决实际问题的能力。
具体的教学目标如下:1.理解数据库的基本概念和原理。
2.掌握SQL语言的基本语法和操作。
3.了解数据库的设计和优化方法。
4.能够使用SQL语言进行数据的查询、更新、删除和插入操作。
5.能够设计和优化数据库的结构。
6.能够解决实际问题,应用SQL语言进行数据库操作。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。
2.培养学生的创新思维和解决问题的能力。
3.培养学生的自主学习和持续学习的意识。
二、教学内容本课程的教学内容主要包括SQL语言的基本概念、语法和操作。
具体的教学大纲如下:1.数据库的基本概念和原理:介绍数据库的定义、特点和应用场景,理解数据库管理系统的作用和功能。
2.SQL语言的基本语法:学习SQL语言的基本语法结构,包括数据类型、运算符、条件表达式等。
3.数据的查询操作:学习使用SELECT语句进行数据的查询,掌握常用的查询条件和排序方法。
4.数据的更新操作:学习使用UPDATE语句进行数据的更新,掌握更新条件和更新规则。
5.数据的删除操作:学习使用DELETE语句进行数据的删除,掌握删除条件和删除规则。
6.数据的插入操作:学习使用INSERT语句进行数据的插入,掌握插入数据的方法和规则。
7.数据库的设计和优化:学习数据库的设计原则和方法,掌握数据库的优化技巧和策略。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解和演示,使学生掌握SQL语言的基本概念和语法。
2.案例分析法:通过分析和解决实际案例,培养学生的数据库设计和优化能力。
3.实验法:通过上机实验,使学生熟悉SQL语言的操作和应用。
4.小组讨论法:通过小组讨论和合作,培养学生的团队合作意识和沟通能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
实验六SQL语句[推荐5篇]
实验六SQL语句[推荐5篇]第一篇:实验六SQL语句实验六 SQL语句(续)一、实验目的(1)进一步掌握查询的概念和方法。
(2)熟练掌握单表查询的select语句。
(3)熟练掌握聚合函数的使用。
(4)熟练掌握连接查询方法(5)熟练掌握嵌套查询方法(6)掌握创建和管理视图的方法。
二、实验内容1、查询时改变列标题的显示:检索全体学生的学号、姓名、籍贯信息,并分别加上“学号”、“姓名”、“籍贯”的别名信息。
SQL语句:2、条件查询(1)查询选修了课程号为“002”,且成绩大于80的学生的学号。
SQL语句:(2)某些学生选修某门课程后没有参加考试,所以有选课记录,但没有考试成绩,查询缺少成绩的学生的学号和相应的课程号。
SQL语句:3、基于IN子句的数据查询从课程表中查询出“高数”、“C语言程序设计”的所有信息。
SQL语句:4、基于Like子句的查询从学生表中分别检索出姓张的所有同学的资料;检索名字的第二个字是“红”或“虹”的所有同学的资料。
SQL语句:5、查询经过计算的值。
查询全体学生的姓名及其出生年份,需为计算值取别名“出生年份”。
SQL语句:6、使用ORDER BY语句对查询的结果进行排序显示所有学生的基本信息,并按学生的年龄的降序排列。
SQL语句:7、使用Group子句进行查询汇总总分大于是150分的学生的学号及总成绩。
8、使用聚合函数计算“002”号课程的学生平均成绩、最高分、最低分。
SQL语句:9、查询与“张虹”在同一个班级的学生学号、姓名、所属系。
(嵌套查询)SQL语句:连接查询T-SQL语句:10、创建一个名为stuview的视图,能检索出每位选课学生的学号、姓名、课程名、总成绩。
SQL语句为:11、创建一个名为stuview1的视图,从数据库XSGL的student 表中查询出性别为“男”的所有学生的资料。
并在创建视图时使用with check option。
(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。
SQL实验(实验4至实验7的答案)
SQL实验实验41.用select 语句查询departments和salary表中的所有数据:select salary.*, departments.*from salary ,departments2、查询departments 中的departmentid:select departmentid from departmentsgo3、查询 salary中的 income,outcome:select income,outcome from salarygo4、查询employees表中的部门号,性别,要用distinct消除重复行:select distinct(departmentid), sexfrom employees5、查询月收入高于2000元的员工号码:select employeeid from salarywhere income>2000go6、查询1970年以后出生的员工的姓名和住址:select name,addressfrom employeeswhere birthday>1970go7、查询所有财务部的员工的号码和姓名:select employeeid ,namefrom employeeswhere departmentid in(select departmentid from departments where departmentname='财务部')go8、查询employees员工的姓名,住址和收入水平,2000元以下显示为低收入,2000~3000元显示为中等收入,3000元以上显示为高收入:select name,address,casewhen income-outcome<2000 then'低收入'when income-outcome>3000 then'高收入'else'中等收入'end as'收入等级'from employees,salarywhere employees.employeeid=salary.employeeidgo9、计算salary表中员工月收入的评价数:select avg(income)as'平均收入'from salary10、查找employees表中最大的员工号码:select max(employeeid)as'最大员工号码'from employees11、计算salary表中的所有员工的总支出:select sum(outcome)as'总支出'from salary12、查询财务部雇员的最高实际收入:select max(income-outcome)from salary ,employees,departmentswhere salary.employeeid=employees.employeeid andemployees.departmentid=departments.departmentid and departmentname='财务部'go13、查询财务部雇员的最低实际收入:select min(income-outcome)from salary ,employees,departmentswhere salary.employeeid=employees.employeeid andemployees.departmentid=departments.departmentid and departmentname='财务部'go14、找出所用地址中含有“中山”的雇员的号码及部门号:select employeeid ,departmentidfrom employeeswhere address like'%中山%'go15、查找员工号码中倒数第二个数字为0的员工的姓名,地址和学历:select education,address,namefrom employeeswhere employeeid like'%0_'go16、使用into字句,由表employees创建“男员工1”表,包括编号和姓名:select employeeid,nameinto男员工表from employeeswhere sex='1'go17、用子查询的方法查找收入在2500元以下的雇员的情况:select*from employeeswhere employeeid in(select employeeid from salary where income<2500)go18、用子查询的方法查找查找研发部比所有财务部雇员收入都高的雇员的姓名:SELECT Name FROM Employees WHERE EmployeeID IN(SELECT EmployeeID FROM SalaryWHERE EmployeeID IN(SELECT EmployeeId FROM EmployeesWHERE DepartmentID IN(SELECT DepartmentID FROM DepartmentsWHERE DepartmentName='研发部'))AND InCome>ALL(SELECT InCome FROM SalaryWHERE EmployeeID IN(SELECT EmployeeId FROM EmployeesWHERE DepartmentID IN(SELECT DepartmentID FROM DepartmentsWHERE DepartmentName='财务部'))))19、用子查询的方法查找所有年龄比研发部雇员都大的雇员的姓名:select namefrom employeeswhere Birthday<all(select birthdayfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='研发部'))20、查询每个员工的情况及其薪水的情况:select employees.*,departments.departmentnamefrom employees,departmentswhere employees.departmentid=departments.departmentid 21、使用内连接方法查找不在财务部工作的所有员工信息:select employees.*from employees inner join departments onemployees.departmentid=departments.departmentidwhere departmentname!='财务部'22、使用外连接方法查找出所有员工的月收入:select employees.*,salary.incomefrom employees join salary on employees.employeeid=salary.employeeid 23、查找财务部雇员的最高收入:select max(income)from salarywhere employeeid in(select employeeidfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部'))24、查询财务部雇员的最高实际收入:select max(income-outcome)from salarywhere employeeid in(select employeeidfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部'))25、统计财务部收入在2500元以上的雇员人数:select count(employeeid)from employeeswhere departmentid in(select departmentid from departmentswhere departmentname='财务部')and employeeid in(select employeeidfrom salarywhere income>2500)26、按部门列出在该部门工作的员工的人数:select departmentid ,count(*)as人数from employeesgroup by departmentid27、按员工的学历分组:select education ,count(*)as人数from employeesgroup by education28、按员工的工作年份分组,统计年份人数:select workyear ,count(*)as人数from employeesgroup by workyear29、按各雇员的情况收入由低到高排列:select employees.*,salary.incomefrom employees ,salarywhere employees.employeeid=salary.employeeidorder by income30、将员工信息按出生时间从小到大排列:select*from employeesorder by birthday31、在order by 字句中使用子查询,查询员工姓名,性别和工龄信息,要求按实际收入从大到小排列:select name,sex,workyear,income-outcomefrom salary ,employeeswhere salary.employeeid=employees.employeeidorder by income-outcome desc视图部分1、创建view1:Create view view1asselect employees.employeeid,name,departmentname,(income-outcome)as comefrom employees , departments , salarywhere employees.departmentid=departments.departmentid and employees.employeeid=salary.employeeid2、查询视图employeeid:3、向视图view1中插入一行数据:insert into view1 values('111111','谎言','1','30000')4、查看视图(没有影响)基本表:实验51、定义一个变量,用于描述YGGL数据库的salary表中000001号员工的实际收入,然后查询该变量:declare @hy intset @hy=(select income-outcomefrom salarywhere employeeid='000001')select @hy2、使用运算符“>”:select namefrom employeeswhere birthday>'1974-10-10'3、判断姓名为“王林”的员工实际收入是否高于3000元,如果是则显示“高收入”,否则显示“收入不高于3000”:if((select incomefrom salary,employeeswhere salary.employeeid=employees.employeeid and ='刘明')>3000)select income as'高收入'from salary,employeeswhere salary.employeeid=employees.employeeid and ='刘明' elseselect'收入不高于'4、使用循环输出一个“*”三角形:declare @i intdeclare @j intset @j=20set @i=1while @i<@jbeginprint(space((@j-@i)/2)+replicate('*',@i))set @i=@i+2end4、按部门进行分类,使用if语句实现:Create function hy1(@departmentid1 char(3))returns char(10)asbegindeclare @hy1 char(10)if((select departmentid from departments where@departmentid1=departmentid)='1')set @hy1='财务部'if((select departmentid from departments where@departmentid1=departmentid)='2')set @hy1='人力资源部'if((select departmentid from departments where@departmentid1=departmentid)='3')set @hy1='经理办公室'if((select departmentid from departments where@departmentid1=departmentid)='4')set @hy1='研发部'if((select departmentid from departments where@departmentid1=departmentid)='5')set @hy1='市场部'return @hy1endselect employeeid,name,address,dbo.hy1(departmentid)from employees select employeeid,name,address,case departmentidwhen 1 then'财务部'when 2 then'人力资源部'when 3 then'经理办公室'when 4 then'研发部'when 5 then'市场部'end as部门号from employees6、自定义一个函数,计算一个数的阶层:create function hy(@hy2 int)returns intasbegindeclare @i intset @i=@hy2declare @j intset @j=1while @i>1beginset @j=@j*@iset @i=@i-1endreturn(@j)enddeclare @h intexec @h=dbo.hy 4select @h as'jiecheng'7、/*生成随机数*/select rand()8、/*平方*/select square(12)9、/*求财务部收入最高的员工姓名*/select max(name)from employeeswhere employeeid in(select employeeidfrom salarywhere employeeid in(select employeeidfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部')))select avg(income)as'平均收入'from salary/*聚合函数与group by 一起使用*/select workyear ,count(*)as人数from employeesgroup by workyear/*将字符组成字符串*/select char(123)/*返回字符串左边开始的个字符*/select left('abcdef',2)/*返回指定日期时间的天数*/select day(birthday)from employeeswhere employeeid='010000'/*获取当前时间*/select getdate()实验61、创建索引:create unique index huangyanon employees(employeeid)2、/*用create index 语句创建主键*/3、重建表employees中employeeid列上的索引alter index huangyanon employees rebuild4、删除索引:5、创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名:create table employees5( employeeid char(6)not null,name char(5)not null,sex tinyint,education char(4),constraint yan primary key(employeeid,name))为新表添加一列:alter table employees5add address char(10)6、创建新表student,性别只能包含男或女:create table student(号码char(6)not null,性别char(2)not nullcheck(性别in('男','女')))7、创建新表:create table employees7(学号char(10)not null,出生日期datetime not nullcheck(出生日期>'1980-01-01'))8、创建一个规则:9,创建salary2:create table salary2(employeeid char(6)not null primary key,income float not null,outcome float not null,foreign key(employeeid)references salary(employeeid)on update cascadeon delete cascade)10、添加一个外键,salary与employees有相关记录,则拒绝更新employees:alter table salaryadd constraint kc_forforeign key(employeeid)references employees(employeeid)on delete no actionon update no action实验71、工作年份大于6时,跟换科室到经理办公室(根据员工):Create PROC UpdateDeptByYear(@EmpId char(6))ASBEGINDECLARE @year intSELECT @year=WorkYear From Employees WHERE EmployeeID=@EmpId IF(@year>6)UPDATE EmployeesSET DepartmentID='3'WHERE EmployeeID=@EmpIdENDEXEC UpdateDeptByYear '020010'SELECT*FROM Employees WHERE Employeeid='020010'2、根据每个员工的学历将收入提高元:CREATE PROC UpdateInComeByEdu @Employeeid char(6)ASBEGINUPDATE SalarySET InCome=InCome+500FROM SalaryLEFT JOIN EmployeesON Salary.EmployeeID=Employees.EmployeeIDWHERE Salary.Employeeid=@EmployeeidENDEXEC UpdateInComeByEdu '020010'SELECT*FROM Salary where EmployeeID='020010'3、游标:CREATE PROCEDURE Employees_biliASBEGINDECLARE @i FLOATDECLARE @j FLOATDECLARE @Education CHAR(10)DECLARE Employees_cursor CURSORFOR SELECT Education FROM EmployeesSET @i=0SET @j=0OPEN Employees_cursorFETCH Employees_cursor INTO @EducationWHILE(@@FETCH_STATUS=0)BEGINIF(@Education!='大专')SET @i=@i+1SET @j=@j+1FETCH Employees_cursor INTO @EducationENDCLOSE Employees_cursorSELECT @i AS'本科及以上员工所占员工数'SELECT @j AS'员工总数'SELECT @i/@j AS'本科及以上员工所占比例'CLOSE Employees_cursorENDEXEC Employees_bili4、使用命令的方式修改存储过程的定义:5、对于YGGL数据库,表Employees的EmployeeID列与表Salary的EmployeeID列应该满足参照的完整性规则,请用触发器实现两个表的参照完整性:CREATE TRIGGER Salary_insert ON SalaryFOR INSERT,UPDATEASBEGINIF(SELECT EmployeeID FROM INSERTED)NOT IN(SELECT EmployeeID FROM Employees)ROLLBACKENDCREATE TRIGGER Employeesupdate ON EmployeesFOR UPDATEASBEGINUPDATE SalarySET EmployeeID=(SELECT EmployeeID FROM INSERTED)WHERE EmployeeID=(SELECT EmployeeID FROM DELETED)ENDCREATE TRIGGER Employeesdelete ON EmployeesFOR DELETEASBEGINDELETE FROM SalaryWHERE EmployeeID=(SELECT EmployeeID FROM DELETED)ENDINSERT INTO SalaryVALUES('000005',2000,1000)UPDATE EmployeesSET EmployeeID='000000'WHERE EmployeeID='990230'DELETE FROM EmployeesWHERE EmployeeID='000000'6.当修改表Employees时,若将Employees表中员工的工作时间增加1年,则将收入增加500,若增加2年则增加1000,依次增加。
SQLServer网络数据库综合实训方案
《SQL Server网络数据库》课程综合实训方案一、综合实训课程性质和任务《SQL Server网络数据库》课程综合实训是在完成了理论教学和课内实训之后安排的综合实训,它通过管理信息系统的实例将数据库应用技术和面向对象程序设计两部分内容打通。
其目的和任务是让学生更加熟练地掌握数据库对象的基本操作、数据查询、索引、视图、存储过程、触发器、数据转换服务、备份与恢复等内容,对数据库及数据库设计、SQL语言的运用,以及管理信息系统的分析、设计方法有初步了解,对管理信息系统项目的组织策划、资源管理、团队精神也有一定的认识。
《SQL Server网络数据库》课程综合实训任务主要按照面向对象程序设计和数据库应用技术两门课程的教学内容来进行,它是以一个实际管理信息系统(MIS)的开发过程为背景来实施,实训通过一个完整的MIS项目开发,提高学生的应用开发能力及实际编程能力,使学生掌握数据库系统的基本概念、原理和应用,了解数据库系统在实际应用中的开发方法及研制过程,为今后从事管理信息系统的研究、开发、应用提供必要的知识,更好地完成各种计算机应用和开发任务。
二、综合实训基本要求综合实训采用分组方式进行,每组选定一个管理信息系统的题目,组内可以进行讨论,互相学习提高。
每个组员具体做一个模块,组长负责总体协调和系统联调。
在实训的过程中,要求组长带领组员深入现有系统进行深入调查,弄清用户需求。
同时,要求组长督促组员都要参与开发的全过程,并鼓励组员选择MIS系统中除基本功能外的其他功能或者使用特别方法实现功能的,作为创新设计的尝试。
每个题目功能都可以参见附录部分的人事管理系统功能模块图。
实训要求将前台的桌面程序设计与后台数据管理结合起来,完成管理信息系统的项目内容的设计、编程以及调试运行,记录实训过程中程序代码和操作步骤,并以实训报告书的形式(包括体会和收获)递交。
三、实训教学条件⑴先行已开设可视化程序设计课程⑵具备客户机/服务器模式的网络实验室作为学生实训操作的场地。
SQL综合练习(填空操作)
SQL综合练习(填空操作)第一篇:SQL综合练习(填空操作)一,选择题1,下面关于SQL语言的叙述中,哪一条是错误的().A.SQL既可作为联机交互环境中的查询语言又可嵌入到主语言中B.SQL没有数据控制功能C.使用SQL用户只能定义索引而不能引用索引D.使用SQL用户可以定义和检索视图2,SQL语言是()A.高级语言B.编程语言C.结构化查询语言D.宿主语言3,在学生数据库中,用SQL语句列出的所有女生的姓名,应该对学生关系进行()操作.A.选择 B.连接 C.投影 D.选择和投影4,NULL是指()A.0B.空格C.无任何值D.空字符串5,下列哪条语句不属于SQL数据操纵功能范围()A.SELECTB.CREAT TABLEC.DELETED.INSERT6,用()命令可建立唯一索引A.CREATE TABLEB.CREATE CLUSTERC.CREATE INDEXD.CREATE UNIQUE INDEX二,填空题1,SQL语言的使用方式有两种,一种是 ,另一种是2,在SQL查询中,WHERE子句的功能是.3,视图是一个虚表,它是从的表.4,SQL语言的数据操纵功能包括 , , ,和,5,在SQL支持的关系数据库三级模式结构中,外模式对应于,模式对应于,内模式对应于.6,在SELECT语句中,HAVING子句必须跟在子句后面.三,问题及操作题1,名词解释SQL模式 SQL数据库基本表视图相关子查询联接查询嵌入式SQL 游标2,对于教学数据库的三个基本表学生 S(S#,SNAME,AGE,SEX)学习SC(S#,C#,GRADE)课程 C(C#,CNAME,TEACHER)试用SQL的查询语句表达下列查询:(1)检索LIU老师所授课程的课程号和课程名.(2)检索年龄大于23岁的男学生的学号和姓名.(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名.(4)检索WANG同学不学的课程的课程号.(5)检索至少选修两门课程的学生学号.(6)检索全部学生都选修的课程的课程号与课程名.(7)检索选修课程包含LIU老师所授课的学生学号.3, 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:(1)R∪S(2)R∩S(3)R-S(4)πA,B(R)πB,C(S)4, 试用SQL查询语句表达下列对教学数据库中三个基本表S,SC,C 的查询:(1)统计有学生选修的课程门数.(2)求选修C4课程的学生的平均年龄.(3)求LIU老师所授课程的每门课程的学生平均成绩.(4)统计每门课程的学生选修人数(超过10人的课程才统计).要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列.(5)检索学号比WANG同学大,而年龄比他小的学生姓名.(6)检索姓名以WANG 打头的所有学生的姓名和年龄.(7)在SC中检索成绩为空值的学生学号和课程号.(8)求年龄大于女同学平均年龄的男学生姓名和年龄.5, 试用SQL更新语句表达对教学数据库中三个基本表S,SC,C的各个更新操作:(1)往基本表S中插入一个学生元组('S9','WU',18).(2)在基本表S 中检索每一门课程成绩都大于等于80分的学生学号,姓名和性别, 并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX).(3)在基本表SC中删除尚无成绩的选课元组.(4)把WANG同学的学习选课和成绩全部删去(5)把选修MATHS课不及格的成绩全改为空值.(6)把低于总平均成绩的女同学成绩提高5%.(7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%, 若成绩大于75分时提高4%(用两个UPDATE语句实现).6, 在宿主语言的程序中使用SQL语句有哪些规定7,嵌入式SQL语句何时不必涉及到游标何时必须涉及到游标答案:一,1,B 2,C 3,D 4,C 5,B 6,D二,1,嵌入式交互式 2,选择3,基本表导出的表 4,数据查询数据更新数据插入数据删除5,视图或部分基本表基本表存储文件6,GROUP BY三,1,名词解释SQL模式:SQL模式是表和授权的静态定义.一个SQL模式定义为基本表的集合.一个由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表,视图,索引等)的定义.SQL数据库:SQL(Structured Query Language),即'结构式查询语言',采用英语单词表示和结构式的语法规则.一个SQL数据库是表的汇集,它用一个或多个SQL模式定义.基本表:在SQL中,把传统的关系模型中的关系模式称为基本表(Base T able).基本表是实际存储在数据库中的表,对应一个关系.视图:在SQL中,把传统的关系模型中的子模式称为视图(View),视图是从若干基本表和(或)其他视图构造出来的表.相关子查询:在嵌套查询中出现的符合以下特征的子查询:子查询中查询条件依赖于外层查询中的某个值, 所以子查询的处理不只一次,要反复求值,以供外层查询使用.联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接,选择,投影等操作.联接查询的效率比嵌套查询低.嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL.游标:游标是与某一查询结果相联系的符号名,用于把集合操作转换成单记录处理方式.2,(1)检索LIU老师所授课程的课程号和课程名.SELECT C#,CNAME FROM CWHERE TEACHER='LIU'(2)检索年龄大于23岁的男学生的学号和姓名.SELECT S#,SNAMEFROM SWHERE(AGE>23)AND(SEX='M')(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名.SELECT SNAMEFROM SWHERE SEX='F' AND S# IN(SELECT S#FROM SCWHERE C# IN(SELECT C#FROM CWHERE TEACHER='LIU')NOTICE:有多种写法,比如联接查询写法:SELECT SNAMEFROM S,SC,CWHERE SEX='F' AND SC.S#=S.S#AND SC.C#=C.C#AND TEACHER='LIU'但上一种写法更好一些.(4)检索WANG同学不学的课程的课程号.SELECT C#FROM CWHERE C# NOT IN(SELECT C#FROM SCWHERE S# IN(SELECT S#FROM SWHERE SNAME='WANG'))(5)检索至少选修两门课程的学生学号.SELECT DISTINCT X.SNOFROM SC X,SC YWHERE X.SNO=Y.SNO AND ONotice:对表SC进行自连接,X,Y是SC的两个别名.(6)检索全部学生都选修的课程的课程号与课程名.SELECT C#,CNAMEFROM CWHERE NOT EXISTS(SELECT *FROM SWHERE S# NOT IN(SELECT *FROM SCWHERE SC.C#=C.C#))要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学.其中,“不选这门课的同学”可以表示为:SELECT *FROM SWHERE S# NOT IN(SELECT *FROM SCWHERE SC.C#=C.C#)或者SELECT *FROM SWHERE NOT EXISTS(SELECT *FROM SCWHERE S.S#=C.S# ANDSC.C#=C.C#)(7)检索选修课程包含LIU老师所授课的学生学号.SELECT DISTINCT S#FROM SCWHERE C# IN(SELECT C#FROM CWHERE TEACHER='LIU'))3,(1)SELECT A,B,CFROM RUNIONSELECT A,B,CFROM S(2)SELECT A,B,CFROM RINTERSECTSELECT A,B,CFROM S(3)SELECT A,B,CFROM RWHERE NOT EXISTS(SELECT A,B,CFROM SWHERE R.A=S.A AND R.B=S.B AND R.C=S.C)(4)SELECT R.A,R.B,S.CFROM R,SWHERE R.B=S.B4,(1)统计有学生选修的课程门数.SELECT COUNT(DISTINCT C#)FROM SC(2)求选修C4课程的学生的平均年龄.SELECT AVG(AGE)FROM SWHERE S# IN(SELECT S#FROM SCWHERE C#='C4')或者,SELECT AVG(AGE)FROM S,SCWHERE S.S#=SC.S# AND C#='004'(3)求LIU老师所授课程的每门课程的学生平均成绩.SELECT CNAME,AVG(GRADE)FROM SC ,CWHERE SC.C#=C.C# AND TEACHER='LIU'GROUP BY C#(4)统计每门课程的学生选修人数(超过10人的课程才统计).要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列.SELECT DISTINCT C#,COUNT(S#)FROM SCGROUP BY C#HAVING COUNT(S#)>10ORDER BY 2 DESC, C# ASC(5)检索学号比WANG同学大,而年龄比他小的学生姓名.SELECT X.SNAMEFROM S AS X, S AS YWHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE(SELECT AVG(AGE)FROM S AS Y WHERE Y.SEX='女') 5,(1)往基本表S中插入一个学生元组('S9','WU',18).INSERT INTO S(S#,SNAME,AGE)VALUES('59','WU',18)(2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号,姓名和性别, 并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX).INSERT INTO STUDENT(S#,SNAME,SEX)SELECT S#,SNAME,SEXFROM S WHERE NOT EXISTS(SELECT * FROM SC WHEREGRADE<80 AND S.S#=SC.S#)(3)在基本表SC中删除尚无成绩的选课元组.DELETE FROM SCWHERE GRADE IS NULL(4)把WANG同学的学习选课和成绩全部删去.DELETE FROM SCWHERE S# IN(SELECT S#FROM SWHERE SNAME='WANG')(5)把选修MATHS课不及格的成绩全改为空值.UPDATE SCSET GRADE=NULLWHERE GRADE<60 AND C# IN(SELECT C#FROM CWHERE CNAME='MATHS')6)把低于总平均成绩的女同学成绩提高5%.UPDATE SCSET GRADE=GRADE*1.05WHERE GRADE(7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%, 若成绩大于75分时提高4%(用两个UPDATE语句实现).UPDATE SCSET GRADE=GRADE*1.05WHERE C#='C4' AND GRADE756, 在宿主语言的程序中使用SLQ语句有以下规定:(1)在程序中要区分SQL语句与宿主语言语句(2)允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定:1)引用时,这些变量前必须加“:”作为前缀标识,以示与数据库中变量有区别.2)这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明.(3)SQL的集合处理方式与宿主语言单记录处理方式之间要协调.需要采用游标机制,把集合操作转换成单记录处理方式.7,(1)INSERT,DELETE,UPDATE语句,查询结果肯定是单元组时的SELECT语句, 都可直接嵌入在主程序中使用,不必涉及到游标.(2)当SELECT语句查询结果是多个元组时,此时宿主语言程序无法使用, 一定要用游标机制把多个元组一次一个地传送给宿主语言处理.第二篇:SQL语句练习1.用SQL语句在“商学院教学管理”数据库中建立学生表、课程表、成绩表、教师表、授课表、班级表。
数据库原理中SQL语句实验指导书及答案
实验四:管理SQL Server表数据一、实验目的熟悉数据表结构及使用特点;熟悉使用Management Stuio界面方式管理数据表数据;熟悉使用T-SQL语句管理数据表数据。
二、实验环境已安装SQL Server 2005 企业版的计算机(13台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求了解SQL Server数据表数据的管理方法;了解SQL Server数据类型;完成实验报告(部分题只需给出关键语句)。
五、实验内容及步骤以课本指定的数据库为例,并依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作:向各个数据表中插入如下记录:学生信息表(student)课程信息表(course)选课信息表(sc)insert into student.dbo.sc values('20051501','1',75)insert into student.dbo.course values('1','数据库','5',4)insert into student.dbo.student values('201015001','赵菁菁','女',23,'CS') 2.修改CS系姓名为“李勇”的学生姓名为“李咏”;update studentset Sname='李咏'where Sname='李勇'3.修改课程“数据处理”的学分为3学分;3.update courseset Ccredit=3where Cname ='数据处理'4.将选修课程“1”的同学成绩加5分;4.update scset Grade =Grade+5where Cno='1'5.将选修课程“大学英语”的同学成绩加5分;update scset Grade=Grade+5from course,scwhere o=o and ame='大学英语'6.将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;update studentset Sname='王丹丹',Ssex='女',Sage=20,Sdept='MA'where Sno='200515010'7.修改借书证号为2005001的学生记录重新设置:名字为王婧婧、专业为信息管理、借书量增加5本;(因为无些相关的数据表帮无法实现)8.删除数据表student中无专业的学生记录;deletefrom studentwhere Sdept is null9.删除数据表student中计算机系年龄大于25的男同学的记录;deletefrom studentwhere Ssex='男' and Sage>25 and Sdept='CS'10.删除数据表course中学分低于1学分的课程信息;deletefrom coursewhere Ccredit<1实验五:数据库单表查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。
实验六 SQL 语句综合训练
实验六SQL 语句综合训练一、实验目的本次实验是一个综合练习,通过训练,使学生全面掌握SQL SERVER 2008的基本操作语句和功能。
二、实验内容综合练习一设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。
现要建立关于系、学生、班级的数据库,关系模式为:班CLASS(班号,专业名,系号,入学年份,人数)学生STUDENT(学号,姓名,年龄,班号)系DEPARTMENT(系号,系名)试用SQL语言完成以下功能:1.建立数据库,数据库名称为C_S_Dcreate database C_S_D2. 建立数据表,在定义中要求声明:(1)每个表的主、外码。
(2)每个班级的人数不能超过30人。
(3)学生的年龄介于15到40岁之间。
(4)学生姓名不能为空。
班CLASS(班号,专业名,系号,入学年份,人数)create table Class(Cno nchar(10),Cname nchar(10),Dno nchar(10),Time nchar (10),Num nchar(10),primary key (Cno),foreign key (Dno)references DEPARTMENT(Dno));学生STUDENT(学号,姓名,年龄,班号)create table STUDENT(Sno nchar(10)not null,Sname nchar(10)not null,Age nchar(10)check(Age<=40 and Age>=15),Cno nchar(10),primary key (Sno),foreign key (Cno)references Class(Cno),)系DEPARTMENT(系号,系名)create table DEPARTMENT(Dno nchar(10)primary key,Dname nchar(20))3.插入如下数据CLASS 101,软件工程,002,1995,20;102,微电子,002,1996,30;111,无机化学,003,1995,29;112,高分子化学,003,1996,25;121,离散数学,001,1995,20;131,现代语言,004,1996,20;141,国际贸易,005,1997,30;142,国际金融,005,1996,14;143,数字电路,002,1997,30;151,物理化学,003,1995,29 STUDENT(8101,张三,18,101;8102,钱四,16,121;8103,王玲,17,131;8105,李飞,19,102;8109,赵四,18,141;8110,李可,20,1428201,张飞,18,111;8302,周瑜,16,112;8203,王亮,17,111;8305,董庆,19,102;8409,赵龙,18,101;8510,李丽,20,142)DEPARTMENT(001,数学;002,计算机;003,化学;004,中文;005,经济;)insert into DEPARTMENT values('005','经济')INSERT ClassSELECT'101','软件工程','002','1995','20'UNION SELECT'102','微电子','002','1996','30'UNION SELECT'111','无机化学','003','1995','29'UNION SELECT'112','高分子化学','003','1996','25'UNION SELECT'121','离散数学','001','1995','20'UNION SELECT'131','现代语言','004','1996','20'UNION SELECT'141','国际贸易','005','1997','30'UNION SELECT'142','国际金融','005','1996','14'UNION SELECT'143','数字电路','002','1997','30'UNION SELECT'151','物理化学','003','1995','29'INSERT STUDENTSELECT'8101','张三','18','101'UNION SELECT'8102','钱四','16','121'UNION SELECT'8103','王玲','17','131'UNION SELECT'8105','李飞','19','102'UNION SELECT'8109','赵四','18','141'UNION SELECT'8110','李可','20','142'UNION SELECT'8201','张飞','18','111'UNION SELECT'8302','周瑜','16','112'UNION SELECT'8203','王亮','17','111'UNION SELECT'8305','董庆','19','102'UNION SELECT'8409','赵龙','18','101'UNION SELECT'8510','李丽','20','142'4.完成以下查询功能(1)找出所有姓李的学生。
SQL基础语句大全(中文)
SQL基础语句大全(中文)SQL基础语句大全(中文)SQL基础本章内容SQL介绍使用SELECT 语句从表中取数据创建新表字段属性向表中添加数据删除和修改表为了建立交互站点,你需要使用数据库来存储来自访问者的信息。
例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简历,所感兴趣的工作等等这样的信息。
创建动态网叶也需要使用数据库,如果你想显示符合来访者要求的最好的工作,你就需要从数据库中取出这份工作的信息。
你将会发现,在许多情况下需要使用数据库。
在这一章里,你将学会怎样使用“结构化查询语言”(SQL〕来操作数据库。
SQL语言是数据库的标准语言。
在Active Sever Pages 中,无论何时你要访问一个数据库,你就要使用SQL语言。
因此,掌握好SQL对ASP编程是非常重要的。
注意:你可以把“SQL”读作“sequel”,也可以按单个字母的读音读作S-Q-L。
两种发音都是正确的,每种发音各有大量的支持者。
在本书里,认为“SQL”读作“sequel”。
通过这一章的学习,你将理解怎样用SQL实现数据库查询,你将学会怎样使用这种查询从数据表中取出信息,最后,你将学会怎样设计和建立自己的数据库。
注意:通过下面几章对SQL的介绍,你将对SQL有足够的了解,从而可以有效地使用Active Sever Pages。
但是,SQL是一种复杂的语言,本书不可能包括它的全部细节。
要全面掌握SQL语言,你需要学习在Microsoft SQL Sever 中使用SQL。
你可以到附近的书店去买一本Microsoft SQL Sever 6.5。
SQL介绍:本书假设你是在SQL操作Microsoft SQL Sever 的数据库。
你也可以用SQL操作许多其它类型的数据库。
SQL是操作数据库的标准语言。
(事实上,关于SQL语言有一个专门的ANSI标准〕注意:不要在你的站点上试图用Microsoft Access代替Microsoft SQL Sever。
SQL数据库管理与开发》试题及习题参考答案M
《SQL数据库管理与开发教程与实训》试题(M卷)王鹏老师一、单项选择题(每小题1分,共10分)1. 下列四项中,不属于数据库特点的是( )。
A.数据共享B.数据完整性C.数据冗余很高D.数据独立性高2. 反映现实世界中实体及实体间联系的信息模型是( )。
A.关系模型B.层次模型C.网状模型D.E-R模型3. 下列四项中,不正确的提法是( )。
A.SQL语言是关系数据库的国际标准语言B.SQL语言具有数据定义、查询、操纵和控制功能C.SQL语言可以自动实现关系数据库的规范化D.SQL语言称为结构查询语言4. 在SQL中,SELECT语句的"SELECT DISTINCT"表示查询结果中 ( )A.属性名都不相同B.去掉了重复的列C.行都不相同D.属性值都不相同5.在数据操作语言(DML)的基本功能中,不包括的是 ( )A.插入新数据B.描述数据库结构C.修改数据D.删除数据6. 在采用客户机/服务器体系结构的数据库应用系统中,应该将用户应用程序安装在 ( )A.客户机端B.服务器端C.终端D.系统端7、实体型学生与任课教师之间具有()联系。
A 一对一B 一对多C 多对一D 多对多8. 数据库系统的日志文件用于记录下述哪类内容()A) 程序运行过程 B) 数据查询操作C) 程序执行结果 D) 数据更新操作9. 数据库管理系统的英文缩写是()。
A.DB B.DBS C.DBA D.DBMS10. SQL语言中,删除一个表的命令是( )A. DELETEB. DROPC. CLEARD. REMOVE二、判断题(每空1分,共10分)1. 在查询分析器中执行SQL语句的快捷键是F1。
2. 计算ASCII('also')结果为97。
3. UNION运算符是用于将两个或多个检索结果合并成一个结果。
4. 在事务中包含create database语句吗?5. Lock权限不是数据库的访问权限。
sql-labs一到四关的实验总结 -回复
sql-labs一到四关的实验总结-回复SQL实验总结一、关于sqllabs一到四关的实验概述:1. SQL(Structured Query Language)是一种用于访问和处理关系数据库的语言。
在软件开发和数据分析领域,SQL是一种必备的技能。
2. sqllabs一到四关是一个针对SQL语言初学者设计的实验题目,通过完成这些实验,可以加深对SQL基本语法和常用操作的理解。
二、实验一:检索数据1. 实验目标:学习使用SELECT语句从数据库中检索数据。
2. 实验内容:a. 查询所有的员工信息;b. 查询员工编号为101的员工信息;c. 查询员工姓名为“张三”的员工信息;d. 查询职位为“经理”的员工信息;e. 查询工资在2000到3000之间的员工信息。
3. 实验过程:a. 使用SELECT语句从指定表中检索数据;b. 根据实验要求,构造相应的查询条件;c. 运行查询语句,观察结果是否符合要求。
三、实验二:排序和过滤数据1. 实验目标:学习使用ORDER BY和WHERE语句对数据进行排序和过滤。
2. 实验内容:a. 按照工资从高到低对员工进行排序;b. 查询属于部门“销售”的员工信息;c. 查询工资在2000到3000之间且职位为“经理”的员工信息。
3. 实验过程:a. 使用ORDER BY语句按照指定列对数据进行排序;b. 使用WHERE语句设置查询条件,过滤数据;c. 运行查询语句,观察结果是否符合要求。
四、实验三:聚合函数和分组1. 实验目标:学习使用聚合函数和GROUP BY语句对数据进行统计和分组。
2. 实验内容:a. 查询员工的平均工资;b. 查询每个部门的总工资;c. 查询每个职位的最高工资。
3. 实验过程:a. 使用聚合函数(如AVG、SUM、MAX等)对数据进行统计;b. 使用GROUP BY语句按照指定列对数据进行分组;c. 运行查询语句,观察结果是否符合要求。
五、实验四:连接表查询1. 实验目标:学习使用JOIN语句对多个表进行连接查询。
sql语言实验报告[最新版]
sql语言实验报告sql语言实验报告篇一:数据库SQL语句实验报告《数据库原理及应用》实验报告SQL语句部分班级: 11-37-06 学号:姓名:总成绩:实验一熟悉SQL SERVER,数据定义实验实验一成绩:一、实验目的1、利用查询分析器创建数据库2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作二、实验步骤及内容在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生课程数据库6、在表S上增加“出生日期”属性列。
7、删除表S的“年龄”属性列。
8、删除S姓名列的唯一值约束。
9、修改SC表成绩属性列为精确数字型。
10、在表S上,按“Sno”属性列的唯一值方式建立索引。
11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。
三、实验结果:1.创建学生课程数据库create database Studend; 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。
PRIMARY KEY, Sname CHARUNIQUE, Ssex CHARprimary key, CnameCHARSQL定义语言实验目的:1.熟练掌握SQL语言进行基本表结构的创建。
2.熟练应用SQL语言进行表结构的修改。
3.掌握SQL语言进行基本表的删除。
4.掌握SQL语言进行索引的建立和删除5.选择具体的数据库管理系统进行实现(Access 或SQL Server)实验内容和要求: 1.切换到Access的SQL视图或者打开SQL Server查询分析器进行定义操作2.用SQL语言CREATE TABLE语句创建学生表student、课程表course和选课表SC;(字段类型及长度参照实验一)3.用SQL语言ALTER语句修改表结构;a)STUDENT表中SNO设为非空和唯一;b)STUDENT表中增加一个字段SBIRTH,类型设置为日期时间类型,增加一个ADDRESS字段,类型为文本(字符);c)删除STUDENT表中ADDRESS字段;d)COURSE表中CNO字段设为非空和唯一;4.重新定义一个简单表,然后用SQL语言DROP语句删除该表结构;5.用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序索引;6.用SQL语言CREATE INDEX语句定义表SC的GRADE字段的升序索引;7.用SQL语言DROP语句删除索引;8.输入部分数据,并试着修改其中的错误;实验过程与步骤:(1)创建学生表student的实现如下:create table student, ssex char , sage smallint, sdeptchar);(2)创建课程表course的实现如下:create table course, cnamechar); (4)创建选课表sc实现如下:create tablesc); (5)表建完后,就是对表结构的操作,可用drop删除表的某一列,create index 创建索引,用add constraint添加属性等,具体操作详见压缩包对实验内容的实现的命令。
测试人员要掌握的基本的SQL语句
测试人员要掌握的基本的SQL语句目录一、DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)二、DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)三、DCL—数据控制语言(GRANT,REVOKE)四、下半部分内容(主要是PL/SQL:函数,存储过程,事务等)说明:本文档的使用对象是对SQL有一些了解的软件测试人员,我只是把我知道的知识结合网上的资料进行二次总结,不正之处望多请教。
本文档配置附有SQL范例脚本。
一、DDL数据定义语言首先,简要介绍基础语句,作为测试人员一般测试时,已经由数据库设计师建好了数据库,数据库设计师可能也不用语句的方式来建表,但我们应该能看懂各语句的使用格式,语句的含义,有兴趣再作深入了解。
1、创建数据库CREATE DATABASE [database-name]2、删除数据库DROP DATABASE dbname1,dbname2…3、备份数据库--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份BACKUP DATABASE pubs TO testBack4、创建表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)例如: CREATE TABLE S(SNO CHAR(10) NOT NULL ,SN VARCHAR(20),AGE INT,SEX CHAR(2) DEFAULT '男' ,DEPT VARCHAR(20));根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、删除表drop table tabname6、增加字段Alter table tabnameADD <列名><数据类型>[NULL|NOT NULL]7、修改字段ALTER TABLE<表名>ALTER COLUMN <列名><数据类型>[NULL|NOT NULL]8、删除字段ALTER TABLE<表名>DROP COLUMN <列名><数据类型>[NULL|NOT NULL]9、添加主键Alter table tabname add primary key(col)10、删除主键Alter table tabname drop primary key(col)11、创建索引create [unique] index idxname on tabname(co l….)12、删除索引drop index idxname注:索引是不可更改的,想更改必须删除重新建。
自考_互联网数据库SQL语句实例学习汇总
SQL语句实例学习汇总表操作例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:Create TABLE STUDENTS(SNO NUMERIC (6, 0) NOT NULLSNAME CHAR (8) NOT NULLAGE NUMERIC(3,0)SEX CHAR(2)BPLACE CHAR(20)PRIMARY KEY(SNO))例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下:Create TABLE ENROLLS(SNO NUMERIC(6,0) NOT NULLCNO CHAR(4) NOT NULLGRADE INTPRIMARY KEY(SNO,CNO)FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)FOREIGN KEY(CNO) REFERENCES COURSES(CNO)CHECK ((GRADE IS NULL) or (GRADE BETWEEN 0 AND 100)))例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。
Create TABLE GIRLAS Select SNO, SNAME, AGEFROM STUDENTSWhere SEX=' 女';例 4 删除教师表TEACHER 。
Drop TABLE TEACHER例 5 在教师表中增加住址列。
Alter TABLE TEACHERSADD (ADDR CHAR(50))例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。
Alter TABLE STUDENTSDrop BPLACE CASCADE例7 补充定义ENROLLS 表的主关键字。
Alter TABLE ENROLLSADD PRIMARY KEY (SNO,CNO) ;视图操作(虚表)例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。
SQL数据库语句大全大全(完全整理版)之欧阳与创编
SQL语句大全--语句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据-数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域--数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare @id char(10)--set @id = '10010001'select @id = '10010001'---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint 'x > y' --打印字符串'x > y'else if @y > @zprint 'y > z'else print 'z > y'--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when job_level = ’3’ then e_wage*1.06 else e_wage*1.05end--WHILE CONTINUE BREAK declare @x int @y int @c intselect @x = 1 @y=1while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) wherecolumn_name operator valueex:(宿主)select * from stock_information where stockid = str(nid) stockname = 'str_name'stockname like '% find this %'stockname like '[a-zA-Z]%' --------- ([]指定值的范围) stockname like '[^F-M]%' --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = 'stock_path'or stocknumber < 1000and stockindex = 24not stock*** = 'man'stocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) fromtable_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select *from table1, table2where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber fromStock_table2)---value为select语句***update***update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束***function(/*常用函数*/)***----统计函数----A VG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--A VGuse panguselect avg(e_wage) as dept_avgWage from employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)--STDEV()--STDEV()函数返回表达式中所有数据的标准差--STDEVP()--STDEVP()函数返回总体标准差--V AR()--V AR()函数返回表达式中所有值的统计变异数--V ARP()--V ARP()函数返回总体变异数----算术函数----/***三角函数***/SIN(float_expression) --返回以弧度表示的角的正弦COS(float_expression) --返回以弧度表示的角的余弦TAN(float_expression) --返回以弧度表示的角的正切COT(float_expression) --返回以弧度表示的角的余切/***反三角函数***/ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expression1,float_expression2)--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expression)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expression) --返回表达式的指数值LOG(float_expression) --返回表达式的自然对数值LOG10(float_expression)--返回表达式的以10 为底的对数值SQRT(float_expression) --返回表达式的平方根/***取近似值函数***/CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --返回值为π 即3.1415926535897936RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数----字符串函数----ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() --函数返回一个四位字符码--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename('abc', '{') quotename('abc')运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复character_expression 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下----------- -----------abcdefg*/SPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() (<expression> AS <data_ type>[ length ]) CONVERT() 函数语法如下CONVERT() (<data_ type>[ length ], <expression> [, style])select cast(100+99 as char) convert(varchar(12), getdate()) 运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expression 中的日期值MONTH() --函数返回date_expression 中的月份值YEAR() --函数返回date_expression 中的年份值DATEADD(<datepart> ,<number> ,<date>)--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间----系统函数----APP_NAME() --函数返回当前执行的应用程序的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['database_name']) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回服务器端计算机的名称HOST_NAME() --函数返回服务器端计算机的名称IDENTITY(<data_type>[, seed increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expression1>, <expression2>)--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值sql中的保留字action add aggregate allalter after and asasc avg avg_row_length auto_incrementbetween bigint bit binaryblob bool both bycascade case char characterchange check checksum columncolumns comment constraint createcross current_date current_time current_timestamp data database databases datedatetime day day_hour day_minuteday_second dayofmonth dayofweek dayofyear dec decimal default delayeddelay_key_write delete desc describedistinct distinctrow double dropend else escape escapedenclosed enum explain existsfields file first floatfloat4 float8 flush foreignfrom for full functionglobal grant grants grouphaving heap high_priority hourhour_minute hour_second hosts identifiedignore in index infileinner insert insert_id intinteger interval int1 int2int3 int4 int8 intoif is isam joinkey keys kill last_insert_idleading left length likelines limit load locallock logs long longbloblongtext low_priority max max_rowsmatch mediumblob mediumtext mediumint middleint min_rows minute minute_second modify month monthname myisamnatural numeric no notnull on optimize optionoptionally or order outeroutfile pack_keys partial passwordprecision primary procedure process processlist privileges read realreferences reload regexp renamereplace restrict returns revokerlike row rows secondselect set show shutdownsmallint soname sql_big_tables sql_big_selectssql_low_priority_updates sql_log_off sql_log_updatesql_select_limitsql_small_result sql_big_result sql_warnings straight_join starting status string tabletables temporary terminated textthen time timestamp tinyblobtinytext tinyint trailing totype use using uniqueunlock unsigned update usagevalues varchar variables varyingvarbinary with write whenwhere year year_month zerofill查看全文常用SQL命令和ASP编程在进行数据库操作时,无非就是添加、删除、修改,这得设计到一些常用的SQL语句,如下:SQL常用命令使用方法:(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 like %字段值% order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 in (值1,值2,值3)"sql="select * from 数据表 where 字段名 between 值1 and 值2"(2) 更新数据记录:sql="update 数据表 set 字段名=字段值 where 条件表达式"sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"(3) 删除数据记录:sql="delete from 数据表 where 条件表达式"sql="delete from 数据表" (将数据表所有记录删除)(4) 添加数据记录:sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)(5) 数据记录统计函数:A VG(字段名) 得出一个表格栏平均值COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名) 取得一个表格栏最大的值MIN(字段名) 取得一个表格栏最小的值SUM(字段名) 把数据栏的值相加引用以上函数的方法:sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"set rs=conn.excute(sql)用 rs("别名") 获取统的计值,其它函数运用同上。
自己弄的SQL_Server上机课堂实践与习题自己弄的
任务1 SQL Server系统软硬件安装配置课堂实践1自己弄的1.上网查询目前主流的关系型数据库系统及各自的特点?2.上网查询并写报告:数据库系统的发展。
课堂实践21.选择SQL Server 2005企业版,上网查询安装该版本所需要的软硬件环境。
2.安装SQL Server 2005企业版。
3.查询联机帮助了解SQL Server 2005的新特性。
4.上机熟悉SQL Server 2005的各项工具。
课堂实践31.注册和配置自己的服务器。
2.查资料用其他方法配置服务器。
习题一、选择题1. A 是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。
数据库在建立、使用和维护时由其统一管理、统一控制。
A.DBMS B.DB C.DBS D.DBA2. B 是被长期存放在计算机内的、有组织的、统一管理的相关数据的集合。
A.DATA B.INFORMATION C.DB D.DBS3.数据库应用系统是由数据库、数据库管理系统(及其开发工具)、应用系统、 D和用户构成。
A.DBMS B.DB C.DBS D.DBA4.目前A 数据库系统已逐渐淘汰了网状数据库和层次数据库,成为当今最为流行的商用数据库系统。
A.关系B.面向对象C.分布5.下面列出的数据管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是C 。
Ⅰ.人工管理阶段Ⅱ.文件系统阶段Ⅲ.数据库阶段A.只有ⅠB.只有ⅡC.Ⅰ和ⅡD.Ⅱ和Ⅲ二、填空题1.目前最常用的数据库模型有_层次模型______、网状模型_______和__关系模型_____。
20世纪80年代以来,_关系模型______逐渐占主导地位。
2.数据库三个要素是____数据结构___、数据操作_______和_完整性约束______。
3.关系数据库的操纵主要包括____查询____、_插入_______、_删除_______和_更新_______数据。
实验一 sql语言及相关操作及答案(1)
实验一SQL语言及相关操作一、实验目的本实验的目的是使学生掌握如何在SQL Server Management studio中进行查询分析以及对数据库中的表和数据进行操作,加深对SQL和SQL语言相关操作理解。
熟练掌握数据查询、表的更新等操作方法。
二、实验时数4学时三、实验内容:(1)利用SQL语句进行简单查询和连接查询操作。
1.列出所有course的课程号、课程名和学分。
2.查询所有蒙古族学生的学号、姓名和所在学院。
3.在score表中显示平均成绩都高于85分的学生学号、课程号和成绩。
4.查询选修课称号为001或005且平均成绩大于等于75分学生的学号、课程号和成绩。
5.查询信息管理学院1991年出生的所有男生的信息。
6.查询所有学生的年龄。
7.查询所有姓王或姓黄的学生的姓名、生日和所在班级名称。
8.查询先修课程为”数据结构”的所有课程。
9.查询信息管理学院非汉族同学的学号、姓名、性别及民族。
10.查找选修了“操作系统”的学生学号、成绩和姓名。
11.查找至少选修了一门其直接先修课编号为004的课程的学生学号和姓名。
12.查找至少选修了学号为0800001的学生所选课程的学生学号和姓名。
10413.查询出生日期在1991年以后的学生的学号、姓名、籍贯和年龄。
14.在student表中查询学生的学号、姓名和平均成绩,并按照平均成绩的降序排列。
15.查找了选修了以“C语言程序设计”为其直接先修课的课程的学生学号、课程号和成绩。
16.在score表中查询平均成绩大于80的学生的学号、课程号和成绩,并先按照课程号的升序、再按照成绩的降序排列。
17.查找信息管理学院学生选课情况,显示学生姓名、课程名和成绩。
18.统计student表中的男女学生的人数。
19.查询成绩最高分的学生的学号、课程号和相应成绩。
20.查询选课少于3门的学生的学号及其选课的门数。
(2) 利用SQL语句进行表的管理等操作。
1.给class表中的classname字段添加唯一约束。
网站开发常用Sql语句
⽹站开发常⽤Sql语句 维护⽹站,经常操作数据库,使⽤sql语句可以达到事半功倍的效果。
⽐如,把所有密码为空的教师初始设成id⼀致,sql语句⽐⼿动快万倍。
下⾯介绍数据库开发中经常⽤到的⼀些sql语句: ⼀建库操作 1.创建数据库并编码utf8: CREATE DATABASE IF NOT EXISTS test DEFAULT CHARACTER SET 'utf8' 2.删除数据库test: DROP DATABASE test 3.显⽰数据库: SHOW DATABASES 4.增加新⽤户和密码: CREATE USER test IDENTIFIED by '123' 5.查看编码: SHOW VARIABLES WHERE variable_name like 'character%' (character_set_client和character_set_connection ⼀致utf8则⽆乱码) ⼆建表操作 1.创建主键⾃增长的学⽣表(若表明为order关键字,需返单引号括起来``): create table if not exists user( id int unsigned not null auto_increment, username varchar(50) not null, password varchar(50) not null, regtime int not null, admin tinyint not null, primary key(id)); 2.创建有外键依赖的课程表: create table A ( BookID varchar(10) primary ); create table B ( BookID varchar(10), BookName varchar(81), primary (BookID,BookName), foreign (BookID) references A(BookID) ); 3.更改表结构: ALTER TABLE user ADD COLUMN score NUMERIC(4,2); 4.增加主键: ALTER TABLE user ADD CONSTRIANT sj_pk PRIMARY KEY(id,username); 5.增加外键: ALTER TABLE cars ADD CONSTRIANT sj_fk FOREIGN KEY(userid) REFERENCES user(id); 三表的增删改查CRUD 1.增: INSERT INTO user(password,username) VALUES(123,'rose') 2删: DELETE FROM user WHERE username='rose' 3改: UPDATE user set password=123 where username='rose'; 4查: SELECT * FROM `user` ORDER BY id; 空值查询: SELECT * FROM `user` WHERE username IS NULL; 句式: SELECT * FROM +WHERE +ORDER BY + GROUP BY + HAVING 四视图操作(视图中的字段就是来⾃⼀个或多个数据库中的真实的表中的字段) 1.创建视图: CREATE VIEW [Products Above Average Price] ASSELECT ProductName,UnitPriceFROM ProductsWHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products) 2.查询视图:SELECT * FROM [Category Sales For 1997]WHERE CategoryName='Beverages' 3.更新视图:SQL CREATE OR REPLACE VIEW SyntaxCREATE OR REPLACE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition 4.删除视图:SQL DROP VIEW SyntaxDROP VIEW view_name 未完待续,后续补充 分组GROUP BY;字符串处理TRIM();distinct;exits;like模糊查询,sql注⼊攻击。
互联网数据库常考设计题SQL语句考点
1.DISTINCT的语法如下:SELECTDISTINCT "栏位名" FROM "表格名"(查找的结果不重复)2.AND OR的语法:SELECT "栏位名" FROM "表格名" WHERE "简单条件" {[AND|OR] "简单条件"}+,其中AND |OR可重复使用。
例子,我们若要在Store_Information 表格中选出所有Sales 高于$1,000 或是Sales 在$500 及$275 之间的资料的话,我们就打入SELECT store_name FROMStore_Information WHERESales > 1000 OR (Sales < 500AND Sales > 275)3.IN的用法:SELECT "栏位名"FROM "表格名" WHERE "栏位名" IN ('值一', '值二', ...)例子:我们要在Store_Information 表格中找出所有含盖Los Angeles或San Diego 的资料SELECT *FROM Store_InformationWHERE store_name IN ('LosAngeles', 'San Diego')我们就得到含盖Los Angeles和san diego资料的表格。
4.BETWEEN则是让我们可以运用一个范围(range) 内抓出数据库中的值。
BETWEEN 这个子句的语法如下:SELECT "栏位名" FROM " 表格名" WHERE "栏位名" BETWEEN '值一' AND '值二'5.LIKE的语法如下:SELECT "栏位名" FROM "表格名" WHERE"栏位名" LIKE {套式}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《无线自组织网络开发与设计综合实训项目》SQL语句部分(补充内容)实训一熟悉SQL SERVER,数据定义实训一、实训目的1、利用查询分析器创建数据库2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作二、实训步骤及内容在以下实训中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生课程数据库2.创建学生关系表S:学号姓名性别年龄所在系Sno Sname Ssex Sage sdept 3.创建课程关系表C:课程号课程名先行课学分Cno Cname Cpno ccredit4.创建课程关系表SC:学号课程号成绩Sno Cno grade5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
7、删除表S的“年龄”属性列。
8、删除S姓名列的唯一值约束。
9、修改SC表成绩属性列为精确数字型。
10、在表S上,按“Sno”属性列的唯一值方式建立索引。
11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
三、实训结果:1.创建学生课程数据库create database Studend;2.创建学生关系表S:学号姓名性别年龄所在系Sno Sname Ssex Sage sdept create table S(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage smallint,Sdept char(20),);3.创建课程关系表C:课程号课程名先行课学分Cno Cname Cpno ccreditcreate table C(Cno char(4)primary key,Cname CHAR(40),Cpno char(4),Ccredit SMALLINT,);4.创建课程关系表SC:学号课程号成绩Sno Cno grade create table SC(Sno char(9),Cno char(4),Grade smallint,);5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
alter table S add Sbirthday datetime;7、删除表S的“年龄”属性列。
alter table S drop column Sage;8、删除S姓名列的唯一值约束。
alter table S drop UQ__S__7D78A4E7;9、修改SC表成绩属性列为精确数字型。
alter table SC alter column Grade int;10、在表S上,按“Sno”属性列的唯一值方式建立索引。
create unique index Stusno on S(Sno);11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
drop table SC;实训二数据更新实训一、实训目的1、熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用2、加深理解表的定义对数据更新的作用二、实训步骤及内容(一)利用查询分析器在表中插入数据打开在实训一中建立的“学生课程”数据库;在“SCDB”数据库中的student、course、sc表中插入数据;student表的内容:SNO SNAME SSEX SAGE SDEPT95001李勇男20CS95002刘晨女19IS95003王敏女18MAcourse表的内容CNO CNAME CPNO CREDIT1数据库542数学NULL23信息系统144操作系统NULL35数据处理NULL2sc表的内容SNO CNO GRADE9500119295001265950013889500229095002380(二)修改表中的数据在插入数据后的三张表S、C、SC中进行相关的更新操作:1、将student表中‘李勇’的名字改为‘李明’;2、将student表中‘王敏’的年龄改为20岁;3、将所有学生的年龄增加1岁;4、修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;5、把选修了“2”号课程,且成绩低于70分的成绩提高5%;6、将“CS”系全体学生的成绩置零;(三)删除表中的数据1、把选修了“2”号课程,且成绩低于70分的学生的成绩删除掉;2、删除学号为“95003”的相关信息;3、删除"IS"系选修了"2"号课程的选课记录;4、删除“CS”系的全体学生的选课记录;5、删除整张表的数据,注意表之间的关系,保持一致性。
三、实训结果:(一)利用查询分析器在表中插入数据打开在实训一中建立的“学生课程”数据库;在“SCDB”数据库中的student、course、sc表中插入数据;student表的内容:SNO SNAME SSEX SAGE SDEPT95001李勇男20CS95002刘晨女19IS95003王敏女18MAcourse表的内容CNO CNAME CPNO CREDIT1数据库542数学NULL23信息系统144操作系统NULL35数据处理NULL2sc表的内容SNO CNO GRADE9500119295001265950013889500229095002380insertinto S(Sno,Sname,Ssex,Sage,Sdept)values('95001','李勇','男',20,'CS');insertinto S(Sno,Sname,Ssex,Sage,Sdept)values('95002','刘晨','女',19,'IS');insertinto S(Sno,Sname,Ssex,Sage,Sdept)values('95003','王敏','男',20,'CS');select*from S;insertinto C(Cno,Cname,Cpno,Ccredit)values('1','数据库','5',4);insertinto C(Cno,Cname,Cpno,Ccredit)values('2','数学',NULL,2);insertinto C(Cno,Cname,Cpno,Ccredit)values('3','信息系统','1',4);insertinto C(Cno,Cname,Cpno,Ccredit) values('4','操作系统',NULL,3);insertinto C(Cno,Cname,Cpno,Ccredit) values('5','数据处理',NULL,2);insertinto SC(Sno,Cno,Grade)values('95001','1',92);insertinto SC(Sno,Cno,Grade)values('95001','2',65);insertinto SC(Sno,Cno,Grade)values('95001','3',88);insertinto SC(Sno,Cno,Grade)values('95002','2',90);insertinto SC(Sno,Cno,Grade)values('95002','3',80);(二)修改表中的数据在插入数据后的三张表S、C、SC中进行相关的更新操作:1、将student表中‘李勇’的名字改为‘李明’;update Sset Sname='李明'where Sno='95001';2、将student表中‘王敏’的年龄改为20岁;update Sset Sage=20where Sname='王敏';3、将所有学生的年龄增加1岁;update Sset Sage=Sage+1;4、修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;update Sset Sno='95005'where Sno='95002';5、把选修了“2”号课程,且成绩低于70分的成绩提高5%;update SCset Grade=Grade*1.05where Cno='2'and Grade<70;6、将“CS”系全体学生的成绩置零;update SCset Grade=0where'CS'=(select Sdept from S where S.Sno=SC.Sno);(三)删除表中的数据1、把选修了“2”号课程,且成绩低于70分的学生的成绩删除掉;delete from SCwhere Cno='2'and Grade<70;2、删除学号为“95003”的相关信息;delete from Swhere Sno='95003';3、删除"IS"系选修了"2"号课程的选课记录;delete from SCwhere Cno='2'and Sno in(select Sno from S where Sdept='IS');4、删除“CS”系的全体学生的选课记录;delete from SCwhere'CS'=(select Sdept from S where S.Sno=SC.Sno);5、删除整张表的数据,注意表之间的关系,保持一致性。
delete from SC;实训三数据查询实训一、实训目的熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL语句的各种形式;加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算)二、实训方法及步骤1.在表student,course,sc上进行简单查询;2.在表student,course,sc上进行连接查询;3.在表student,course,sc上进行嵌套查询;4.使用聚合函数的查询;5.对数据的分组查询;6.对数据的排序查询。