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:最开始如果在前面加上#那么就是一种虚拟的表只在当前窗口有效,如果没有#那就是创建一张表