VB数据库SQL语句学习(精选多篇)

时间:2019-05-12 22:28:25下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《VB数据库SQL语句学习》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《VB数据库SQL语句学习》。

第一篇:VB数据库SQL语句学习

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语句十题

作业十题

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数据库编程学习应用语句

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、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)RS 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))(RS))∏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(WQTY100  CITY'长沙'(A))∏A#,ANAME(σWQTY<=100ⅤCITY=’长沙’(A))

SELECT A#,ANAME FROM A WHERE WQTY<=100 OR CITY=’长沙’;

2)ANAME((BNAME'书包'(B))ABA)∏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=’工业出版社’;

第五篇:sql语句学习_经典_推荐

sql语句学习

 数据定义语言(DDL):

1)创建数据库(create):create database database-name;

eg.create database test;

2)删除数据库:drop database dbname;

eg.drop database test;

3)创建新表:create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..);

eg.根据已有的表创建新表的例子:create table tab_new like tab_old;create table tab_new as select col1,col2… from tab_old definition only;

4)删除表:drop table tabname;

5)增加列:alter table tabname add column col type;

6)添加主键: alter table tabname add primary key(col);

7)删除主键:alter table tabname drop primary key(col);

8)创建索引:create [unique] index idxname on tabname(col….);

9)删除索引:drop index idxname;注:索引是不可更改的,想更改必须删除重新建;

10)创建视图:create view viewname as select statement;

2.数据操纵语言(DML)

1)查询语句(select)

eg1.select * from table1 where field1 like '%value1%';

eg2.select * from table1 order by field1,field2 [desc];

eg3.select count as totalcount from table1;

eg4.select sum(field1)as sumvalue from table1;

eg5.select avg(field1)as avgvalue from table1;

eg6.select max(field1)as maxvalue from table1;

eg7.select min(field1)as minvalue from table1;

eg8.select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c;(注:此为左外连接,结果集中包括连接表的匹配行,也包括左连接表的所有行)

2)插入语句(insert)

insert into table1(field1,field2)values(value1,value2);

3)删除语句(delete)

delete from table1 where 范围;

4)更新语句(update)

update table1 set field1=value1 where 范围;

3.数据控制语言(DCL)

1)授予权限语句(GRANT)

GRANT privileges(columns)ON what TO user IDENTIFIED BY “password” WITH GRANT OPTION;

其中:privileges可为如下限定符:ALTER 修改表和索引、CREATE(创建数据库和表)、DELETE(删除表中已有的记录)、DROP(删除数据库和表)、INDEX(创建或删除索引)、INSERT(向表中插入新行)、REFERENCE(未用)、SELECT(检索表中的记录)、UPDATE(修改现存表记录)、FILE(读或写服务器上的文件)、PROCESS(查看服务器中执行的线程信息或杀死线程)、RELOAD(重载授权表或清空日志、主机缓存或表缓存)、SHUTDOWN(关闭服务器)、ALL 所

有;ALL PRIVILEGES同义词、USAGE(特殊的“无权限”权限)

columns:权限运用的列,它是可选的,并且你只能设置列特定的权限。如果命令有多于一个列,应该用逗号分开它们;

what:权限运用的级别。权限可以是全局的(适用于所有数据库和所有表)、特定数据库(适用于一个数据库中的所有表)或特定表的。可以通过指定一个columns字句是权限是列特定的。

user :权限授予的用户,它由一个用户名和主机名组成。MySQL中的一个用户名就?悄懔臃衿魇敝付ǖ挠没?该名字不必与你的Unix登录名或Windows名联系起来。缺省地,如果你不明确指定一个名字,客户程序将使用

你的登录名作为MySQL用户名。这只是一个约定。你可以在授权表中将该名字改为nobody,然后以nobody连接

执行需要超级用户权限的操作。

password:赋予用户的口令,它是可选的。如果你对新用户没有指定IDENTIFIED BY子句,该用户不赋给口令(不安全)。对现有用户,任何你指定的口令将代替老口令。如果你不指定口令,老口令保持不变,当你用IDENTIFIED BY

时,口令字符串用改用口令的字面含义,GRANT将为你编码口令,不要象你用SET PASSWORD 那样使用password()

函数。

WITH GRANT OPTION子句是可选的。如果你包含它,用户可以授予权限通过GRANT语句授权给其它用户。你可以用该子句给与其它用户授权的能力。

用户名、口令、数据库和表名在授权表记录中是大小写敏感的,主机名和列名不是。

eg1.创建一个超级用户test1

grant all privilleges on *.* to test1@localhost identified by '123456' with grant option;eg2.创建一个只能查询的用户 test2

mysql> grant select on *.* to test2@localhost identified by '9876543';

2)撤权并删除用户(revoke)

要取消一个用户的权限,使用REVOKE语句。REVOKE的语法非常类似于GRANT语句,除了TO用FROM取代并且没有INDETIFED BY和WITH GRANT OPTION子句:

revoke privileges(columns)ON what FROM user

user部分必须匹配原来GRANT语句的你想撤权的用户的user部分。privileges部分不需匹配,你可以用GRANT

语句授权,然后用REVOKE语句只撤销部分权限。REVOKE语句只删除权限,而不删除用户。即使你撤销了所有

权限,在user表中的用户记录依然保留,这意味着用户仍然可以连接服务器。要完全删除一个用户,你必须

用一条DELETE语句明确从user表中删除用户记录:

#mysql-u root mysql

DELETE FROM user WHERE User=“user_name” and Host=“host_name”;

FLUSH PRIVILEGES;

DELETE语句删除用户记录,而FLUSH语句告诉服务器重载授权表。(当你使用GRANT和REVOKE语句时,表自动重载,而你直接修改授权表时不是。)

eg.删除用户test1

revoke all on *.* from;

use mysql;

delete from user where user='test' and host='localhost';flush privileges;

3)提交语句(commit)

4)回滚语句(rollback)

下载VB数据库SQL语句学习(精选多篇)word格式文档
下载VB数据库SQL语句学习(精选多篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    SQL简单语句小结 数据库菜鸟不可不看

    数据库菜鸟不可不看简单SQL语句小结为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。 1.在查询结果中显示......

    sql常用语句

    //创建临时表空间create temporary tablespace test_temp tempfile 'E:oracleproduct10.2.0oradatatestservertest_temp01.dbf'size 32m autoextend on next 32m maxs......

    SQL语句大全

    SQL练习一、 设有如下的关系模式, 试用SQL语句完成以下操作: 学生(学号,姓名,性别,年龄,所在系) 课程(课程号,课程名,学分,学期,学时) 选课(学号,课程号,成绩) 1. 求选修了课程号为“C2”......

    SQL语句

    SQL语句,用友的SQL2000,通过查询管理器写的语句 1、查询 2、修改 3、删除 4、插入表名:users 包含字段:id,sname,sage 查询 select * from users查询users表中所有数据 select i......

    常用SQL语句

    一、创建数据库 create database 数据库名 on( name='数据库名_data', size='数据库文件大小', maxsize='数据库文件最大值', filegrowth=5%,//数据库文件的增长率 filename......

    sql语句

    简单基本的sql语句 几个简单的基本的sql语句 选择:select * from table1 where范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1......

    常用sql语句

    1、查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d......

    SQL数据库心得

    黄淮学院 2015--- 2016学年第 一 学期 《C#数据库应用程序开发技术与案例教程》课程 题目:学习报告 院系:数学科学系 专业:数学与应用数学 年级:1301B 姓名:曹占营 学号:1331110......