一.结构化查询语言
1.结构化查询语言简介
结构化查询语言(Structured Query Language)简称SQL, 是操作和检索关系型数据库的标准语言,20世纪70年代由IBM公司开发,目前应用于各种关系型数据库。
2.结构化查询语言分类:
- 结构化查询语言可分为5类:
1.数据查询语言(DQL:Data Query Language):语句主要包括SELECT,用于从表中检索数据。
2.数据操作语言(DML:Data Manipulation Language):语句主要包括INSERT,UPDATE和DELETE,用于添加,修改和删除表中的行数据。
3.事务处理语言(TPL:Transaction Process Language): 语句主要包括COMMIT和ROLLBACK,用于提交和回滚。
4.数据控制语言(DCL:Data Control Language):语句主要包括GRANT和REVOKE,用于进行授权和收回权限。
5.数据定义语言(DDL:Data Definition Language):语句主要包括CREATE、DROP、ALTER,用于定义、销毁、修改数据库对象。
二.基本SELECT语句
1.基本SELECT语句语法
SELECT [DISTINCT]{*|column|expression [alias],...}
FROM table;
- SELECT子句 表示所需检索的数据列。
- FROM子句 表示检索的数据来自哪个表。
2.SQL语句相关概念
- 关键字(Keyword):SQL语言保留的字符串,例如,SELECT和FROM都是关键字。
- 语句(statement):一条完整的SQL命令。例如,SELECT * FROM dept 是一条语句。
- 子句(clause):部分的SQL语句,通常是由关键字加上其它语法元素构成,例如,SELECT * 是一个子句,FROM table也是一个子句。
3.SQL语句的书写规则
- 不区分大小写,也就是说SELECT,select,Select,执行时效果是一样的。
- 可以单行来书写,也可以书写多行,建议分多行书写,增强代码可读性,通常以子句为单位进行分行。
- 关键字不可以缩写、分开以及跨行书写,如SELECT不可以写成SEL或SELE CT等形式。
- 关键字最好使用大写,其它语法元素(如列名、表名等)小写。
- Tab和缩进的使用可以提高程序的可读性。
4.选择列
-
选择所有列:
示例 -
选择指定的列:
示例
5.算数运算符
可以在SELECT语句中使用算术运算符,改变输出结果
加+ 减- 乘× 除/
示例
6. 算术运算符优先级
1.乘除优先于加减
2.相同优先权的表达式按照从左至右的顺序依次计算
3.括弧可以提高优先权,并使表达式的描述更为清晰
示例
-
使用括号改变优先级
示例
7.空值NULL
空值是指一种无效的、未赋值、未知的或不可用的值。
空值不同于零或者空格。
示例
-
算术表达式中的空值NULL
任何包含空值的算术表达式运算后的结果都为空值NULL。
示例
8.列别名
- 列别名
用来重新命名列的显示标题
如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题。 - 使用列别名的方法
方式1:列名 列别名
方式2:列名 AS 列别名 -
以下三种情况列别名两侧需要添加双引号
列别名中包含有空格
列别名中要求区分大小写
列别名中包含有特殊字符
示例
示例
8.消除重复行
-
重复行
以下查询的结果默认输出所有行,其中包含了重复行
示例 -
消除重复行
示例
9.显示表结构
1.可以使用DESCRIBE 命令来查看表结构
DESC[RIBE] tablename
10.选择限定数据行
使用WHERE子句可以返回限定的数据行,语法如下:
SELECT [DISTINCT] {*| column | expression [alias], ...}
FROM table
[WHERE condition(s)];
- WHERE子句紧跟在FROM子句之后
- condition(s)表示条件表达式,
通常格式为:列名 比较操作符 要比较的值
2.比较操作符
等于(=)大于(>)大于或等于(>=)
小于(<) 小于或等于(<=) 不等于(<>)
3.使用WHERE子句 -
比较数值型数据
示例 -
比较字符型数据
示例
字符型数据作为被比较的值时,必须用单引号引起来
字符型数值区分大小写
11.特殊比较运算符
BETWEEN...AND...:判断要比较的值是否在某个范围内。
IN( 集合列表):判断要比较的值是否和集合列表中的任何一个值相等。
LIKE:判断要比较的值是否满足部分匹配。
IS NULL:判断要比较的值是否为空值NULL 。
-
BETWEEN..AND..
使用BETWEEN .. AND.. 运算符来判断要比较的值是否在某个范围内。
示例 -
IN运算符
使用IN运算符判断要比较的值是否和集合列表中的任何一个值相等。
示例 -
LIKE运算符
使用LIKE运算符判断要比较的值是否满足部分匹配,也叫模糊查询。模糊查询中两个通配符:
% 代表零或任意更多的字符
_ 代表一个字符
示例 -
LIKE运算符
%与_组合使用
示例 - LIKE运算符
您可以使用ESCAPE标识符实现对“%”和 “”的查找。
例:查询 JOB 以“MAN”开头的雇员信息。
示例 -
IS NULL 运算符
使用 IS NULL 运算符来判断要比较的值是否为空值NULL
示例
12.逻辑运算符
1.逻辑运算符
当需要和多个条件表达式进行比较时,需要使用逻辑运算符把多个表达式连接起来,逻辑运算符包括AND、OR、NOT,逻辑表达式的结果为TRUE,FALSE,NULL。
AND:逻辑与,用来连接多个条件表达式。如果每个条件表达式的结果都为TRUE,整个表达式的结果才为TRUE。
OR:逻辑或,用来连接多个条件表达式。只要有1个条件表达式的结果为TRUE,整个表达式的结果就为TRUE。
NOT:逻辑非,用来对条件表达式取反。TRUE取反为FALSE,FALSE取反为TRUE。
-
逻辑与(AND):
AND: 要求两个条件都为真,结果才为真
示例 -
逻辑或(OR):
OR: 只需要两个条件中的一个为真,结果就返回真
示例 -
逻辑非(NOT)
示例
NOT运算符还可以和BETWEEN…AND、LIKE、IS NULL一起使用
... WHERE deptno NOT IN (10, 20)
... WHERE sal NOT BETWEEN 3000 AND 5000
... WHERE ename NOT LIKE 'D%’
... WHERE mgr IS NOT NULL
2.运算符的优先级
括号’()’优先于其他操作符。
算术运算符:*, , +, -
连接运算符:||
比较运算符:=, <>, <, >, <=, >=
特殊比较运算符:BETWEEN..AND.. ,IN,LIKE,IS NULL
逻辑非:NOT
逻辑与:AND
逻辑或:OR -
运算符的优先级
示例 -
运算符的优先级
使用括号强制改变优先权
示例
13.ORDER BY子句
使用ORDER BY子句能对查询结果集进行排序,语法结构如下:
SELECT [DISTINCT] { * | 列名 |表达式 [别名][,...]}
FROM 表名
[WHERE 条件]
[ORDER BY {列名|表达式|列别名|列序号} [ASC|DESC],…];
- 其中:
1.可以按照列名、表达式、列别名、结果集的列序号排序
2.ASC: 升序,默认值 DESC: 降序
3.ORDER BY 子句必须写在SELECT语句的最后 - 排序规则(以升序为例)
1.数字升序排列小值在前,大值在后。即按照数字大小顺序由小到大排列。
2.日期升序排列相对较早的日期在前,较晚的日期在后。
3.字符升序排列按照字母由小到大的顺序排列。即由A-Z排列;中文升序按照字典顺序排列。
4.空值在升序排列中排在最前面,在降序排列中排在最后。 -
按列名升序排序
示例 - 按列名降序排序
- 按列别名排序
-
多列参与排序
示例
参与排序的多列都可以指定升序或者降序
ORDER BY子句中可以写没在SELECT列表中出现的列 -
按结果集列序号排序
ORDER BY子句后列名可以用数字来代替,这个数字是SELECT语句后列的顺序号。
示例
14.限制记录的行数
- 使用select语句时,经常要返回前几条或者中间某几行记录,可以使用关键字limit。语法格式如下:
select 字段列表
from 数据源
limit [start,]length; - 说明:
1.limit接受一个或两个整数参数。start表示从第几行记录开始输出,length表示输出的记录行数。
2.表中第一行记录的start值为0(不是 1)。 -
查询员工表的前5条记录
示例
(此文章仅作为个人学习笔记使用,如有错误欢迎指正~)
网友评论