数据库SQL语句十题

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

第一篇:数据库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语句

简单基本的sql语句 几个简单的基本的sql语句

选择:select * from table1 where范围

插入:insert into table1(field1,field2)values(value1,value2)

删除:delete from table1 where范围

更新:update table1 set field1=value1 where范围

查找:select * from table1 where field1 like ’%value1%’

(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 top 10 * from 数据表 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=“insert into 数据表(字段1,字段2,字段3 …)values(值1,值2,值3 …)”

sql=“insert into 目标数据表 select * from 源数据表”(把源数据表的记录添加到目标数据表)

(4)数据记录统计函数:

AVG(字段名)得出一个表格栏平均值

COUNT(*;字段名)对数据行数的统计或对某一栏有值的数据行数统计MAX(字段名)取得一个表格栏最大的值

MIN(字段名)取得一个表格栏最小的值

SUM(字段名)把数据栏的值相加

引用以上函数的方法:

sql=“select sum(字段名)as 别名 from 数据表 where 条件表达式”

set rs=conn.excute(sql)

用 rs(“别名”)获取统计的值,其它函数运用同上。

查询去除重复值:select distinct * from table1between的用法

between限制查询数据范围时包括了边界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2

in 的使用方法

select * from table1 where a [not] in(‘值1’,’值2’,’值4’,’值6’)

第四篇:SQL语句

SQL语句,用友的SQL2000,通过查询管理器写的语句

1、查询

2、修改

3、删除

4、插入

表名:users 包含字段:id,sname,sage

查询 select * from users查询users表中所有数据

select id,sname,sage from users查询users表中id,sname,sage字段所有数据

可以限定查询条件比如:

select sname from users where sage>20查询年龄大于20岁的所有人的名字

修改 update users set sname='李四',sage=22将users表中数据都改为姓名李四,年龄22

update users set sname='李四',sage=22 where id=1限定id为1的人的信息修改为

姓名李四,年龄22

可以加where条件。

删除 delete from users where id=2删除users表中id为2的一行数据delete from users 代表删除users中所有数据

插入 insert into users(id,sname,sage)values(5,'刘三',21)插入一条数据

SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。

例如:SELECT columns FROM tables;其中columns为列的名称,tables为表格名称

1、查询:select 字段名 from 表名 where 条件

查找在表(如A)中符合条件的字段

2、修改:update 表名 set 字段名=‘所要修改的内容’

修改在表(如A)中的字段的值为:所要修改的内容

3、删除: delete from 表名 where 条件

删除符合条件的表(如A)中的信息

4、插入: insert into 表名(字段名)(‘插入内容’)

在表(如A)中插入字段为:插入内容 的一条信息

第五篇:SQL数据库心得

黄淮学院 2015---2016学年第 一 学期 《C#数据库应用程序开发技术与案例教程》课程

题目:

学习报告

系:数学科学系 专

业:数学与应用数学 年

级:1301B 姓

名:曹占营 学

号:1331110101 任课教师:杨锋英

2015年 12 月 30日

C#数据库学习报告

在日常生活中,我们和朋友、亲戚联系,会广泛用到通讯录,因此这门课程以通讯录开发为案例,教我们学习软件开发。

软件开发是一项非常注重实践工作,不可能只凭看书、看视频就学会软件开发,必须扎扎实实、一行一行的编写代码,不断积累项目经验,才能真正掌握编程技术,所以我们要亲自上级编写程序,才能真正掌握软件开发技术。

本书分为基础篇、进阶篇、高级篇,由浅入深地介绍了基于C#的数据库编程技术,所用的开发工具为Visual Studio 2008、SQL Server 2005以及Access 2007。

学习数据库的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从课程中让我更明白一些知识,查询可以通过SQL语言进行完成,这样加深了查询语句的基本结构,让我们能更好的掌握其中语句,方便于我们后面的学习和应用。表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。在编程方面是需要我们对于编程有逻辑思维能力及一定的编程技巧。在数据库中插入表、表中的信息等都需要注意,不然很容易出错。

在基础篇中,详细讲解了通讯录系统的设计、开发和安装部署这样一个完整过程,对各个任务进行详细讲解。基础篇学习分为9个任务,分别为系统分析与设计、用户登录、主窗体设计、联系人分组管理、联系人管理、用户密码修改、数据库备份与恢复、设计“关于”窗体、系统安装与部署。学完基础篇,即可开发出一个功能较为完备的通讯录系统。在联系人管理任务学习中,由于在Contact表中保存的是分组编号,而窗体上要显示的是分组名称,所以在查询语句中需要级联查询,即SQL语句为”select Contact.Id, Name, Phone, Email, QQ, GroupName from Contact, ContactGroup where Contact.GroupId = ContactGroup.Id”。为了实现代码复用,可以提供查询功能,根据用户选择的擦寻天剑,拼接产生SQL语句。同时为了支持模糊查询,还在SQL语句中用了like语句。通过SqlDataAdapter的Fill方法填充数据集,获取数据。数据集中有了数据以后,我们只需设置DataGridView控件的DataSource属性,就可以显示数据了。

在进阶篇中,介绍了企业项目开发中广发用到的参数化SQL语句、存储过程使用及定义数据库操作类,分为3个任务学习,分别为使用参数化SQL语句、使用存储过程、使用自定义数据库操作类,进一步提高我们的数据库编程能力。在使用存储过程任务学习中,了解到存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。在性能方面,存储过程有如下的优点。(1)与编译,存储过程预先编译好放在数据库内,减少编译语句所花的时间。(2)缓存,编译好的存储过程会进入缓存,所以对于经常执行的存储过程,除了第一次执行外,其他次执行的书都会有明显提高。(3)减少网络传输,特别对于处理一些数据的存储过程,不必像直接用SQL语句实现那样多次传送数据到客户端。通过前面的学习,细细体会对数据库的操作,可以发现,这么多操作其实可以分为4种。(1)对数据库进行非连接式查询操作,返回多条记录。这种操作可以通过SqlDataAdapter对象的Fill方法来完成,即把查询得到的结果填充到DataTable(或DataSet)对象中。(2)对数据库进行连接式查询操作,返回多条查询记录。这种操作可以通过SqlCommand对象的ExecuteReader方法来完成,返回SqlDataReader对象。(3)从数据库中检索单值。这种操作可以通过SqlCommand对象的ExecuteNonQuery方法来完成。ExecuteScalar方法返回的是Object类型,需要根据实际情况进行类型转换。(4)对数据库执行增、删、改操作。这种操作可以通过SqlCommand对象的ExecuteNonQuery方法来完成,返回增、删、改操作后数据库中受影响的行数。

在高级篇中,分为4个任务学习,分别为开发基于三层构架的通讯录程序、开发基于Access的通讯录程序、实现基于抽象工厂模式的三层架构、使用MD5加密用户密码。首先详细讲解了基于三层构架的通讯录程序开发过程以及如何开发一个基于Access的通讯录系统。最后,介绍了如何采用MD5加密技术对用户密码加密。MD5加密技术也是实际项目开发中广泛用到的,通过MD5加密用户密码,可以提高程序的安全性。“三层架构”一词中的“三层”是指:“表示层”、“业务逻辑层”、“数据访问层”。表示层:位于最外层,离用户最近。用于显示和接收用户输入的数据,为用户提供一种交互式操作界面。表示层的常见形式为WinFrom和WebForm。业务逻辑层:负责处理用户输入的信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的函数再次读出这些数据。业务逻辑层也可以包括一些对“商业逻辑”描述代码在里面。数据访问层:仅实现对数据的保存和读取操作。可以访问数据库系统、二进制文件、文本文档或是XML文档。

在这一学期有限的几次实验课后,我虽然没有学会很多,但也学会了一些简单的操作,我学会了一些简单的数据运算,会建立一些简单的表。有时候在做实验时,对于实验中的一些东西我不怎么了解,但我还会去做,因为我想只有多练习才能熟练,也才能理解掌握知识。我不知道这一门课对其他同学来说怎么样,但对我来说却有些难,但我会努力。因为我认为它对我以后考计算机二级有很大的帮助。

很快这一学期马上就要结束了,数据库这一门课也很快就要结束了,但这一学期的学习让我知道了很多,也告诉了我在以后的人生中如何去做事,如何去做人。尤其是老师的耐心,老师的敬业精神感动了我,再做任何事时都应该认真负责,任何一个人都应该被尊重。

下载数据库SQL语句十题word格式文档
下载数据库SQL语句十题.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

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

    1.Select * from student查询所有原始记录 2. Select StudentID, StudentName from student 只查询学号和姓名 3. Select StudentID as 学号, StudentName as 姓名, Sex as......

    SQL语句判断数据库、表、字段是否存在

    SQL语句判断数据库、表、字段是否存在 --判断[TestDB]是否存在 if exists(select 1 from master..sysdatabases where name='TestDB') print 'TestDB存在' else print 'Test......

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

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

    实验四使用SQL语句修改SQL Server 数据库

    实验四使用SQL语句修改SQL Server数据库 1、实验目的: (1) 了解SQL Server数据库的逻辑结构和物理结构; (2) 掌握使用SQL语句修改数据库的方法; 2、实验准备: (1)要明确能够修改数据库......

    文管二级Access数据库SQL语句详解

    第一讲 上面是Access数据库中所涉及的两个表 下面我们介绍Access数据库中用于查询数据的语句: 1、 SELECT 语句 SELECT语句是数据库中使用频率最高的语句,就是我们通常说的查......

    数据库sql语言总结

    插入句型: insertinto [各属性名]values(,……)删除元组或者二维表: delete from[ where ]删除属性: altertabledropcolumn增加某表的属性: altertableadd 类型 修改句型: update......

    数据库实验报告 SQL语言

    数据库原理及实验报告 实验6 视图 实验目的:1)掌握交互式创建、删除视图的方法 2)掌握使用SQL创建、删除视图的方法 3)掌握交互式更新视图的方法 4)掌握使用SQL更新视图的方法 实......

    SQL数据库设计教学大纲

    SQL数据库设计教学大纲 一、 课程说明: Microsoft SQL Server是目前最流行的大中型关系数据库管理系统,该课程以SQL语言为工具,很好的实现了对巨量数据进行数字化管理,使学生全......