1.数据库基本概念
- Data(数据):是指对人们有用的信息
- DataBase(DB,数据库):数据的仓库
- DBMS:数据库管理系统(用来管理数据的一个软件)
- RDBMS:关系型数据管理系统
- ORDBMS:对象关系型数据管理系统
- 表、关系、二维表
- 行、记录、元组
- 列、字段、属性
- 数据项、数据单元
SQL概述:
SQL(Structured query language) 结构化查询语言,主要作用是用于操作关系型数据库的,分类如下:
- 数据查询语言 DQL---select 用于查询数据
- 数据操作语言 DML---insert、update、delete、merge(用于合并行),主要用于操作行
- 数据定义语言DDL---create、drop、alert、truncate(剪短)、rename、comment(为表和列来添加注释),主要用于操作数据库对象(表、视图等)
- 数据控制语言DCL---grant(允许访问)、revoke(撤销访问),主要用于控制操作对数据和数据对象的访问
- 事务控制语言TCL---commit、rollback、savepoint,主要作用是确认对数据修改、提交、回滚(取消对数据修改)、定义保存点(可以定义事务回滚到某一个点),对事务进行控制
2.SELECT 基本查询
DQL数据查询语句,主要作用是用于查询数据(行、列、多表数据查询)
select * from table_name
select [distinct] col_name|表达式[[as] col_alias],...from table_name where 条件 order by
主要作用是我们可以查询具体的某一列、某个表达式的值或者是通过列别名来标识这个列、表达式
- 比较运算符: >,>=,<,<=,=,<>,!=,^=
- 特殊运算符:[not]between... and,[not] like,[not] in,is[not] null
- 多个条件,可以使用NOT、OR、AND连接
- 字符与日期需要使用单引号定界,字符是大小写敏感,日期是格式敏感
- OEDER BY 用来对数据进行排序。ASC升序,DESC 降序,默认null值是最大的 order by col1 desc,col2 首先按照col1倒叙,col1值相同时,按照col2升序排序
3.单行函数
- 函数概念、分类
函数:具有某种功能的程序块,通常包括输入端和输出端
单行函数:接受一个数据、输出一个数据
多行函数:聚合函数,分组函数。接受一组数据,输出一个数据
- 常见字符函数
- 大小写相关:lower upper initcap
例如:
lower:所有字母小写
upper:所有字母大写
initcap:所有单词首字母大写
-
- 其他:trim,ltrim,rtrim,lpad,rpad,instr,substr,length,concat,replace
例如:
trim:首尾去除,格式 trim('H' from 'HelloHH');
ltrim:首去除,格式 ltrim('HelloHH','H')
rtrim:尾去除,格式 rtrim('HelloHH','H')
lpad:左补齐,格式: lpad(1000,8,'*') ---1000是四位,需要在1000的左侧用“”补齐至八位,结果是****1000
rpad:右补齐,格式:rpad(1000,8,'*');
instr:查找字符在字符串中的位置,格式:instr('hello miss','miss'),结果是7
substr:截取字符串,格式: substr('hello',2,3) 代表对helloweb从第二位截取3位长度
length:字符串的长度,格式: length('hello')
concat:连接两个字符串,格式 concat('hello',',java')
replace: 替换字符串,格式:replace('hello','l','i')
- 常见数值函数
round:四舍五入
trunc:去尾
mod:取模
- 常见日期函数
可以在日期数据上直接加减数值,该数值表示日期前后的天数
1)两天前 2)两小时前
SYSDATE:获取系统当前日期
MONTHS_BETWEEN:获取另个日期之间相差的月数
ADD_MONTH:获取几个月后的日期(例如三个月后)
LAST_DAY:获取本月的最后一天日期
EXTRACT:从日期中获取某一部分的值
- 常见转换函数
to_char:将数值或日期转换成指定格式的字符
日期:
年:year,YYYY,YY
月:month,mon,mm
日:DD
星期:Day, Dy,D
小时:HH24,HH
分钟: mm
秒:ss
数值:
L:显示本地货币符号
&:直接显示
9:表示数值
0:表示数值,不够位数会强制占位
to_date:将指定格式字符转换成日期
to_number:将指定格式字符转换成数值
- 其他函数
空值转换函数
nvl:查询字段为空值,则空值转换,格式:nvl(t.col,value)
nvl2:查询字段为不为空值,则赋值v1,空值则赋值v2,格式:nvl2(t.col,v1,v2)
nullif:如果两个值相等,则返回空,否则返回v1,格式:nullif(v1,v2)
条件分支函数
case:
decode,格式decode(t.col,case1,v1,case2,v2,...vn)
4.聚合函数和数据分组
常用聚合函数
max:最大值,可以定义在字符、数值、日期类型数据上
min:最小值,可以定义在字符、数值、日期类型数据上
sum:求和,可以定义在数值数据类型上
avg:求平均数,可以定义在数值数据类型上
count:计数,统计表达式值不为空的行数
数据分组:
group by:根据指定的列进行分组统计
having:限定显示分组后的数据
分组查询数据说明:
在select 查询列中,所有未分组列都需要出现在group by 子句中
SELECT
COL,
...
FROM table
WHERE
t1...
GROUP BY ...
HAVING .....................................................................................................................
t2...
ORDER BY ...