SQL
第一章 简单查询
1.1 基本语法
语法:select col_name1, col_name2... from tb_name;
说明:select 后面可以接:具体字段、函数、常量、*
1.2 别名
1.2.1 列别名
select col_name as col_akias ... from tb_anme;
(as 可以省略)
1.2.2 表别名
select tb_name.col_name ... from tb_name tb_alias;
1.2.3 注意:
1)表别名和列别名都仅仅在此SQL语句范围内有效,不会改变本名
2)别名不建议出现除_以外的特殊字符,如果非要加入,要在别名的两侧用双引号(" ")引起
3)别名不建议出现中文
1.3 连接符 ||
将两个字段链接在一起和成一个字段
select ename||job from emp;
1.4 其他补充
1.4.1 distinct
是去重关键字,用于去除查询结果的重复数据
--去除重复的部门编号
select distinct deptno from emp;
1.34.2 where
用于限制返回结果的行数
--工资大于1500的员工信息
select * from emp where > 1500;
第二章 条件查询
2.1 语法
select col_name1,col_name2 from tb_name where condintion;
在tb_name中按照条件condition进行筛选,从条件成立的数据中进行查找col_name1,col_name2,..列的数据
2.2 模糊查询
2.2.1 语法
--符合目标格式
select col_list from tb_name where col_name like '目标格式',
--不符合目标格式
select col_list from tb_name where col_name not like '目标格式',
2.2.2 通配符
_:有且只有一个字符
%:有零个或者一个或者多个字符
2.2.3 拓展
模糊查询中的转译设置:escape'转移字符'
--查询姓名当中含有% 的员工的信息
select * from emp where ename like '%*%%' escape '*';
2.3逻辑运算符的用法
2.3.1 语法
select col_list from tb_name where col_name1 = value|col_name2|expr
2.3.2 逻辑表达运算符
= < > <= >= <> !=
2.3.3 补充
--相关条件 where 后面数据属于表格内容
--非相关条件 where 后面的数据不属于表格内容
select * from emp where 1=1;--恒成立
select * from emp where 1=0; --恒不成立
全盘扫描:挨个判断表格中数据是否满足条件
索引扫描:先对表格数据进行排序,在定位到满足条件附近进行判断
2.3.4 注意
1)空值不能参与运算
2)区分数据类型:数值型、字符型、日期型
数值型:纯数字内容,正常的数值判断
字符型:包括字母、汉字、符号、数字,转换为ASCII码进行比较
日期型:存放时间、根据日期早晚进行比较判断
2.4 包含查询
2.4.1 语法
select col_list from tb_name where col_name in (集合)
--只要在该集合中条件成立
select col_list from tb_name where col_name not in (集合)
--只要不在该集合中条件成立
2.4.2 注意
1)集合与比较的字段也是要有相同的数据属性,即相同的数据类型
2)集合中的数据类型也要保持一致
2.5范围查询
2.5.1 语法
select col_list from tb_name where col_ name between num1 and num2;
2.5.2 注意
1)num1 <= num2
2) 包含边界值
2.6 null值判断
2.6.1 语法
select col_list from tb_name where col_name is null;
--是空值
select col_list from tb_name where col_name is not null;
--非空值
2.6.2. 补充
1)字符中的空格和数值中的0不算在空值之内
2.7 any 和 all
2.7.1 any : 任意一个
=any(集合)
>any(集合) :大于最小值
<any(集合):小于最大值
2.7.2 all : 所有全部
=all(集合)
>all(集合):大于最大值
<all(集合):小于最小值
2.8 布尔连接
2.8.1 语法
select col_name from tb_name where condition1 and condition2
select col_name from tb_name where condition1 or condition2
2.8.2 条件链接关键词
and 和(且) or 或
2.8.3 注意
1)布尔连接连接的两个字段类型可以相同 也可以不同
2)and 和 or 一起使用时 and 的优先级 高于or
3)小括号内部内容的优先级最高
第三章 分组查询
3.1 order by
3.1.1 语法
select col_list from tb_name order by odr_condition [asc|desc];
对于tb_name中查询到的col_list数据按照odr_condition 进行排序
asc 为升序,desc 为降序
group by 可对查询结果根据指定列进行分组
3.1.2 补充
1)order by 后可以跟列名,别名,位次
2)空值不参与运算而且视为正无穷
3.2 group by
3.2.1 语法
select col_name ,聚合函数,常量 from tb_name group by col_list;
对于数据源tb_name 按照col_list 进行分组 ,统计各组的情况
3.2.2 聚合函数
概念:把分散的数据按照某种规则分成不同的组、或所有数据整体作为一个组,对组级别的数据进行分析,每组得到一个返回值。
sum ():求和
max():求最大值
min():求最小值
avg():求平均数
count():计数
var_pop(value) 方差
3.2.3 注意
1、只有出现在group by之后的结果列,才可以出现在select 之后,因为group by 之后行数会减少
2、对于含有group by 子句的SQL语句,select 之后值允许出现:
1)group by 中出现的字段
2) 聚合函数
3)常量
3.3 having
3.3.1 语法
select col_list ,聚合函数,常量
from tb_name
group by col_list
having 以聚合函数为基础的条件判断
对于数据源tb_name按照col_list 分组,统计各组的分析情况,并对分析结果进行筛选
3.4关于代码顺序
书写顺序
select
from
where
group by
having
order by
读取顺序
from
where
group by
having
order by
第四章 函数
一、转换函数
作用范围
针对不同的数据类型相互转化使用,转化是可以同时指定目标类型与格式
分类
按专函的形式
显性转换:用户主动执行的转换函数而实现的
隐形转换:系统自动执行转换函数而实现
按转换的目标格式
转字符:to_char
转数值:to_number
转日期:to_date
1.1 转换函数:to_char
1.1.1数字转字符
无指定格式:单纯的由数值转换为字符
有指定格式:将数值转换为字符时,指定格式
指定格式包括指定精度与指定货币
指定精度
数值转字符的通配符:通过0或9来代指该为内容
9:指任意数字,若整数位,该位置无数字,则合适不生效,小数位该位无数字以0 补全
0:指任意数字,若整数为该位无数字,则强制显示0,小数为则一般不用0 指代
指定货币
$:美元符号
L:当地货币
注意
1)若指定格式,转换过程中易出现空格,所有常常会搭配去空格函数使用
2)转换过当中遇到小数点精度过低的过程,则会遵循四舍五入,整数位精度过低的情况,则会显示为#
3)可添加千分符
1.1.2日期转字符
1.1.2.1 拓展
获取当前相同日期的方法
select sysdate,systimestamp from dual;--获取当前日期
1.1.2.2 日期格式设置
通过一些固定字母或关键词来指代日期中的某一项内容,其中可以穿插一些分隔符,且这些关键词可以随意搭配以及更改顺序
1)年份
1)年份
YYYY:四位的年份
YYY,YY,Y:分别表示后三位、、两位、以及以为的年份
2)季度
Q:一年中地几个季度(一位)
3)月份
MONTH:月的全称(右侧空格补全九位)--英文:nls_date_language = american
MON:三位字符夫人月份缩写 --英文:nls_date_language = american
MM:一年中的第几个月(两位)
4)星期
WW:一年中的第几个星期,从第一天开始算起,七天算一周,与星期几无关
IW:一年中的第几个星期,星�
评论0