第一篇:SQL Server查询语句学习心得
SQL Server查询语句学习心得
李臻敏
摘要:数据库技术已经广泛地渗透到各个领域,数据库应用技术也已经成为计算机必修课程,SQL Server2005是Microsoft 公司推出的数据库服务产品,是一个企业级的网络关系型数据库管理系统,越来越得到广大用户的青睐。本文以SQL Server2005教材为基础,从中选取数据库查询为理论要材,从数据库的应用方法来针对SQL Server查询来进行简单的论述学习心得。关键词:选择列表;FROM子句;WHERE子句;查询结果排序
SQL Server查询语句的语法格式: SELECT [列名] FROM [表名] [WHERE <查询条件表达式>] [ORDER BY <排序的列名>[ASC或DESC]] 其中:[]代表可选的;<>代表必须的。如果有多个列名,需要用逗号隔开。ORDER BY是用于排序的,可以将查询出的数据按照ORDER BY 所指定的字段进行排序,排序时还可以通过ASC或DESC指定升序或降序排列。
简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询work表中姓名为“许剑锋”的stname字段和score字段。
SELECT stname,score
FROM work
WHERE name='许剑锋'
(一)选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列
例如,下面语句显示work表中所有列的数据:
SELECT *
FROM work
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:
SELECT stname,score
FROM work
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
title=列名
列名 title
如果指定的title不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:
SELECT 昵称=stname,分数=score
FROM work
4、使用DISTINCT关键字屏蔽重复数据
数据表中难免会出现重复数据,DISTINCT的作用是屏蔽结果集中的重复数据行。
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、使用TOP关键字查询表中限定行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一个百分数,指定返回的行数等于总行数的百分之几。
例如:
SELECT TOP 5 *
FROM work
SELECT TOP 10 PERCENT *
FROM work
(二)FROM子句
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在student和teaching 表中同时存在name列,在查询两个表中的name时应使用下面语句格式加以限定:
SELECT stname,teaching.name
FROM student,teaching
WHERE student.name=teaching.name
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
例如上面语句可用表的别名格式表示为:
SELECT stname,b.name
FROM student a,teaching b
WHERE a.name=b.name
(三)使用WHERE子句过滤部分行数据
在数据库中查询数据时,有时用户只希望可以得到一部分数据而不是全部,如果还使用SELECT…FROM结构,就会因为大量不需要的数据而使应用实现起来很麻烦,这时就需要在SELECT语句中加入条件语句,即WHERE子句。
例如下面语句查询体重大于60的数据:
SELECT *
FROM student
WHERE weight >60
WHERE子句可包括各种条件运算符:
比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<
范围运算符(表达式值是否在指定的范围):BETWEEN„AND„
NOT BETWEEN„AND„
列表运算符(判断表达式是否为列表中的指定项):IN(项1,项2„„)
NOT IN(项1,项2„„)
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL
逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR
1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
2、列表运算符例:city IN('Beijin ','Shanghai ')
3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。
可使用以下通配字符:
百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
例如:
限制以Publishinshanghai 结尾,使用LIKE '%Publishinshanghai '
限制以G开头:LIKE '[G]%'
限制以G开头外:LIKE '[^G]%'
4、逻辑运算符:优先级为NOT、AND、OR
(四)查询结果排序
使用SELECT语句进行数据查询后,为了方便阅读,可以使用ORDER BY 子句对生成的结果集进行排序。在SELECT语法中ORDER BY后面的排序列名可以是字段名,也可以是表达式,有多个排序列时,需要用逗号隔开。拍序列名后面还可以指定排序方式,ASC表示升序,DESC表示降序,如果不指定默认为升序。
ORDER BY子句的语法格式为:
ORDER BY {column_name [ASC|DESC]} [,„n]
例如:
SELECT *
FROM student
ORDER BY score desc,address ASC 以上是一些关于数据库查询的介绍,用户可以根据需要应用这些查询技巧从数据库中检索数据,并将查询结果以表格的形式输出。
在信息技术广泛应用的今天,数据库技术作为数据管理的核心技术在社会各个领域发挥着强大的功能,SQL Server 2008是由Microsoft公司发布的最新关系数据库管理系统。然而要用好数据库的管理功能,就必须从简单的数据库查询开始,数据库查询是数据库应用的根基,只有基土之坚固才有高大之建筑。所以,数据库查询在数据库应用中有举足轻重的地位。
作者单位:福建省安溪陈利职业中专学校 作者姓名:李臻敏
通讯地址:福建省安溪县陈利职业中专学校 邮编:362403 电子邮箱:rose_lzm@163.com 联系电话:***
第二篇:sqlserver分页语句
QL Server 2000/2005 分页SQL — 单条SQL语句
有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标。本人不喜欢使用游标,我觉得它耗资、效率低;使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活。先看看单条 SQL 语句的分页 SQL 吧。
方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(SELECT TOP 页大小*(页数-1)id FROM table1 ORDER BY id)
ORDER BY id
方法2:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id >
(SELECT ISNULL(MAX(id),0)
FROM
(SELECT TOP 页大小*(页数-1)id FROM table1 ORDER BY id)A)
ORDER BY id
方法3:
适用于 SQL Server 2005
SELECT TOP 页大小 *
FROM
(SELECT ROW_NUMBER()OVER(ORDER BY id)AS RowNumber,* FROM table1)A
WHERE RowNumber > 页大小*(页数-1)
说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。
第三篇:SQL查询语句
SQL查询语句
第一次:查询(显示)、条件、排序、空记录
第二次:通配符、生成表、文件(记事本)、数组、临时表,数学函数、分组、嵌套查询
第三次:插入记录、删除记录、更新记录 第四次:超连接、新建(打开)数据库、表的建立、表的删除、第五次 表结构的修改,添加记录 显示同张芳同一天出生的学生的信息 格式:
1、查询(显示)记录
显示所有男学生的学号,姓名,性别 区分:字段、条件、表名
Select 字段名列表(*)from 表名; where 条件表达式;
into table(dbf)文件名;
into cursor 临时表名;
into array 数组名;
to file 文件名;
order by 字段名列表(asc desc);
group by 字段名 having 条件;
显示所有大于平均分的学生的学号、姓名 显示同E4挣同样工资的职工信息
Select * from 职工 where 工资=(select 工资 from 职工 where 职工号=”E4”)职工(仓库号C(10),职工号 C(10),工资 N(10,2))
显示所有工资大于1500的员工的仓库号、职工号及所在的城市
2、插入记录
Insert into 表名(字段名列表)values(记录值)
3、删除记录
Delete from 表名 where 条件
4、更新记录
Update 表名 set 字段名=记录值; Where 条件
5、表的删除
drop table 表名
6、表的建立
create table 表名(字段名 数据类型(宽度))
7、表结构的修改select * from 职工where 职工号!=“E4” AND 工资=(select 工资 from 职工 where 职工号=“E4”)
alter table 表名
1)增加字段
alter table student add 身份证号 c(10)
2)删除字段
alter table student drop colum 身份证号
3)修改字段名
alter table student rename colum 出生日期 to 出生年月
4)增加字段有效性规则
alter table student alter 成绩 set check 成绩>=0 and 成绩<=100;
error “成绩输入错误,成绩应该在0-100之间”
5)删除字段有效性规则
alter table student alter 成绩 drop check 注意:
以上题目中用到的 SQL语句粘贴到计事本文件XY.TXT中(每行一条语句)。对两个表操作的方法:
1)同时打开两个表
select 仓库.仓库号,城市,职工号,工资 from 仓库,职工;
where 职工.仓库号=仓库.仓库号 and 工资=1250
2)超连接(内连接、左连接、右连接、全连
接)
内连接:只显示符合条件的记录
左连接:显示符合条件的记录及第一个表中不符合条件的记录
右连接:显示符合条件的记录及第二个表中不符合条件的记录
全连接:显示符合条件的记录及第一、二个表中不符合条件的记录
成绩表(score)
学号姓名课程名成绩 2001张三计算机10 2003张四英语20 2001张三语言30 2005张三数据40 2003张四计算机50
Select sum(成绩)from score group by 学号
Select sum(成绩)from score group by 课程名
select 字段名列表(*)from 表名;where 条件;
order by 字段名列表 asc|desc;
into table(dbf)表名;
into array 数组名;
to file 文件名;
into cursor 临时表名
题目练习
实现以下功能:在考生文件夹下,打开“陶的数据库”的数据库,并利用SQL语句在该数据库中新建一个表:gongzi(职工号 c(4),实发工资 n(7,0)),将zhigong表中基本工资大于1330(含1330)的记录存储在gongzi表中,其中实发工资为:基本工资+加班费(白天20,晚上30),最后将所有的SQL语句保存到考生目录下的sqlanswer.txt文件中(自行建立,一行一条语句)
open database 陶的数据库
create table gongzi(职工号 c(4),基本工资 n(7,2))
select 职工号,基本工资+白班*20+晚班*30 from zhigong;where 基本工资>1350 into array xy
insert into gongzi from array xy
第四篇:Sql语句查询
sql语句多表连接查询
在程序开发过程中,不仅可以对单一数据表进行查询,还可以进行多表查询,用户通过多表查询从多个表中提取出需要的数据。
多表查询可以分为内连接查询、外连接查询以及联合查询。
1.内连接查询
连接查询是指通过各个表之间共同列的关联性查询数据。连接查询分为内连接查询和外连接查询。内连接是将两个相互交叉的数据集合中重叠部分的数据行连接起来,返回表示两个数据集合之间匹配连接关系的数据行。
可以在FORM子句中使用INNER JOIN„ON„建立内连接,也可以在WHERE子句中指定连接条件建立内连接,例如:
select a.UserName,b.BookName,b.Datetm from UserInfo as a inner join SellSheet as b on a.UserID= b.UserID
也可以用下面的语句实现。
select a.UserName,b.BookName,b.Datetm from UserInfo as a,SellSheet as b where a.UserID=b.UserID
2.外连接查询
外连接是对内连接的扩充,除了将两个数据集合中重叠部分以内的数据行连接起来之外,还可以根据要求返回左侧或右侧数据集合中非匹配的数据,即左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。
l左外连接LEFT OUTER JOIN
左外连接LEFT OUTER JOIN逻辑运算符除了返回两个数据表中满足连接条件的行,它还返回任何在后一个数据表中没有匹配行的前一个数据表中的行。非匹配行的部分字段列作为空值返回。
l右外连接RIGHT OUTER JOIN
右外连接RIGHT OUTER JOIN是左外连接的反向连接。它除了返回两个数据表中满足连接条件的行,还返回任何在前一个数据表中没有匹配行的后一个数据表中的行。非匹配行的部分字段列作为空值返回。
3.使用UNION进行联合查询
使用UNION运算符可以进行联合查询。UNION运算符连接多个SELECT语句,将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中所有查询的全部行。使用UNION运算符遵循的规则如下:
(1)在使用UNION运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚集函数等)。
(2)在使用UNION组合的结果集中的相应列必须具有相同数据类型,或者两种数据类型之间必须存在可能的隐性数据转换,或者提供了显式转换。例如,在datetime数据类型的列和binary数据类型的列之间不能使用UNION运算符,除非提供了显式转换,而在money数据类型的列和int数据类型的列之间可以使用UNION运算符,因为它们可以进行隐性转换。
(3)结果集中列的名字或者别名是由第一个SELECT语句的选择列表决定的。
注意:对数据表进行联合查询时,结果集中行的最大数量是各表行数之“和”,而对数据表进行连接查询时,结果集中行的最大数量是各表行数之“积”。
第五篇:SqlServer教学大纲
《SQL Server2005案例教程》教学大纲
一、教学目的:
1.通过本门课程的学习,使学员掌握数据库的概念,安装以及数据库在程序设计中的重要地位和作用 2.理解关系型数据库和表,约束,索引的创建
3.了解SQL语言基础与使用SQL语言实现数据的查询与更新 4.熟悉sqlserver的应用环境及掌握常用的管理方法 5.掌握视图,存储过程,触发器等数据库对象的创建与使用 6.掌握数据库的安全管理 7.掌握数据的备份与恢复 8.掌握数据的导入导出步骤
9.理解SqlServer下事务的概念,并能在实际应用中合理的使用事务控制命令
二、教学重点:
1.数据库基本概念
2.数据库表,约束,索引的创建 3.使用SQL语言实现数据的查询与更新 4.Select,update,delete,insert 5.index 6.constraint 7.view视图
三、教学难点:
1.SqlServer体系结构
2.SqlServer下事务的概念,并能在实际应用中合理的使用事务控制 3.存储过程 4.触发器
四、教学内容及学时分配
第1章、数据库概述 6课时
第2章、SQL Server安装及管理 4课时 第3章、数据库及表的设计 4课时 第4章、T-ransact SQL语言基础 6课时 第5章、T-ransact SQL数据查询与更新 14课时 第6章、视图 6课时 第7章、存储过程 复习
5课时
4课时
第8章、触发器
6课时 第9章、SQL安全 3第10章、数据备份与恢复 第11章、数据转换
复习4
课时 4课时 2课时
课时 68课时