sql语言分为
-
数据查询语言(DDL Data Query Language)
create:创建数据库对象
alter :修改数据库对象
drop:删除数据库对象 -
数据操作语言(DML Data Manipulation Language)
insert:向表中插入数据
update :更新表中数据
select:查询表中数据
deletel:删除表中数据 -
事务处理语言(TCL)
-
数据控制语言(DCL)
grant:授权命令
revoke:撤销权限命令 -
数据定义语言(DDL)
-
指针控制语言(CCL)
sql(数据查询语言)
用于关系型数据库操作;数据脚本文件的扩展名。
1.数据查询语言
(1)简单查询
- 查询所有字段
select * from 表名;
- 查询指定字段
select 指定字段名 from 表名;
(多个指定字段用","分割;表名,字段不区分大小写)
- 字段别名
select 字段名 as 字段别名 from 表名;
(多个指定字段别名用","分割;as可以省略,直接字段名后加别名
表名也可以有别名,直接写在表后就行)
- 字段计算
select 显示字段,字段计算(+,-, * ,/) from 表名;
(显示所有信息和计算过后的信息
select 表名. * ,字段计算(+,-,*,/) from 表名;)
- 字符串连接
select 字段 || ‘连接两个字段的叙述’ || 字段 from 表名;
- 去重
select distinct 字段名 from 表名;
- 查询结果排序
- 一个字段排序
select * from 表名 order by 排序字段 asc/desc;
(升序asc,降序desc;默认是升序(asc)) - 多个字段排序
select * from 表名 order by 排序字段名 asc/desc,第二排序字段名 asc/desc;
(asc/desc仅跟相邻字段起作用,别名也可以)
- 一个字段排序
(2)条件查询
- 指定条件查询
select * from 表名 where 字段名 运算符 查询信息;
(运算符:>,<,=,<>不等于,>=,<=)
其他比较运算:
between and,in,like,is null
- 区间查询
select * from 表名 where 字段名 between 数据 and 数据;
- 查询一个字段的多条记录
select * from 表名 where 字段名 in(查询信息);
- 模糊查询
select * from 表名 where 字段名 like '%';
(%:0~n个字符,_:代表一个字符)
- 查询为空
select * from 表名 where 字段名 is null;
逻辑运算
and,or,not
- 且
select * from 表名 where 字段条件 and 字段条件;
- 或
select * from 表名 where 字段条件 or 字段条件;
- 取反
select * from 表名 where 字段名 not in(字段信息);
(3)函数查询
-
单行函数
作用于查询中返回的每一行
每行返回一个结果
可能返回一个与参数不同类型的数据值
可能需要一个或多个参数
能够用在select、where和order by子句中;
可以嵌套 -
字符串函数
- 字符串大小写
select upper(字段名) [别名],lower(字段名) [别名],initcap(字段名) [别名] from 表名; - 字符串连接,截取,长度
select concat(字段名1,字段名2) [别名],substr(字段名,截取数) [别名],length(字段名) [别名] from 表名; - 字符串左/右补齐,查找指定字符,替换,去空格
select lpad(字段名,长度,所补内容),rpad(字段名,长度,所补内容),instr('字符串','查找字符'),replace('字符串','要替换字符','替换字符'),trim('字符串') from 表名;
(trim():去空格,只去除字符串两边的空格)
- 字符串大小写
- 数字函数
- 四舍五入指定小数值
select round(数据,小数位数) [别名] from 表名;
(小数位数可以是…2、1、0、-1(对个位进行舍入)、-2(对十位进行舍入)…) - 截断指定小数的值
select trunc(数据,截断数) from 表名; - 取余
select mod(除数,被除数) from 表名;
- 四舍五入指定小数值
- 日期的运算
- 查询系统时间
select sysdate from dual;
(dual是系统表) - 增加时间
select sysdate + 天数 result from dual; - 减少时间
select sysdate - 天数 result from dual; - 日期-日期
select 字段名,sysdate - 表内日期 result from 表名; - 加小时数到日期上
select 日期字段 + 天数/24 result from 表名;
- 查询系统时间
- 日期函数
- 查询两个日期之间的月数
select 字段名,months_between(日期1/日期字段名1,日期2/日期字段名2) [别名] from 表名; - 加本月到日期
select add_months(日期/日期字段名,所加月) [别名] from 表名; - 查询下星期几是几号
select next_day(日期/日期字段名,'星期') [别名] from 表名; - 查询指定月的最后一天
select last_day(日期/日期字段名) [别名] from 表名; - 四舍五入日期,截断日期
select round(日期/日期字段名,'year/month/day') [别名],trunc(日期/日期字段名,'year/month/day') [别名] from 表名;
- 查询两个日期之间的月数
- 转换函数
-
字符串转换日期类型数据 to_date
select to_date('日期字符串数据','日期的格式') result from dual;
(日期的格式,通过日期的字符串的格式修改。) -
日期类型转换成字符串to_char
select to_char(日期,'取出年') || ‘ 年 ’ || to_char(日期,'取出月') || ' 月 ' || to_char(日期,'取出日') || ' 日 ' || to_char(日期,'day') || '星期' || result from dual;
或者
select to_char(日期,‘yyyy"年"mm"月"dd"天" hh24:mi:ss’) result from dual; -
字符串转数字to_number
select to_number('数字字符串') [别名] from 表名; -
数字转字符串to_char
select to_char(数字) [别名] from 表名;
-
- 通用函数:处理空值
- 将一个空值转成一个实际值
nvl(本身值,0) - 判断是否有空值
nvl2(本身值,自定义不为空的值,自定义为空的值)
- 将一个空值转成一个实际值
(2) 多行函数
处理多条记录
- 分组函数
group by
having可以对分组的结果进行过滤
- 统计函数
count()
max()
min()
sum()
avg()
网友评论