数据查询语言(Oracle VS MySQL)(二)
ondition的值值为true时检索相应的数据。
比较条件
功能描述
例子
算术比较条件
=
等于
Name=’张三’
>
大于
Bonus>500
>=
大于等于
Bonus>=500
<
小于
Bonus<1000
<=
小于等于
Hire_date < ‘06-7月-2001’
<>、
不等于
Bonus>=1000
包含测试
IN
在指定的集合中
Student_id in(10101、10102)
NOT IN
不在指定的集合中
Student_id not in(10101、10102)
范围测试
BETWEEN ... AND
在指定的范围内
Age between 10 and 40
NOT BETWEEN ... AND
不在指定的范围内
Age between 0 and 15
匹配测试
LIKE
与指定模式匹配
Name like ‘罗%’
NOT LIKE
不与指定模式匹配
Name not lik ‘李%’
NULL测试
IS NULL
是NULL值
Name is null
IS NOT NULL
不是NULL值
Name is not null
逻辑运算符
AND
逻辑与运算
Bouns >500 and bounus < =1000
OR
逻辑或运算
Bouns>500 or name like ‘王%’
NOT
逻辑非运算
Not bonus=500
功能描述
例子
算术比较条件
=
等于
Name=’张三’
>
大于
Bonus>500
>=
大于等于
Bonus>=500
<
小于
Bonus<1000
<=
小于等于
Hire_date < ‘06-7月-2001’
<>、
不等于
Bonus>=1000
包含测试
IN
在指定的集合中
Student_id in(10101、10102)
NOT IN
不在指定的集合中
Student_id not in(10101、10102)
范围测试
BETWEEN ... AND
在指定的范围内
Age between 10 and 40
NOT BETWEEN ... AND
不在指定的范围内
Age between 0 and 15
匹配测试
LIKE
与指定模式匹配
Name like ‘罗%’
NOT LIKE
不与指定模式匹配
Name not lik ‘李%’
NULL测试
IS NULL
是NULL值
Name is null
IS NOT NULL
不是NULL值
Name is not null
逻辑运算符
AND
逻辑与运算
Bouns >500 and bounus < =1000
OR
逻辑或运算
Bouns>500 or name like ‘王%’
NOT
逻辑非运算
Not bonus=500
单一条件查询
在condition中,值使用一个比较符构成的条件查询条件。如:
SQL> select * from students where student_id<=10128;
STUDENT_ID MONITOR_ID NAME SEX DOB SPECIALTY
---------- ---------- ---------- ------ -------------- ----------
10101 王晓芳 女 07-5月 -88 计算机
10102 10101 刘春苹 女 12-8月 -91 计算机
10103 10101 王天仪 男 26-12月-89 计算机
10105 10101 韩刘 男 03-8月 -91 计算机
10112 10101 张纯玉 男 21-7月 -89 计算机
10128 10101 白昕 男 计算机
复合条件查询
复合条件查询用逻辑运算符and、or、not将多个条件连接起来作为查询条件。如:
SQL> select * from students where student_id<=10128 and sex='女';
STUDENT_ID MONITOR_ID NAME SEX DOB SPECIALTY
---------- ---------- ---------- ------ -------------- ----------
10101 王晓芳 女 07-5月 -88 计算机
10102 10101 刘春苹 女 12-8月 -91 计算机
记录排序
执行select语句时如果没有指定显示查询结果的先后顺序,此时会按照表中数据的插入的顺序显示数据行。要对查找到的数据按某种顺序进行显示,可以使用order by子句的select语句来达到此目的。格式如下:
select * from [tableName] from [tableName] order by [columnName] ;
select [columnName1,columnName2 , ...] from [tableName] order by [columnName] ;
其中condition指排序所依据的列或表达式,ASC表示按升序排序(默认),DESC表示按降序排序;值可以缺省,缺省是默认是ASC升序方式排序。
按单一列排序
按单一列排序,是指order by 子句的columnName只指一个列或一个表达式。如departments表
DEPARTMENT_ID DEPARTME ADDRESS
------------- -------- ------------
101 信息工程 1号教学楼
102 电气工程 2号教学楼
103 机电工程 3号教学楼
104 工商管理 4号教学楼
select * from departments order by department_name asc;
DEPARTMENT_ID DEPARTME ADDRESS
------------- -------- -----------
102 电气工程 2号教学楼
104 工商管理 4号教学楼
103 机电工程 3号教学楼
101 信息工程 1号教学楼
按多列排序
按多列排序是指order by子句的columnName只指一个以上列或一个表达式。 查询结果中的数据首先按columnName指定的第一个列进行排序,然后根据columnName指定的
第三个列进行排序,以此类推。
SQL> select student_id, monitor_id, sex, name from
students order by sex, monitor_id;
STUDENT_ID MONITOR_ID SEX NAME
---------- ---------- ------ ----------
10128 10101 男 白昕
10105 10101 男 韩刘
10103 10101 男 王天仪
10112 10101 男 张纯玉
10207 10205 男 王刚
10201 10205 男 赵风雨
10213 10205 男 高淼
10314 10301 男 赵迪帆
10311 10301 男 张杨
10328 10301 男 曾程程
10205 男 李秋枫
10301 男 高山
10102 10101 女 刘春苹
10228 10205 女 林紫寒
10212 10205 女 欧阳春岚
10318 10301 女 张冬云
10312 10301 女 白菲菲
10101 女 王晓芳
分组查询
列函数及其应用
分组查询主要是用于查询整个表中的统计信息,通过使用列(aggregate)函数、group by 子句及having 子句来共同完成此类的操作。
分株查询的格式:
select [columnName1,columnName2 , ...] from [tableName] group by [columnName1, columnName2, ...]
;
SQL> select * from students where student_id<=10128;
STUDENT_ID MONITOR_ID NAME SEX DOB SPECIALTY
---------- ---------- ---------- ------ -------------- ----------
10101 王晓芳 女 07-5月 -88 计算机
10102 10101 刘春苹 女 12-8月 -91 计算机
10103 10101 王天仪 男 26-12月-89 计算机
10105 10101 韩刘 男 03-8月 -91 计算机
10112 10101 张纯玉 男 21-7月 -89 计算机
10128 10101 白昕 男 计算机
复合条件查询
复合条件查询用逻辑运算符and、or、not将多个条件连接起来作为查询条件。如:
SQL> select * from students where student_id<=10128 and sex='女';
STUDENT_ID MONITOR_ID NAME SEX DOB SPECIALTY
---------- ---------- ---------- ------ -------------- ----------
10101 王晓芳 女 07-5月 -88 计算机
10102 10101 刘春苹 女 12-8月 -91 计算机
记录排序
执行select语句时如果没有指定显示查询结果的先后顺序,此时会按照表中数据的插入的顺序显示数据行。要对查找到的数据按某种顺序进行显示,可以使用order by子句的select语句来达到此目的。格式如下:
select * from [tableName] from [tableName]
select [columnName1
其中condition指排序所依据的列或表达式,ASC表示按升序排序(默认),DESC表示按降序排序;
按单一列排序
按单一列排序,是指order by 子句的columnName只指一个列或一个表达式。如departments表
DEPARTMENT_ID DEPARTME ADDRESS
------------- -------- ------------
101 信息工程 1号教学楼
102 电气工程 2号教学楼
103 机电工程 3号教学楼
104 工商管理 4号教学楼
select * from departments order by department_name asc;
DEPARTMENT_ID DEPARTME ADDRESS
------------- -------- -----------
102 电气工程 2号教学楼
104 工商管理 4号教学楼
103 机电工程 3号教学楼
101 信息工程 1号教学楼
按多列排序
按多列排序是指order by子句的columnName只指一个以上列或一个表达式。 查询结果中的数据首先按columnName指定的第一个列进行排序,然后根据columnName指定的
第三个列进行排序,以此类推。
SQL> select student_id, monitor_id, sex, name from
students order by sex, monitor_id;
STUDENT_ID MONITOR_ID SEX NAME
---------- ---------- ------ ----------
10128 10101 男 白昕
10105 10101 男 韩刘
10103 10101 男 王天仪
10112 10101 男 张纯玉
10207 10205 男 王刚
10201 10205 男 赵风雨
10213 10205 男 高淼
10314 10301 男 赵迪帆
10311 10301 男 张杨
10328 10301 男 曾程程
10205 男 李秋枫
10301 男 高山
10102 10101 女 刘春苹
10228 10205 女 林紫寒
10212 10205 女 欧阳春岚
10318 10301 女 张冬云
10312 10301 女 白菲菲
10101 女 王晓芳
分组查询
列函数及其应用
分组查询主要是用于查询整个表中的统计信息,通过使用列(aggregate)函数、group by 子句及having 子句来共同完成此类的操作。
分株查询的格式:
select [columnName1
列函数概述
列(Aggregate)函数
功能描述
用于字符、数值、日期型数据的列函数
MAX(column)
列中的最大值
MIN(column)
列中的最小值
COUNT(*)
表中行的总数
COUNT(column)
列不为NULL的行数
COUNT(distinct column)
Column指定列中相异值的数量
只用于数值型数据的列函数
SUM(column)
列中所有值的总和
AVG(column)
列中所有值的平均数
STDDEV(column)
列的标准偏差
VARIANCE(column)
列的方差
功能描述
用于字符、数值、日期型数据的列函数
MAX(column)
列中的最大值
MIN(column)
列中的最小值
COUNT(*)
表中行的总数
COUNT(column)
列不为NULL的行数
COUNT(distinct column)
Column指定列中相异值的数量
只用于数值型数据的列函数
SUM(column)
列中所有值的总和
AVG(column)
列中所有值的平均数
STDDEV(column)
列的标准偏差
VARIANCE(column)
列的方差
eg:求students表中的学生人数
SQL> select count(
SQL> select count(