「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」。
1. DQL
1.1 简单查询
格式:
select 子句 from 子句 [where 子句 [order by cloumns [asc/desc]]]
- select子句选择要查询的信息(特定列,列所有 * 。使用逗号隔开,可以调整列的先后显示顺序)
例1,查询所有学生信息:
SELECT * FROM t_student
例2,查询所有学生的id,name,age信息:
SELECT id,name,age FROM t_student
- from子句选择要查询的表,视图,结果集,dual
例1,from作用在表上:
SELECT * FROM t_student
例2,from作用在视图上(视图后面讲):
SELECT * FROM v_student
例3,from作用在结果集上:
SELECT * FROM (
SELECT * FROM t_student
)
例4,from作用在dual上:
SELECT sysdate FROM DUAL
SELECT 1+1 FROM DUAL
解释:DUAL用在没有查询目标的SELECT语句块中
- where子句限定限制返回的行,where子句中的多个条件使用 and\or连接。
例1,查询id为1的学生信息:
SELECT * FROM t_student WHERE id=1
例2,查询id为1并且name为张三的学生信息:
SELECT * FROM t_student WHERE id=1 and name=’张三’
例3,查询name为张三或年龄大于18岁的学生信息:
SELECT * FROM t_student WHERE id=1 or age>18
★ 字符类型要用’’括起来,date类型要用to_date函数,时间戳类型要用to_datestamp。字符值区分大小写。
★ 当需要使用’时,需要使用’来转义,例如一个单引号’’,两个单引号 ‘’’’
1.2 查询中使用运算符
sql当中可以使用算术表达式,表达式一般出现在select子句和where子句中。算术表达式可以包含列名、常数值和算术运算符。
1. 算术运算符 + - * / 。
算术运算符的优先顺序:
- 乘和除的运算优先级高于加和减
- 优先级相同的运算符是从左到右进行运算的
- 可以使用小括号来强制语句做出优先运算,并使语句运算顺序更为清晰
- 日期计算 也可以使用+ -,单位为天(如:select sysdate + 1 from dual)
2. 连接符 || 或 concat(arg1,arg2)
3. 比较运算符 < ,> ,<= ,>= ,=,!=,<>,is,is not ,in ,not in,any,all,between,like
- LIKE:匹配字符串
- IN:匹配列表值
- BETWEEN:匹配范围值
- IS NULL:匹配空值
- IS NAN:匹配非数字值
- NOT 取反
- ANY 任意一个 (select 1 from dual where 1 > any(1,2,3,4) )
- ALL 所有的 (select 1 from dual where 1 > all(1,2,3,4) )
4. 通配符
下划线(_):表示匹配1个字符
百分号(%):表示匹配任意个字符