携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天
- SQL11 高级操作符练习(1)
参考代码:
SELECT device_id,gender,age,university,gpa
FROM user_profile
WHERE gpa > 3.5 AND gender = 'male'
条件限制这样写也是可以的:
WHERE gpa >3.5 AND gender in ('male')
- SQL12 高级操作符练习(2)
代码如下:
SELECT device_id,gender,age,university,gpa
FROM user_profile
WHERE university IN ('北京大学') OR gpa > 3.7
- SQL13 Where in 和Not in
参考代码:
SELECT device_id,gender,age,university,gpa
FROM user_profile
WHERE university IN ("北京大学","复旦大学","山东大学")
- SQL14 操作符混合运用
参考代码如下:
SELECT device_id,gender,age,university,gpa
FROM user_profile
-- WHERE (gpa > 3.5 AND university = "山东大学") OR (gpa > 3.8 AND university = "复旦大学")
WHERE gpa > 3.5 AND university = "山东大学" OR gpa > 3.8 AND university = "复旦大学"
SELECT device_id, gender, age, university,gpa from user_profile where gpa > 3.5 and university = '山东大学' UNION
SELECT device_id, gender, age, university,gpa from user_profile where gpa > 3.8 and university = '复旦大学' ORDER BY device_id ASC
发现不加括号也是可以通过的
使用union的时候的顺序问题,需要加上ORDER BY ... ASC 以将device_id 进行升序排列才不会报错
- SQL15 查看学校名称中含北京的用户
参考代码如下:
SELECT device_id,age,university
FROM user_profile
WHERE university LIKE '北京%'
字符匹配
一般形式为:
列名 [NOT ] LIKE
匹配串中可包含如下四种通配符:
_:匹配任意一个字符;
%:匹配0个或多个字符;
[ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表 达 );
[^ ]:不匹配[ ]中的任意一个字符。
例23.查询学生表中姓‘张’的学生的详细信息。
| 1 | SELECT * ``FROM 学生表 ``WHERE 姓名 ``LIKE ‘张%’ |
|---|
例24.查询姓“张”且名字是3个字的学生姓名。
| 1 | SELECT * ``FROM 学生表 ``WHERE 姓名 ``LIKE '张__’ |
|---|
如果把姓名列的类型改为nchar(20),在SQL Server 2012中执行没有结果。原因是姓名列的类型是char(20),当姓名少于20个汉字时,系统在存储这些数据时自动在后边补空格,空格作为一个字符,也参加LIKE的比较。可以用rtrim()去掉右空格。
| 1 | SELECT * ``FROM 学生表 ``WHERE rtrim(姓名) ``LIKE '张__' |
|---|
例25.查询学生表中姓‘张’、姓‘李’和姓‘刘’的学生的情况。
| 1 | SELECT * ``FROM 学生表 ``WHERE 姓名 ``LIKE '[张李刘]%’ |
|---|
例26.查询学生表表中名字的第2个字为“小”或“大”的学生的姓名和学号。
| 1 | SELECT 姓名,学号 FROM 学生表 WHERE m姓名 LIKE '_[小大]%' |
|---|
例27.查询学生表中所有不姓“刘”的学生。
| 1 | SELECT 姓名 ``FROM 学生 ``WHERE 姓名 ``NOT LIKE '刘%’ |
|---|
例28.从学生表表中查询学号的最后一位不是2、3、5的学生信息。
| 1 | SELECT * FROM 学生表 WHERE 学号 LIKE '%[^235]' |
|---|