文章目录
一、语句查询数据(SELECT)二、获取满足查询条件的语句(WHERE)三、排序查询(ORDER BY)四、高级条件查询一、语句查询数据(SELECT)
1、在SSMS中查看数据
在数据库中找到需要查看的数据表,右击——>编辑前200行,就可以查看数据表中的所有数据。
2、使用查询表中指定字段的数据
SELECT * FROM COU --查询表COU中全部字段数据SELECT CNO, C_COURSE_NAME FROM COU --查询2列的数据
3、查询结果中去除重复信息
在查询字段前,加入一个“DISTINCT”字段。
注意:使用DISTINCT会降低数据表的查询效率,因为它的原理是先进行排序分组,再进行相同字段的去除。
4、命名新列
在查询的字段后使用AS关键字。
SELECT CNO AS '课程号', C_COURSE_NAME AS '课程名' FROM COU
注意:这里的字符串 是用单引号括起来的,而不是双引号。
AS也可以用来新建临时列:
SELECT CNO AS '课程号', C_COURSE_NAME AS '课程名', 'aaa' AS bbb FROM COU
5、将查询结果保存为新表
SELECT CNO AS '课程号', C_COURSE_NAME AS '课程名', 'aaa' AS bbb INTO new_couFROM COU
再查询或刷新一下即可以看到新生成的表:
6、连接字段
SELECT CNO+' '+C_COURSE_NAME AS 课程信息FROM COU
注意:连接字段时左右两边的数据类型必须相同。
二、获取满足查询条件的语句(WHERE)
1、条件表达式
就是可以判断出确定逻辑值的表达语句,条件表达式跟在WHERE后面。
2、逻辑运算符
3、根据条件查询
根据条件可以所有相关信息、数值数据、字符数据(单引号括起来)、日期数据等。
4、按范围查询数据
--between andSELECT *FROM COUWHERE CHOUR BETWEEN 30 AND 200--等价于SELECT *FROM COUWHERE CHOUR>=30 AND CHOUR<=200
5、查询NULL值(使用is null)
SELECT H_CNO FROM HOMEWORKS WHERE H_SCORE_1 is null
其实也可以用:
SELECT H_CNO FROM HOMEWORKS WHERE H_SCORE_1=null
不过往往后者查不出结果,在查询表达式中(比如where与having中),UnKnown会视为false。所以select * from 表 where 字段=null查不到正确的结果。在sql中要查询某列值为null的所有结果集时,查询条件应该这样写:select * from 表 where 字段 is null。
三、排序查询(ORDER BY)
1、排序方向
desc:降序排列,从高到低;
asc:升序排列,从低到高,是默认排序方式。
SELECT * FROM COU ORDER BY CHOUR DESC
2、按字段位置排序
只按CSCORE进行降序排列:
SELECT CNO,CSCORE,C_TEACHER_NAMEFROM COUORDER BY 2 DESC
3、查询前几行数据(top)
查询前3行数据:
SELECT top 3 CNO,CSCORE,C_TEACHER_NAMEFROM COUORDER BY 2 DESC
4、查询前百分比数据(percent)
查询前30%的数据:
SELECT top 30 percent CNO,CSCORE,C_TEACHER_NAMEFROM COUORDER BY 2 DESC
5、WHERE 与 ORDER BY结合使用(WHERE 在前)
SELECT * FROM COUWHERE CSCORE<7ORDER BY CSCORE DESC
四、高级条件查询
也就是使用比较复杂的逻辑运算符进行的查询。
1、逻辑表达词
2、LIKE通配符(模糊查询)
3、范围表示
此外,还要一个可以表示字符范围的通配符:
[a-z]代表a到z的26个字母中任意一个,指定一个范围中任意一个续上;
排除 [!字符] [!a-z]代表9,0,%,*等 它只代表单个字符;
数字排除 [!数字] [!0-9]代表A,b,C,d等同上;
组合类型 字符[范围类型]字符 cc[!a-d]#代表ccF#等 可以和其它几种方式组合使用。
4、模糊查询示例(中括号[ ]表示范围,!和^表示非)
(1)查询 C_TEACHER_NAME字段中包含有“三”字的:
SELECT * FROM COU WHERE C_TEACHER_NAME LIKE '%三%'
(2)查询 C_TEACHER_NAME字段中以“甘”字开头:
SELECT * FROM COU WHERE C_TEACHER_NAME LIKE '甘%'
(3)查询 CHOUR字段中含有数字的:
SELECT * FROM COU WHERE CHOUR LIKE '%[0-9]%'
(4)查询 CNO字段中含有大写字母的信息:
SELECT * FROM COU WHERE CNO LIKE '%[A-Z]%'
(5)查询 CNO字段中不含有数字的:
SELECT * FROM COU WHERE CNO LIKE '%[!0-9]%'
(6)查询C_TEACHER_NAME中姓张或者姓李的信息:
SELECT * FROM COU WHERE C_TEACHER_NAME LIKE '[张李]%'
(7)查询C_TEACHER_NAME中 不 姓张或者姓李的信息:
SELECT * FROM COU WHERE C_TEACHER_NAME LIKE '[^张李]%'
5、注意
当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“”,用“”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。
6、定义转义字符
只有紧紧跟在转义字符后面的字符,才可以被看作为转义字符。
LIKE '%5#%' ESCAPE '#' --表示#为转义字符LIKE '%5#%%' ESCAPE %' --表示%为转义字符,可以是5%