1、 1 SQL查询语句精华使用简要 简单的 Transact-SQL 查询只包括选择列表、 FROM子句和 WHERE 子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询 testtable 表中姓名为 “ 张三 ” 的 nickname字段和 email 字段。 SELECT nickname,email FROM testtable WHERE name=张三 (一 ) 选择列表 选择列表 (select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量 (包括 局部变量 和全局变量 )等构成。 1、选择所有列 例如,下面语句显示 testta
2、ble 表中所有列的数 据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题 =列名( Sql Server) 列名 列标题 如果指定的列标题不是标准的 标识符 格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称 =nickname,电子邮件 =email FROM testtable 4、删除重复行 SELEC
3、T语句中使用 ALL或 DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为 ALL。使 用 DISTINCT 选项时,对于所有重复的数据行在 SELECT 返回的结果集合中只保留一行。 2 5、限制返回的行数 使用 TOP n PERCENT选项限制返回的数据行数( Sql Server), TOP n说明返回 n 行,而 TOP n PERCENT 时,说明 n 是表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 * FROM testtable SELECT TOP 20 PERCENT * FROM testtable (二
4、) FROM 子句 FROM 子句指定 SELECT 语句查询及与查询相关的表或视图。在 FROM 子句中最多可指定 256 个表或视图,它们之间用逗号分隔。 在 FROM 子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在 usertable 和citytable 表中同时存在 cityid 列,在查询两个表中的 cityid 时应使用下面语句格式加以限定: SELECT username,citytable.cityid FROM usertable,citytable WHERE usertable.cityid=citytable.c
5、ityid 在 FROM 子句中可用以下两种格式为表或视图指定别名: 表名 as 别名 表名 别名 例如上面语句可用表的别名格式表示为: SELECT username,b.cityid FROM usertable a,citytable b WHERE a.cityid=b.cityid FROM 不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如: SELECT a au_fname+a au_lname FROM authors a,titleauthor ta (SELECT title_id,title FROM titles 3 WHERE yt
6、d_sales10000 ) AS t WHERE a au_id=ta au_id AND ta.title_id=t.title_id 此例中,将 SELECT 返回的结果集合给予一别名 t,然后再从中检索数据。 (三 ) 使用 WHERE 子句设置查询条件 WHERE 子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于 20 的数据: SELECT * FROM usertable WHERE age20 WHERE 子句可包括各种条件 运算符 : 比较运算 符 (大小比较 ): 、 =、 =、 、 !、 !=10 AND age、 =、 、 !。 3、自然连接:在连接条件
7、中使用等于 (=)运算符比较被连接列的列值,但它使用选择列表指出查询结 果集合中所包括的列,并删除连接表中的重复列。 例,下面使用等值连接列出 authors 和 publishers 表中位于同一城市的作者和出版社: SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city 又如使用自然连接,在选择列表中删除 authors 和 publishers 表中重复列 (city 和 state): SELECT a.*,p.pub_id,p.pub_name,p.country FROM authors AS a
8、 INNER JOIN publishers AS p ON a.city=p.city (二 )外连接 内连接时,返回查询结果集合中的仅是符合查询条件 ( WHERE 搜索条件或 HAVING 条件 )和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表 (左外连接时 )、右7 表 (右外连接时 )或两个边接表 (全外连接 )中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来: SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b ON a.username=b.username 下面使
9、用全外连接将 city表中的所有作者以及 user 表中的所有作者,以及他们所在的城市: SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as b ON a.username=b.username (三 )交叉连接 交叉连接不带 WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的 数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例, titles 表中有 6 类图书,而 publishers 表中有 8 家出版社,则下列交叉连接检索到的记录数将等于 6*8=48 行。 SELEC
10、T type,pub_name FROM titles CROSS JOIN publishers ORDER BY type Post=0/Post 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数 据库 drop database dbname 3、说明:备份 sql server - 创建 备份数据的 device USE master EXEC sp_addumpdevice disk, testBack, c:mssql7backupMyNwind_1.dat - 开始 备份 BACKUP DATABASE pubs TO
11、testBack 4、说明:创建新表 8 create table tabname(col1 type1 not null primary key,col2 type2 not null,.) 根据已有的表创建新表: A: create table tab_new like tab_old (使用旧表创建新表 ) B: create table tab_new as select col1,col2 from tab_old definitiononly 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column
12、 col type 注 : 列增加后将不能删除。 DB2 中列加上后数据类型也不能改变,唯一能改变的是增加 varchar 类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键 : Alter table tabname drop primary key(col) 8、说明:创建索引: create unique index idxname on tabname(col.) 删除索引 : drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建 视图 : create vi
13、ew viewname as select statement 删除视图: drop view viewname 10、说明:几个简单的基本的 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 wh
14、ere field1 like %value1% -like 的语法很精妙,查资料 ! 排序: select * from table1 order by field1,field2 desc 总数: select count as totalcount from table1 求和: select sum(field1) as sumvalue from table1 平均: select avg(field1) as avgvalue from table1 最大: select max(field1) as maxvalue from table1 最小: select min(fiel
15、d1) as minvalue from table1 11、说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派 生表的每一行不是来自 TABLE1 就是来自TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL)
16、,9 不消除重复行。 C: INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注: 使用运算词的几个查询结果行必须是一致的 。 12、说明:使用外连接 A、 left ( outer) join: 左 外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a
17、.a = b.c B: right ( outer) join: 右外连接 (右连接 ):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C: full/cross ( outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 12、 分组 :Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息: (统计信息) count,sum,max,min,avg 分组的标准 ) 在 SQLServer 中分组时:不能以 text,ntext,image 类型的字段作为分组依据 在 selecte 统计函数 中的字段,不
18、能和 普通 的字段放在一起; 13、 对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库 : sp_attach_db 后接表明,附加需要完整的路径名 14.如何修改数据库的名称 : sp_renamedb old_name, new_name 二、提升 1、说明:复制表 (只复制结构 ,源表名: a 新表名: b) (Access 可用 ) 法一: select * into b from a where 15 13、说明:一条 sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主 键字段 ,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现:
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。