select * from tab;
select * from complaint1;
/*
数据库——数据库实例——表空间(逻辑单位)——数据文件(物理单位)
地球 ——一个国家 ——省份(逻辑单位) ——山川河流(物理单位)
通常情况下,oracle数据库只会有一个实例ORCL,
新建一个项目:
创建一个表空间,创建用户,用户去创建表
oracle是多用户的,mysql是多数据库
1,遵循SQL标准
2,不同厂商,不同的数据库产品,但是有自己的方言
3,使用自己的方言,也能完成相同的功能
4,oracle安全级别高,MYSQL开源免费
/
/
基本查询:
SQL:结构化查询语言
SQL的分类以及每类常见的操作符都有什么
四类:
DDL:数据定义语音 create alter drop
DML:数据操纵语音 insert update delete
DCL:数据控制语音 安全 授权 grant revoke
DQL:数据查询语音 select from 子句 where 子句
查询语句的结构:
select {列名}{*} from 表名 {where 条件} {group by 分组条件} {having 过滤} {order by 排序}
/
/
dual: oracle中的虚表,伪表,主要用来补齐语法结构
*/
select 1+1; /*oracle中报错,在mysql中可以*/
查询一下看看
条件查询:{where后面的写法}
关系运算符:> >= = < <= != <>
逻辑预算符:and or not
其他运算符:
- like 模糊查询
- in(set) 在某个集合内
- between…and… 在某个区间内
- is null 判断为空
- is not null 判断不为空
模糊查询:like
- % 匹配多个字符
- _ 匹配单个字符:select * from emp where ename like ‘__o%’;第三个字母是o的
如果有特殊字符,需要使用escape转义
select * from emp where ename like ‘%#%%’ escape ‘#’;
排序:order by
- 升序 asc ascend
- 降序 desc descend
select * from emp order by comm desc nulls last;(将空值放到后面)
排序注意null问题:nulls frist | last
同时排序多列,用逗号隔开
函数
-
单行函数 对某一行中的某个值进行处理
1,数值函数 ceil()取整;floor()向下取整;
round(x,y)四舍五入,x为原值,y为取的位数,小数点往右为正,小数点往左为负;
trunc(x,y) 截断,就的将x的y位后的截掉,位数原则同上
mod(x,y) 求余,同x%y
2,字符函数
select substr(‘abcdefg’,0,3) from dual;
注意:起始索引不管是写0,1,都是从第一个字符开始截取
获取字符串长度length()
去除字符左右两边的空格trim()3,日期函数
select sysdate from dual;4,转换函数
字符转数值 to_number(str) 很鸡肋
数值转字符 select to_char(sal,’$9,999,99’) from 表名;
日期转字符 to_char(sysdate,‘yyyy-mm-dd hh:mi:ss’)
字符转日期 to_date(‘2019-04-24’,‘yyy-mm-dd’)
查询某年到某年之间的,between to_date(‘1981’,‘yyyy’) and to_date(‘1999’,‘yyyy’)
5,通用函数
nvl(x,y),如果x = null 就返回y
nvl2(x,y,z),如果x = null,返回z,否则返回y
nullif(x,y) 如果x=y,返回null,否则返回1
coalesce 返回第一个不为null的函数- 多行函数 对某一列的所有行进行处理max,min,count,sum,avg
条件表达式:
mysql和Oracle通用写法
case 字段:
when 值1 then 值
when 值2 then 值
else
默认值
end
select
case ename
when 'smith' then '111'
when 'allen' then '222'
else
'000'
end
from 表名
Oracle特有的写法
decode(字段 , if1 , then1 , if2 , then 2 , else1 )
分组表达式,group by
SQL的执行顺序:from…where …group by … having … select … order by …
where 和having区别:
- where后面不能接聚合函数,可以接单行函数
- having是在group by之后执行,可以接聚合函数