select 单表查询语句:
select 子句
去除重复行
where条件查询
order by 排序
group by 分组
having 分组筛选
使用函数
DML(数据操作语音):
insert 插入 : 记录值的插入;查询结果的插入,一次插入操作只能插入一行,可以添加所有列,也可以只添加部分列。
update 更新:其语义是:修改基本表中满足条件表达式的那些元组的列值,需修改的列值在set子句中指出。
delete 删除:其语义是从基本表中删除满足条件表达式的元组。
select 单表查询语句:
select 子句 :
最简单的查询方式
使用算术表达式{+ 、- 、* 、/}
使用字段别名as (as可以省略)
''表示字符串
"",双引号不代表字符串,只是表示一个整体,会原样输出
去除重复行:
缺省的情况下,查询结果中包含所有符合条件的记录行,包括重复行,清楚重复行,关键字,distinct。
order by子句:升序 asc(缺省) ,降序desc
where子句:
指定查询条件使用where子句
查询条件中使用的运算符:算术>连接>比较>逻辑{|| 表示连接运算符 , 不等于可以说!= , 也可以是<>}
查询条件中使用like运算符模糊查询(通配查询){%表示零或多个字符 ; _表示一个字符;对于特殊字符号可使用ESCAPE标识符来查找,escape用于转义指定字符}
查询条件使用is null运算符进行空值判断
sql优化问题:and 把检索结果较少的条件放到后面;or 把检索结果较多的条件放到后面
可使用小括号强行改变运算顺序
使用函数:
函数只是将取出的数据进行处理,不会改变数据库中的值。
单行函数:
字符函数:
initcap():首字母大写
upper():全部大写
lower():全部小写
translate():按字符进行翻译
replace():字符串替换
instr():查找子串的索引位置,索引位置从1开始
substr():截取字符串
concat():字符串连接函数,功能和||一致
数值函数:
ceil(X):返回大于等于x的最小整数值
floor(X):返回小于等于x的最大整数值
round(x):返回四舍五入后的值
trunc(x,[y]):返回x按精度y截取后的值
日期函数:
months_between():计算两个日期间的月数
add_month():在一个日期上加月数
next_day():基于一个日期计算下一个星期几是几号
last_day():查看某个月份最后一天是几号
round():对日期进行四舍五入
转换函数:
to_char():将日期转换为字符串,sql中的日期格式:yyyy-mm-dd hh24:mi:ss;
将数值转换为字符串,表示钱的时候:$ ¥,千位符 :¥1,000,000,000.00
to_date():将字符串转换为日期
to_number():将字符串转换为数字
通用函数:
nvl(exp1,exp2):如果exp1为null,返回exp2,否则返回exp1
nvl2(exp1,exp2,exp3):exp1为null,返回exp3,exp1不为null,返回exp2
decode(条件,值1,翻译值1,值2...值n,翻译值n,缺省值):根据条件返回相应值
between...and..:表示在两值之间,包含边界
其他函数:
in(' ' , ' ' , ' ' ):表示一个出现在集合中
is null:用来判断空值
可使用sysdate函数获取当前系统日期和时间
多行函数(分组函数,统计函数):
仅适用数值型:
sum(*):求和
avg(*):求平均值
适用任何类型数值:
count(*):用于统计表格的记录数,永远不会返回null{count(*)返回组中总记录数目、count(exp)返回表达式exp值非空的记录数目、count(distinct(exp)) 返回表达式exp值不重复的,非空的记录数目}
max(*):求取最大值
min(*):求取最小值
group by子句:
group by子句将表中数据分成若干小组
包含在group by子句中的字段则不必须出现在select列表中
having子句:
对分组查询的结果进行过滤,要使用having从句
where过滤行,having过滤分组,having支持所有where操作符
多表查询和子查询:
笛卡尔集
等值查询 =等值连接
非等值连接{>、 < 、!= 、>= 、<=}
外连接:{外连接运算符为(+) 、左外连接显示左边表的全部行、右外连接显示右边表的全部行)
自连接:将一个表当两个表使用
子查询:
子查询特点:子查询在主查询前执行一次;主查询使用子查询的结果
单行子查询:单行子查询只返回一行记录;对单行子查询可使用单行记录比较运算符<、>、=、<=、>=、<>、!=;
多行子查询:多行子查询返回多行记录;
对多行子查询只能使用多行记录比较运算符{all和子查询返回的所有值比较;any和子查询返回的任意一个值比较,in等于列表中的任何一个}
常用数据库对象:
用户user、数据库表table、数据库表的约束constraints、序列sequence、索引index、试图view、其他内容{事务、rowid和rownum、分页查询、子主题、导入导出数据}
三大范式:
第一范式:
字段不能再分
约束列的原子性,不可再分
第二范式:
不存在局部依赖
约束多对多
第三范式:
不含传递依赖(间接依赖)
约束一对多,通过外键
其他:
数据库表之间的关系:{一对一,学生和学生证;一对多,学生和班级;多对多,学生和课程}
JDBS访问数据库步骤:
1、加载jdbc连接oracle的驱动
2、创建数据库连接connection
3、创建sql命令发送器statement
4、创建sql语句
5、通过statement发送sql命令并得到结果
6、处理sql结果
7、关闭数据库资源
不允许在where子句中使用多行函数
rownum在判断的时候,只能使用<=,不能使用>=
having从句过滤分组后的结果,它只能出现在group by 从句之后,而where从句要出现在group by从句之前
select执行过程:from---where---group by ---having----select----order by
字符串和日期值要用单引号扩起来
字符串大小写敏感
日期值格式敏感,缺省的日期格式是'dd-mon-yy'
dual:这是oracle提供的一张虚拟表,专门用于测试