第一篇:SQL数据库编程学习应用语句大全
SQL数据库编程学习应用语句大全
1as 的用处
as可以对表和列取别名
在开发过程中经常遇到开始给某一个的字段去field1的名称,但后来有感觉field1字段指定不确切,于是又把此字段改成了field2,由于开始认为field1是常量,于是到处使用字符串field1,而且程序中又含有大量对field1的处理,此时就可以使用as
例如原来的 select field1 from tableA,改为selectfield2 asfield1 from tableA 代码基本就可以不动了。
2自增长的字段的插入
开发中经常遇到某个字段类型为IDENTITY,也就是自增长类型,但由于特殊需要,又要插入数据
需要临时去掉,可以使用如下语句set IDENTITY_INSERTtablename on,在处理完成后在使用如下语句恢复 set IDENTITY_INSERTtablenameoff
3分组取每组的前N个数据
开发中还会遇到需要对某一组数据先分组,然后取每组的前n条记录的情况
不妨试试如下代码
[sql] view plaincopy
/*
按CurrentNodeLevel列分组,每组按NodeID排序,取出每个组中的前3个元素*/
declare @temp table(NodeIDint, CurrentNodeLevelint ,rowNumberint)--定义临时表insert into @temp
selectNodeID,CurrentNodeLevel,ROW_NUMBER()
OVER(partitionby CurrentNodeLevel
order by NodeID)as rowNumber
from SchoolTerminalStruct---给临时表中插入数据
select * from @temp where rowNumber<=3--从临时表中取数据
4生成随机数
主意此方法只能写成存储过程,不能写成函数
[sql] view plaincopy
-----返回Max,Min之间的随机数不能写成函数
createproc [dbo].[getRAND]
(@Max int,--最大值
@Min int--,--最小值)
AS
BEGIN
DECLARE @result int
SELECT @result=RAND()*(@Max-@Min)+@Min
select@result
END
5把满足一定条件的数据用逗号分隔
这可能也是一个很常用的语句了,经常出现在一对多的关系中对外展示,要求把子表中的数据取出来用逗号或者其他符号分隔开
[sql] view plaincopy
/*
把满足 t2.NodeID=t1.NodeID的tableA 的字段NodeName 以逗号分隔开合并为一个字段输出
*/
select *,stuff((select ',' + t1.NodeName from tableA t1,tableB t2
wheret2.NodeID=t1.NodeID
for xml path('')), 1 , 1 , '')as text
fromtableA
6在数据库中处理异常
通过个参数附加output标志来输出参数,通过TRY,CATCH捕捉异常
[sql] view plaincopy
CREATE PROCEDURE [dbo].[sp_UpdateFunctionTree]
@nodenameint,@Result int output---2,操作失败;0操作成功
AS
BEGIN
begin
BEGIN TRY
UPDATE FunctionTree SET NodeName=@nodename
set @Result=0--操作成功
END TRY
BEGIN CATCH
set @Result=-2--操作失败
END CATCH
end
END
7查询中的条件判断
经常遇到在某些条件下应该查询这个字段,在另外一些条件下需要其他字段的情况,可以通过unoin来完成,但也可以通过CASE WHEN 完成[sql] view plaincopy
/*
在State=0 时返回field1 ,在State=1时返回 field2 ,其他时返回field3
*/
SELECT(CASE WHENState=0 THEN field1 WHENState=1 THEN field2
ELSE field3 END)as State
FROM tablename
8单引号的处理
在包含单引号时应该使用两个单引号转义
[sql] view plaincopy
dbo.sp_executesql @statement = N' select indexID,Sex=(case when Sex=0then ''男'' else ''女'' end)
fromtablename '
9使用游标
[sql] view plaincopy
declare @temp table(TaskIDint ,NodeIdint)--声明临时表
insert into @temp select A.TaskID ,A.NodeIdfrom tableAA,tableB B
whereA.TaskID=B.TaskID--//--给声明的临时表中插入记录
DECLARE tnames_cursor CURSORLOCAL FORWARD_ONLY READ_ONLY--声明游标
FOR select TaskID,NodeId from @temp;--游标需要用到的列
open tnames_cursor--打开游标
DECLARE @TaskIDint,@NodeIdint;--声明变量
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId--移动游标给变量赋值,应该与游标需要用到的列一一对应,顺序类型应该一致
WHILE(@@FETCH_STATUS = 0)--循环
BEGIN
BEGIN
exec TaskType @TaskID,@NodeId--调用存储过程
END
FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId ,@TaskRunCYCType--移动游标给变量赋值 应该与游标需要用到的列一一对应,顺序类型应该一致
END
CLOSE tnames_cursor--关闭游标
DEALLOCATE tnames_cursor--释放游标
10合并更新和插入
在开发中大部分情况下,插入和更新传递的参数基本上是一样,那为什么不合并呢
[sql] view plaincopy
createproc [dbo].[Save_TableName]
(@field1 varchar(50),@field2varchar(200),@ID int,@insertOrUpdate--小于0插入 大于0更新)
as
begin
if(@insertOrUpdate<0)
begin
INSERT INTOTableName(field1,field2,ID)
values(@field1,@field2,@ID);
end
else
begin
UPDATE TableNameSET field1= @field1, field2 = @field2
where ID =@ID;
end
end
11定义函数
在没有满足要求的情况时,可以定义函数,但是使用自己定义的函数时需要加上架构名称
[sql] view plaincopy
create FUNCTION [dbo].[CheckTime]
(@startTimedatetime,@endTimedatetime--,)
RETURNSint
AS
BEGIN
DECLARE @result int
SET@result=DATEDIFF(hour, @startTime, @endTime)--
if(@result=0)--小时相同 比较分钟
begin
SET@result=DATEDIFF(minute, @startTime, @endTime)
if(@result=0)--分钟相同比较秒
begin
SET@result=DATEDIFF(second, @startTime, @endTime)
end
end
RETURN @result
END
调用此函数
[sql] view plaincopy
dbo.CheckTime(@startTime1, @startTime2)--需要加上架构名称
12递归读取数据
在实际的应用中经常遇到树结构的表,但读取会比较麻烦,这里提够一个函数
[sql] view plaincopy
/*
函数 返回表,返回给定节点的所有子孙节点,而不仅仅是子节点
*/
Create Function [dbo].[GetChildren](@NodeIDInt)
Returns @Tree Table(NodeIDInt, NodeNameVarchar(50), ParentIDInt)
As
Begin
Insert @Tree Select NodeID, NodeName, ParentIDFromTreetable Where ParentID = @NodeID
While @@Rowcount> 0
Insert @Tree Select A.NodeID, A.NodeName, A.ParentID
From Treetable A
Inner Join @Tree B
On A.ParentID = B.NodeIDAndA.NodeID Not In(Select NodeID From @Tree)Return
End
13通过默认值实现存储过程重载
存储过程可以使用默认值,估计都知道,但以此就可以实现类似函数重载的效果
例如,如下的存储过程由于使用了默认值,就可以不传递参数,传递一个参数,两个,三个,[sql] view plaincopy
CREATE PROCEDURE dbo.my_proc
@firstint = NULL,--NULL default value
@secondint = 2,--Default value of 2
@thirdint = 3--Default value of 3
AS SELECT @first, @second, @third;
14在数据库中拼字符串,也可以用参数
在实际的开发中,某些情况下在数据库中拼字符串不可避免,但又担心有特殊字符,导致拼出来的SQL有问题,其实数据库中拼字符串也可以使用参数,这就要用到dbo.sp_executesql,这样就可以避免SQL注入和特殊字符导致的错误
如
[sql] view plaincopy
DECLARE @IntVariable INT;--定义变量
DECLARE @SQLString NVARCHAR(500);--存储拼出来的SQL
DECLARE @ParmDefinition NVARCHAR(500);---存储拼出来的SQL中的参数
/* Build the SQL string one time.*/
SET @SQLString =
N'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID';/* Specify the parameter format one time.*/
SET @ParmDefinition = N'@SalesIDint';--赋值
/* Execute the string with the first parameter value.*/
SET @IntVariable = 275;--赋值
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
/* Execute the same string with the second parameter value.*/
SET @IntVariable = 276;
EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;
16触发器需要注意的问题
在使用触发器时有一个问题,或许很少有人注意到,一条更新语句一次更新了十条记录,会触发几次触发器?只有一次!很奇怪,但却是事实,所以这需要注意,一不小心就会把好
多数据漏了
第二篇:数据库SQL语句十题
作业十题
1.查询所有学生的基本信息,并按学号降序排列
SELECT * FROM STUDENT
ORDER BY sno DESC;
2.查询系别代码为“02”的女同学信息
SELECT * FROM STUDENT
WHERE ssex=’女’ and sdept=‘02’;
3.查询学生的总人数
SELECT COUNT(*)AS 学生总人数
FROM STUDENT;
4.所有选修课学生的姓名,课程名及成绩
SELECT sname,cname,grade
FROM STUDENT,COURSE,SC
WHERE STUDENT.sno=SC.sno and COURSE.cno=SC.cno;
5.不及格学生姓名(合并重复项)
SELECT distinct sname
FROM SC,STUDENT
WHERE grade<=60 and STUDENT.sno=SC.sno;
6.查询学号为“011110”的学生的哪些课程的成绩比他数据库的成绩要高 SELECT cno
FROM COURSE
WHERE sno=’011110’ and grade>(SELECT grade FROM COURSE,SC
WHERE cname=’数据库’ and sno=‘011110’ and
COURSE.cno=SC.cno);
7.查询选修课在3门以上(包括3门)的学生学号及选课门数 SELECT sno,COUNT(*)AS 选修门数
FROM SC
GROUP BY sno HAVING COUNT(*)>=3;
8.查询学号为“011110”的学生的平均成绩,并以平均成绩命名 SELECT AVG(grade)AS average grade
FROM SC
WHERE sno=’011110’;
9.查询计算机系或英语系的所有学生的个人信息
SELECT*FROM STUDENT
WHERE sdeptIN(SELECT sdept FROM DEPT
WHERE sdname=’计算机系’OR sdname=’英语系’);
10.查询与“罗宇波”同一个系的学生情况
SELECT * FROM STUDENT
WHERE sdept=(SELECT sdept FROM STUDENT
WHERE sname=’罗宇波’);
第三篇:sql语句学习
一、选择题
1、SQL语言是()语言。——(SQL特点)(易)
A)层次数据库 B)网络数据库 C)关系数据库D)非数据库
答案:C2、SQL语言具有两种使用方式,分别称为交互式SQL和()。
——(SQL语言使用方式)(易)
A)提示式SQLB)多用户SQLC)嵌入式SQLD)解释式SQL
答案:C
3-4-5()包括数据库模式定义和数据库存储结构与存取方法定义。()实现对DB的操作,包括查询、插入、删除、修改数据库中的数据。()用于数据保护,包括数据的安全性,完整性,并发控制和恢复等。——(数据库语言DDLDMLDCL)(中)
A)数据控制子语言 B)数据定义子语言 C)数据操纵子语言 D)数据库语言
答案:B C A
6-7-8-9-
10、下列SQL语句中,实现数据检索的语句是(),修改表结构的是(),修改属性值的是(),删除表结构的是(),删除表记录的是()。
——(DROP TABLE, ALTER TABLE,UPDATE, DELETE,SELECT 语句)(易)
A)SELECTB)DROPC)UPDATED)ALTERE)DELETE
答案:A D C B E
二、用关系代数表达式及SQL语句描述关系查询
1、设有如下关系表R、S和T:——(易)R(BH,XM,XB,DWH)
S(DWH,DWM)
T(BH,XM,XB,DWH)
写出实现下列关系代数的SQL语句:
1)DWH'100'(R)σDWH=’100’(R)
2)XM,XB(R)∏xM,XB(R)
3)XM,DWH(
4)RS R∞S
5)XM,XB,DWH(
解:
1)SELECT * FROM R WHERE DWH=’100’;
2)SELECT XM,XB FROM R;
3)SELECT XM,DWH FROM R WHERE XB=’女’;
4)SELECT R.*,S.DWM FROM R, S WHERE R.DWH=S.DWH;
5)SELECT XM,XB,DWH FROM R,S WHERE R.DWH=S.DWH AND XB=’男’;XB'男'XB'女'(R))∏XM,DWH(σXB=’女’(R))(RS))∏XM,XB,DWH(σXB=’男’(R∞S))
2、设有如下三个关系:——(易-易)
A(A#,ANAME,WQTY,CITY): A#:商店代号;ANAME:商店名;WQTY:店员人数
B(B#,BNAME,PRICE):B#:商品号;BNAME:商品名称;
AB(A#,B#,QTY):QTY:商品数量
试用关系代数和SQL语言写出下列查询。
1)找出店员人数不超过100人或者在长沙市的所有商店的代号和商店名;
2)找出供应书包的商店名;
解:
1)A#,ANAME(WQTY100 CITY'长沙'(A))∏A#,ANAME(σWQTY<=100ⅤCITY=’长沙’(A))
SELECT A#,ANAME FROM A WHERE WQTY<=100 OR CITY=’长沙’;
2)ANAME((BNAME'书包'(B))ABA)∏ANAME((σBNAME=’书包’(B))∞AB∞(A))
SELECT ANAME FROM A,B,AB
WHERE BNAME=’书包’ AND B.B#=AB.B# AND AB.A#=A.A#;
3.设有如下关系模式:
student(NO, NAME , SEX ,BIRTHDAY, CLASS)
teacher(NO,NAME,SEX,BIRTHDAY,PROF,DEPART)PROF为职称,DEPART为系别
course(CNO, CNAME, TNO)
score(NO, CNO, DEGREE)DEGREE 为成绩
写出实现以下各题功能的SQL语句:
(1)查询至少有2名男生的班号;——(难)
(2)查询不姓“王”的同学记录;——(易)
(3)查询每个学生的姓名和年龄;——(难)
(4)查询学生中最大和最小的birthday日期值;——(中)
(5)查询学生表的全部记录并按班号和年龄从大到小的顺序;——(中)
(6)查询男教师及其所上的课程;——(中)
(7)查询最高分同学的学号,课程号和成绩;——(中)
(8)查询和“李军”同性别并同班的所有同学的姓名;——(中)
(9)查询选修“数据库系统概论”课程的男同学的成绩表;——(中)
(10)查询所有未讲课的教师的姓名和所在系别;——(难)
(11)查询“计算机系”教师所教课程的成绩表;——(难)
(12)查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录;——(难)
(13)查询最低分大于70,最高分小于90的学生的学号;——(中)
(14)查询成绩在60到80之间的所有记录;——(中)
(15)查询成绩比该课程平均成绩低的同学的成绩表;——(相关子查询)(难)
(16)查询所有女教师和女同学的姓名、性别和生日;——(中)
(17)查询“计算机系”和“无线电系”不同职称的教师的姓名和职称;——(中)
解:(1)SELECT CLASS FROM student WHERE SEX=‘男’
GROUP BY CLASS HAVING COUNT(*)>=2;
(2)SELECT * FROM student WHERE NAME NOT LIKE ‘王%’;
(3)SELECT NAME,year(date())-year(birthday)as age FROM student;
(4)SELECT MAX(BIRTHDAY), MIN(BIRTHDAY)FROM student;
(5)SELECT * FROM student ORDER BY CLASS,BIRTHDAY DESC;
(6)SELECT x.name, y.cname FROM teacher x, course y WHERE x.no=y.tno and x.sex=’男’;
(7)SELECT * FROM score WHERE degree=(SELECT max(degree)FROM score);
(8)SELECT name FROM student WHERE sex=(SELECT sex FROM student WHEREname=’
李军’)and class=(SELECT class FROM student WHERE name=’李军’);
(9)SELECT * FROM score WHERE no IN(SELECT no FROM student WHERE sex=‘男’)and
cno=(SELECT cno FROM course WHERE cname=‘数据库系统概论’);
(10)SELECT name, depart FROM teacher t WHERE NOT EXIST(SELECT * FROM course c
WHERE c.tno=t.no);
(11)SELECT * FROM score s, teacher t, course c WHERE t.depart=’计算机系’ and t.no=c.tno
and c.cno=score.cno;
(12)SELECT * FROM student s, score sc WHERE s.no=sc.no and cno=’3-105’ and
degree>(SELECT degree FROMsc WHERE no=’109’ and cno=’3-105’);
(13)SELECT no FROM score GROUP BY no HAVING min(degree)>70 and max(degree)<90;
(14)SELECT * FROM score WHERE degree BETWEEN 60 AND 80;
(15)SELECT * FROM score a WHERE degree <(SELECT avg(degree)FROM score b WHERE b.cno=a.cno group by b.cno);
(16)SELECT name, sex, birthday FROM teacher WHERE sex=‘女’UNION SELECT name, sex,birthday FROM student WHERE sex=‘女’;
(17)SELECT name, prof FROM teacher WHERE depart=’计算机系’ OR depart=’无线电系’
order by prof;
4、设有图书登记表TS,具有属性:BNO(图书编号),BC(图书类别),BNA(书名),AU(著者),PUB(出版社)。按下列要求用SQL语言进行设计。——(易)
1)按图书馆编号BNO建立TS表的索引ITS;
2)查询按出版社统计其出版图书总数。
3)删除索引。
解:1)CREATE INDEX ITSON TS(BNO);
2)SELECT PUB,COUNT(BNO)FROM TS GROUP BY PUB;
3)DROP INDEXITS;
5、已知三个关系R、S和T——(中)
R(A,B,C)S(A,D,E)T(D,F)
试用SQL语句实现如下操作:
1)R、S和T三个关系按关联属性建立一个视图R-S-T;
2)对视图R-S-T按属性A分组后,求属性C和E的平均值。
解:1)CREATE VIEW R-S-T(A,B,C,D,E,F)AS
SELECT R.A , B, C ,S.D, E, F FROM R, S, T
WHERE R.A=S.A AND S.D=T.D;
2)SELECT AVG(C), AVG(E)FROM R-S-T GOUPY BY A;
6、设有学生表S(SNO, SN)(SNO为学生号,SN为姓名)和学生选修课程表SC(SNO,CNO,CN,G)
(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各题:——(易)
a)建立一个视图V-SSC(SNO, SN, CNO, CN, G);
b)从视图V-SSC上查询平均成绩在90分以上的SN, CN 和G。
解:
1)CREATE VIEW V-SSC(SNO , SN, CNO, CN, G)AS
SELECT S.SNO, SN, CNO, CN, GFROM S, SC WHERE S.SNO=SC.SNO
2)SELECT SN, CN, G FROM V-SSC GROUP BY SNO HAVING AVG(G)>907、设有关系模式: 其中SB表示供应商,SN为供应商号,SNAME为供应商名字,CITY
为供应商所在城市; PB(PN, PNAME, COLOR, WEIGHT)其中PB表示零件,PN为零件代号,PANME为零件名
字,COLOR为零件颜色,WEIGHT为零件重量; JB(JN, JNAME, CITY)其中JB表示工程,JN为工程编号,JNAME为工程名字,CITY为工
程所在城市;
SPJB()其中SPJB表示供应关系,QTY表示提供的零件数量。
写出实现以下各题功能的SQL语句:
(1)取出所有工程的全部细节;——(易)
(2)取出所在城市为上海的所有工程的全部细节;——(易)
(3)取出重量最轻的零件代号;——(难)
(4)取出为工程J1提供零件的供应商代号;——(易)
(5)取出为工程J1提供零件P1的供应商代号;——(易)
(6)取出由供应商S1提供零件的工程名称;——(易)
(7)取出供应商S1提供的零件的颜色;——(易)
(8)取出为工程J1或J2提供零件的供应商代号;——(中)
(9)取出为工程J1提供红色零件的供应商代号;——(易)
(10)取出为所在城市为上海的工程提供零件的供应商代号;——(易)
(11)取出为所在城市为上海或北京的工程提供红色零件的供应商代号;——(中)
(12)取出供应商与工程所在城市相同的供应商提供的零件代号;——(中)
(13)取出上海的供应商提供给上海的任一工程的零件的代号;——(难)
(14)取出至少有一个和工程不在同一城市的供应商提供零件的工程代号;——(难)
(15)取出上海供应商不提供任何零件的工程的代号;——(难)
(16)取出这样一些供应商代号,它们能够提供至少一种由红色零件的供应商提供的零件;
——(难)
(17)取出由供应商S1提供零件的工程的代号;——(易)
(18)取出所有这样的一些 市的工程提供零件;——(难) (19)取出所有这样的三元组 市的工程提供指定的零件;——(难) (20)重复(19)题,但不检索两个CITY值相同的三元组。——(难) 解: (1)SELECT * FROM JB; (2)SELECT * FROM JB WHERE CITY=‘上海’; (3)SELECT PN FROM PB WHERE WEIGHT=(SELECT MIN(WEIGHT)FROM PB); (4)SELECT SN FORM SPJB WHERE JN=‘J1’; (5)SELECT SN FORM SPJB WHERE JN=‘J1’AND PN=‘P1’; (6)SELECT JNAME FROM JB,SPJB WHERE SN=‘S1’AND SPJB.JN=JB.JN; (7)SELECT DISTINCT COLOR FROM PB,SPJB WHERE SN=‘S1’AND SPJB.JN=JB.JN' (8)SELECT SN FROM SPJB WHERE JN IN {J1, J2}; 或者 SELECT SN FROM SPJB WHERE JN=’J1’ OR JN=’J2’; (9)SELECT SN FROM SPJB,PB WHERE COLOR=‘红色’AND PB.PN=SPJB.PN AND JN=’J1’; (10)SELECT DISTINCT SN FROM SPJB,JB WHERE CITY=‘上海’AND JB.JN=SPJB.JN; (11)SELECT SN FROM PB, JB, SPJB WHERE COLOR=‘红色’AND CITY IN {‘上海’,‘北京’} AND PB.PN=SPJB.PN AND JB.JN=SPJB.JN; (12)SELECT PN FROM SB, JB , SPJB WEHRE SB.CITY=JB.CITY AND SB.SN=SPJB.SN AND JB.JN=SPJB.JN; (13)SELECT PN FROM SB, SPJB, JB WEHRE SB.CITY=‘上海’AND JB.CITY=‘上海’ AND SB.SN=SPJB.SN AND JB.JN=SPJB.JN; (14)SELECT JN FROM JB WHERE EXISTS(SELECT * FROM SB WHERE EXISTS(SELECT * FROM SPJB WHERE SB.CITY<>JB.CITY AND SPJB.SN= SB.SN AND SPJB.JN= JB.JN)); (15)SELECT DISTINCT JN FROM SPJB WHERE JN NOT IN(SELECT DISTINCT SPJB.JN FROM SB,SPJB WHERE SB.SN=SPJB.SN AND SB.CITY=‘上海’); (16)SELECT DISTINCT SPJB.SN FROM SB,SPJB WHERE SPJB.PN IN(SELECT SPJB.PN FROM SPJB,PB WHEREPB.PN=SPJB.PN AND PB.COLOR=‘红色’; (17)SELECTJN FROM SPJB WHERE SN=’S1’; (18)SELECT DINSINCT SB.CITY , JB.CITY FROM SB, JB, SPJB WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.SN; (19)SELECT SB.CITY, SPJB.PN, JB.CITY FROM SB,JB,SPJB WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN; (20)SELECT DISTINCT SB.CITY, SPJB.PN, JB.CITY FROM SB,JB,SPJB WHERE SB.SN=SPJB.SN AND JB.JN=SPJB.JN AND SB.CITY<>JB.CITY; 8、设有如下关系模式:——(中) 图书关系B(图书编号B#,图书名T,作者A,出版社P); 读者关系R(借书证号C#,读者名N,读者地址D); 借阅关系L(C#,B#,借书日期E,还书标志BZ); BZ=‘1’表示已还; BZ=‘0’ 表示未还; 写出实现以下各题功能的SQL语句: (1)查询“工业出版社”出版的图书名 (2)将书号为B5的图书的出版社改为“工业出版社” (3)查询99年12月31日以前借书未还的读者名与书名 (4)查所借的书包含借书证号为C1的读者借出未还的所有书的读者名与借书证号。 (5)删去“工业出版社”出版的所有图书及相关的借阅信息。 解: (1)SelectTfromBWhereP = ’工业出版社’ (2)UpdateBSetP=’工业出版社’ WhereB# = ’B5’ (3)SelectN , TFrom B, R , L WhereE <’99/12/31’ AND BZ=’0’ AND L.C#=R.C# AND L.B#=B.B# (4)select N,C# from R where not exists (select * from LL1 where L1.C#=’c1’ and BZ=‘0’ andnot exists (select * from L L2 where L2.c#=R.c# and L2.B#=L1.B#)) (6)Delete from LWhere B#IN(Select B#From B Where P=’工业出版社’); Delete from B Where P=’工业出版社’; 1.Select * from student查询所有原始记录 2.Select StudentID, StudentName from student 只查询学号和姓名 3.Select StudentID as 学号, StudentName as 姓名, Sex as 性别,Class as 班级,NormalScore as平时成绩,ExperimentScore as 实验成绩, ExaminationScore as 考试成绩 from student 4.Select * from student where sex=’男’只需要查看男生的成绩 5.Select * from student where NormalScore>80只需要查看平时成绩大于80分的记录 6.Select * from student where studentname like ‘陈%’查询姓陈的同学的记录 7.Select * from student order by examinationScore根据考试成绩排序 8.Select * from student order by examinationScore排序---降序 9.Select Sum(examinationScore)as 总成绩 from student求总成绩 10.Select Avg(examinationScore)as平均成绩 from student求平均成绩 11.Select count(*)as 总记录数 from student求总记录数 12.Select Max(ExaminationScore)as 最高分 from student求最高分 13.Select Min(ExaminationScore)as 最高低分 from student求最低分 14.Select Class as 班级, Avg(ExaminationScore)as平均成绩 from student group by class各班级成绩的分类汇总 Public Class frmMain Private ObjCnn As New OleDbConnection Private ObjCmd As OleDbCommand Private StrDir As String = “D:MIS1025StudentMgr.accdb” Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Load ObjCnn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & StrDir ObjCnn.Open() ObjCmd = New OleDbCommand ObjCmd.Connection = ObjCnn End Sub Private Sub FindRecord(ByVal StrSQL As String) ObjCmd.CommandText = StrSQL Dim rd As OleDbDataReader = ObjCmd.ExecuteReader Dim tbl As New DataTable tbl.Load(rd) DataGridView1.DataSource = tbl End Sub Private Sub CmdFind_Click(ByVal sender As System.Object,System.EventArgs)Handles CmdFind.Click FindRecord(txtSQL.Text) End Sub ByVal e As 《SQL Server数据库及应用》课程教学 大纲 一、课程的性质与任务 本课程是计算机相关专业一门重要的专业技术课。通过本课程的学习,应使学生从理论和实践上掌握数据库开发技巧,选择前端开发环境与后端SQL Server数据库系统的集成,使学生在数据库开发应用方面能提出正确的解决方案。 二、课程教学目标 (一)知识目标 1.SQL Server 2012涉及的概念和范围较多较广,因此要强调基本概念和基本操作,从更多的实践环节中理解SQL Server 2012的体系和特点。2.课程应注重Transact-SQL的教学和实践,在掌握SQL Server图形管理工具的同时,加强isql/osql公用程序的使用。3.本课程综合性较高,教学中可酌情安排一定时数的课程设计(结合前端开发工具),使学生对于SQL Server及其它数据库有更全面的理解。 (二)能力目标 培养学生具备数据库应用程序开发能力,能够根据实际需要自行开发以SQL Server 2012为后台的Windows数据库应用程序,具有分析和调试程序的能力。 (三)德育目标 将德育教育寓于专业知识的教学中,教育学生热爱生活、热爱学习、热爱自己的专业,刻苦学习,学风严谨,使学生养成理论联系实际的良好习惯。 三、课程内容及教学要求 (一)SQL Server概述 1.教学内容:(1)数据库的基本概念(2)SQL语言的特点 (3)Microsoft SQL Server的特点 2.教学要求: 掌握Microsoft SQL Server的结构、功能和性能特点;理解SQL语言的特点;了解数据库的基本概念、SQL Serve的演变过程。 (二)安装SQL Server 2012系统 1.教学内容: (1)安装预准备工作 (2)Microsoft SQL Server 2012的安装过程(3)验证系统是否按装成功 2.教学要求: 掌握Microsoft SQL Server安装的软、硬件要求及安装过程;了解 SQL Serve的版本类型。 (三)注册和配置服务器 1.教学内容:(1)注册服务器(2)配置服务器 2.教学要求: 掌握注册和配置服务器的各种方法和技术;了解注册和配置服务器的作用。 (四)SQL Server的安全管理 1.教学内容: (1)认证模式和认证进程(2)管理登录账号 (3)管理数据库用户账号(4)管理角色(5)管理许可 2.教学要求: 掌握设置认证模式技术、管理惧色、许可技术;理解数据库安全模式、认证模式及账号管理;了解许可类型。 (五)管理数据库 1.教学内容 (1)数据库对象(2)创建、删除、修改数据库(3)设置数据库选项 2.教学要求: 掌握数据库的基本操作和属性技术;了解数据库的基本概念。 (六)管理表 1.教学内容: (1)表的基本概念和特点(2)数据类型(3)管理表 2.教学要求: 掌握表的基本概念和系统数据类型,表的基本操作;了解自定义数据类型。 (七)操纵表中的数据 1.教学内容: (1)插入、修改和删除数据(2)检索表中的数据(3)高级检索技术 2.教学要求: 掌握表数据的基本操作及各种检索技术。 (八)索引 1.教学内容: (1)索引的类型和访问数据的方式(2)创建索引技术(3)维护索引 2.教学要求: 掌握创建、维护索引技术;理解索引的类型;了解索引的作用。 (九)数据库的备份和恢复 1.教学内容:(1)备份技术(2)恢复技术 2.教学要求: 掌握备份操作和恢复操作技术;了解备份和恢复的概念和作用; (十)视图、存储过程和触发器 1.教学内容:(1)视图(2)存储过程(3)触发器 2.教学要求: 掌握创建、修改和使用视图技术,创建触发器技术;了解视图的概念和特点,触发器的特点和作用。 (十一)Transact-SQL语言 1.教学内容: (1)Transact-SQL语言的特点(2)Transact-SQL语言的组成元素(3)执行Transact-SQL语句的工具 2.教学要求: 掌握使用数据控制、定义和操作语言及T-SQL语句;了解Transact-SQL语言的特点。 (十二)SQL Server的并发性 1.教学内容: (1)并发性的概念(2)事务(3)使用锁 2.教学要求: 掌握事务管理和锁技术;理解锁的作用;了解并发性的概念。 (十三)数据互操作性技术 1.教学内容: (1)数据互操作性技术工具(2)数据转换服务 2.教学要求: 掌握使用DTS工具;理解DTS工具的特点;了解数据互操作性技术的概念。 (十四)数据完整性 1.教学内容: (1)数据完整性的概念(2)约束管理(3)缺省管理(4)规则管理 (5)完整性技术比较研究 2.教学要求: 掌握如何选择数据完整性的方法,对象管理技术;了解数据完整性的概念和类型。 (十五)数据复制 1.教学内容: (1)数据复制的特点 (2)复制代理、复制类型和模型(3)建立数据复制的各种技术(4)在异构环境中复制数据(5)监视和维护复制 2.教学要求: 掌握建立数据复制的各种技术和复制代理、复制类型和模型;了解数据复制的概念和特点。 (十六)管理作业和警报 1.教学内容: (1)管理作业技术(2)管理警报技术(3)故障诊断 2.教学要求: 掌握作业管理、警报管理和故障诊断技术;了解任务自动化的原因。 (十七)性能监测和调整 1.教学内容: (1)SQL Profiler(2)性能监视器 2.教学要求: 掌握使用SQL Profiler工具监视性能即T-SQL语句监视系统性能;了解影响系统性能的因素和监测工具。 (十八)向导和工具 1.教学内容: (1)服务器注册向导(2)数据库类向导工具(3)系统管理类向导(4)数据转换服务向导工具(5)复制类向导工具 2.教学要求: 掌握数据库各类向导工具的用法;了解向导工具的分类。 (十九)管理ODBC数据源 1.教学内容:(1)ODBC技术 (2)配置ODBC数据源 2.教学要求: 掌握创建和配置ODBC数据源的过程;了解ODBC的概念和特点。 四、课时分配 课 时 分 配 总学时 授课时数 上机时数 (一)SQL Server概述 2 2 (二)安装SQL Server 2012系统 4 2 2(三)注册和配置服务器 2 1 1(四)SQL Server的安全管理 2 1 1(五)管理数据库 2 1 1(六)管理表 2 1 1(七)操纵表中的数据 2 1 1(八)索引 4 2 2(九)数据库的备份和恢复 2 1 1(十)视图、存储过程和触发器 14 10 4(十一)Transact-SQL语言 12 8 4(十二)SQL Server的并发性 2 1 1(十三)数据互操作性技术 4 2 2(十四)数据完整性 4 1 1(十五)数据复制 2 1 1(十六)管理作业和警报 2 1 1(十七)性能监测和调整 2 1 1(十八)向导和工具 2 1 1(十九)管理ODBC数据源 2 1 1 机 动 4 0 合 计 45 27 序号 教 学 内 容 五、实践环节 1.实验(25学时,包含在上机时间内),可根据授课内容安排,建议项目:创建和使用数据库;创建和使用表;Transact-SQL;索引;视图;数据库完整性;存储过程;触发器;SQL Server的安全管理;数据备份与还原;数据转换;用ADO操作SQL Server数据库;VB的数据环境和数据报表;数据库系统设计实例。2.综合性大作业,可根据实际课时安排在实训内容来进行,建议1~2次。 六、大纲说明 1.本大纲适用于三年制高职高专计算机各专业使用。 2.本课程与其它编程语言课程是相辅相成的,并且作为程序设计的提高课程,应在《程序设计基础》之后开设。 3.考核方式:平时考核占40%,期末考核占60%。考核及格后获得3学分。4.参考教材:《SQL Server 2012数据库及应用》 徐人凤、曾建华编著高等教育出版社。第四篇:VB数据库SQL语句学习
第五篇:SQL Server数据库及应用教学大纲