SQLServer高级查询
- SQL Top
- select top n * from 表名
- SQL Like
- select 列名 from 表名 where 列名 like 模式(按照我们写的规矩查询)
- SQL 通配符
- 详情在下方
- SQL In
- select 字段 from 表名 where 字段 in (value1,value2,value3…);
- SQL Between
- select 字段 from 表名 where 字段 between value1 and value2;
- SQL Aliases(as)
- select * from student as user
- SQL Join
- select 表一.,表二. from 表一,表二 where 这俩张表的关系(主外键)
- SQL Inner Join
- select 表一.,表二. from 表一 inner join 表二 on 这俩张表的关系(主外键)
- SQL Left Join
- select 表一.,表二. from 表一 left join 表二 on 这俩张表的关系(主外键)
- SQL Right Join
- select 表一.,表二. from 表一 right join 表二 on 这俩张表的关系(主外键)
- SQL Full Join
- select 表一.,表二. from 表一 full join 表二 on 这俩张表的关系(主外键)
- SQL Union
- select 列名 from 表一 union select 列名 from 表二
- SQL Select Into
- select 字段 into 虚拟表名 from 表名
- SQL Top
- select top n * from 表名
- 简单来说就选取前面的3条数据 ,这个在实际开发中是比较常用的,一般用于分页查询
select top 3 * from student
--PS:选取前3条数据
- SQL Like
- 语法: select 列名 from 表名 where 列名 like 模式(按照我们写的规矩查询)
- PS:like中可以匹配少部分正则表达式
select * from student where studentName like '[张 小]%'
--PS:匹配studentName以‘张’与‘小’开头的数据
select * from student where studentName like '%黑'
--PS:匹配studentName以黑结尾的数据
- SQL 通配符
- PS:在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。必须配合LIKE使用
| 符号 | 作用 |
|---|---|
| % | 替代一个或多个字符 |
| _ | 仅替代一个字符 |
| [charlist] | 字符列中的任何单一字符 |
| [^charlist] | 不以什么什么开头的 |
| [!charlist] | 以什么什么开头的 |
--匹配:studentName字段黑结尾的数据
select * from student where studentName like '%黑';
--匹配:studentName字段黑结尾并且只有俩个字符的数据
select * from student where studentName like '_黑';
--匹配:studentName字段不以王与张开头的数据
select * from student where studentName like '[^张 王]%';
--匹配:studentName字段以张与王开头的数据
select * from student where studentName like '[!张 王]_';
- SQL In
- 语法:select 字段 from 表名 where 字段 in (value1,value2,value3…);
- PS:in操作符允许我在where子句中规定多个值
select * from student where studentName in ('小黑','王五','张三');
--PS:选取studentName只为'小黑','王五','张三'的数据
- SQL Between
- 语法:select 字段 from 表名 where 字段 between value1 and value2;
- PS:在 value1 与 value2 之间
select * from student where bornDate between '1994-04-05' and '2018-11-03';
--PS:选取 '1994-04-05' 年到 '2018-11-03'年之间的数据 ,当然也可以使用数字进行
- SQL as(Aliases0
- 语法:select * from student as user
- PS:可以为列名或者表表名取别名
select * from student as s;
select StudentNo as s_id from student;
--PS:给表取一个别名,到时候多表连接的时候就可以使用别名了
- SQL Join
- 语法:select 表一.,表二. from 表一,表二 where 这俩张表的关系(主外键)
- 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。(就是必须全部要符合条件才会返回行)
select s.*,g.* from student as s , grade as g where s.gradeId=g.gradeId
- SQL Inner Join
- select 表一.,表二. from 表一 inner join 表二 on 这俩张表的关系(主外键)
- 这和inner一样的
select s.*,g.* from student as s inner join grade as g on s.gradeId=g.gradeId
- SQL Left Join
- 语法:select 表一.,表二. from 表一 left join 表二 on 这俩张表的关系(主外键)
- 左表 (grade) 返回所有的行,即使右表(student)在中没有匹配的行。(右表不受限制)
select * from student as s left join grade as g on s.gradeId=g.gradeId
- SQL Right Join
- 语法:select 表一.,表二. from 表一 right join 表二 on 这俩张表的关系(主外键)
- 右表(student)返回所有的行,即使在左表 (grade) 中没有匹配的行。(右表不受限制)
select * from grade as g right join student as s on s.gradeId=g.gradeId
- SQL Full Join
- 语法:select 表一.,表二. from 表一 full join 表二 on 这俩张表的关系(主外键)
- 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
select * from student as s full join grade as g on s.gradeId=g.gradeId
- SQL Union
- 语法:select 列名 from 表一 union select 列名 from 表二
- UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
select s.gradeId,s.StudentNo from student as s union select * from grade as g
--PS:请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
--UNION默认取出不同的值,如果重复的也需要取出的话 用 UNION ALL
- SQL Select Into
- 语法:select 字段 into 虚拟表名 from 表名
- SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。(通常用于对记录继续存档)
--复制表结构与数据
select * into #temp from student
--复制表结构
select * into #temp from student where 1=2;
--测试
select * from #temp
--删除虚拟的表
drop table #temp
--把虚拟的表结构与数据插入newcreate表中(如果有newcreate表的话就是单纯的插入,如果没有的话就创建加插入)
select * into newcreate from #temp
--PS:最开始如果在前面加上#那么就是一种虚拟的表只在当前窗口有效,如果没有#那就是创建一张表
版权声明:本文为yjy_191原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。