查看Oracle用户可使用那些表数据字典表(管理用户全部表)sql
desc user_tables;(查看能够操做的表) select tables_name from user_tables;(SCOTT用户可使用四个表) 字符类型都是左对齐,数字类型的都是右对齐 空值是不可用的、未分配的、未知的或不使用的值空值不一样于零或空格
设置显示行间距数据库
set linesize 200;宽度为200 set pagesize 50;每页现实50行 create table test(hiredate varchar(20));建立表
查看当前用户可使用的表缓存
select table_name from user_tables;
标题的默认设置oracle
字符和日期列标题的对齐方式为:左对齐 数字列标题的对齐方式:右对齐 默认的标题显示方式:大写 空值不等同于零或者空格 空值带入四则运算仍然仍是空值
定义别名ide
列别名具备如下特征 可重命名标题、有助于计算、紧跟在列名后(列名和别名之间也能够加上可选关键词AS)若是别名包括空格或特殊字符、或者区分大小写则须要双引号
连接字符串函数
select ename||job from emp; 把两个列名合并一块显示出来
重复行code
select distinct deptno from emp; distinct (去重)
只显示空值orm
select * from emp where mgr is null ;
逻辑判断server
AND 若是两个条件都为真,则返回true(两个条件都为真时则返回值) OR 若是其中一个条件为真。则返回true NOT 若是条件为假则返回true
sqlplus 下清屏 clear screen对象
优先级规则
运算符 | 含义 |
---|---|
加减乘除 | 算数运算符 |
管道符号 | 连接运算符 |
where | 比较运算符 |
空值 | IS 、[not]、 null、like、[not]、in |
5 | [not] DETWEEN(在什么什么之间、在什么什么以外) |
!= | 不等于 |
条件为假则返回true | NOT 逻辑条件 |
和 | AND 逻辑条件 |
或 | OR 逻辑条件 |
使用ORDER BY 句子
使用order by 子句能够对检索进行排序 ASC:升序 (默认升序)从小到大 DESC:降序 order by 子句位于select 语句的最后 排序能够用别名或者数字 select ename,sal gz from emp order by 2; 结果就是工资为降序排列 也可按章多个列进行排序 select ename,sal,deptno from emp order by 3,2 desc; 已sal降序排列(从大到小)
关闭数据库和开启
shutdown normal (关闭) startup mount (开启)
替代变量
使用单与号(&)及双(&&)(屡次)可代替临时存储值where条件order by子句 列表达式、表名、整个select语句 缓存在内存中 指定列名、表达式和文本 变量字符类型要加单引号
使用DEFIN 命令
使用define命令能够建立变量并为其赋值 使用undefine 能够删除变量 先进行赋值 define abc=20 select * from emp where depton=&abc;(调用赋值的变量) 删除变量undefine abc=20 再出调用则搜懂输入
SQL 函数
单行函数(每个返回一个结果) 多行函数(每一行集返回一个结果) 处理数据项、接受参数并返回一个值、对每一个返回进行处理、为每一个行返回一个结果、可能会修改数据类型、能够嵌套、接受参数、这些参数能够是列或表达式 单行函数 字符、数字、常规、日期、转换
字符函数
大小写转化函数 LOWER、UPPER、INITCAP、 字符处理函数 CONCAT、SUDSTR、LENGTH、
函数 | 结果 |
---|---|
LOWER(‘SQL Course’) | (sql course)所有小写 |
UPPER(‘SQL Course’) | (SQL COURSE)所有大写 |
INITCAP('SQL Course') | (Sql Course)首字母大写 |
dual 伪表(存在内存中的不存在数据库中)
字符处理
函数 | 结果 |
---|---|
CONCAT(‘Hello','World’) | HelloWorld(拼接在一块)支持两个字符串 |
SUDSTR ('HelloWorld',1,5) | Hello(1到5)字符串截取 |
LENGTH ('HelloWorld') | 10(字符串长度) |
INSTR('HelloWorld','W') | 6 (定位字符位置) |
LPAD(salary,10,'*') | **24000(左填充) |
RPAD(salary,10,'*') | 24000**(右填充) |
REPLACE ('JACK and JUE','J','BL') | BLACK and BLUE |
TRIM('H'FROM 'HelloWorld') | elloWorld(去除指定字符) |
数字函数
ROUND:将值舍入到指定的小数位(-1精确的个位) select round(45.923,2) from dual; 返回45.92 TRUNC:将值截断到指定的小数位 返回40 MOD:返回除法运算的余数 select mob(10,3) from dual; 返回1
处理日期
oracle DB 之内部数字格式存储日期:世纪、年、月、日、小时、分钟、秒 默认的日期格式DD(月2位字符)-MON(月1月到12月)-RR(两位的寄点法)世纪21世纪仍是20世纪 经过仅指定年份的后两位能够在20世纪存储21世纪的日期、也能够在21世纪存储20世纪的日期
RR日期格式
当前年份 | 指定的日期 | RR格式 | YY格式 |
---|---|---|---|
1995 | 27-OCT-95 | 1995 | 1995 |
1995 | 27-OCT-17 | 2017 | 1997 |
2001 | 27-OCT-17 | 2017 | 2017 |
2001 | 27-OCT-95 | 1995 | 2095 |
sysdate 是返回一下对象的函数:-日期-时间
日期处理函数
函数 | 结果 |
---|---|
MONTHS_DETWEEN | 两个日期之间的月数 |
ADD_MONTHS | 将日历月添加到日期 |
NEXT_DAY | 指定日期以后的下一个日期 |
LAST_DAY | 当月最后一天 |
ROUND | 舍入日期 |
TRUNC | 截断日期 |
MONTHS_BETWEEN('01-sep-95','11-jan-94') | 19.6774194 |
ADD_MONTHS('31-jan-96',1) | 29-feb-96 |
NEXT_DAY('01-SEP-95',FRIDAY) | 08-SEP-95 |
LAST_DAY('01-FEB-95') | 28-FEB-95 |
ROUND(SYSDATE,'MONTH')(month月)假设sysdate='25-jul-03' | 01-AUG-03(大于等于15则月份进一) |
ROUND(SYSDATE,'YEAR')(year年) | 01-JAN-04(年份进行进一(月)大于等于6则年份进一月份大于等) |
TRUNC(SYSDATE,'MONTH') | 01-JUL-03 |
TRUNC(SYSDATE,'YEAR') | 01-JAN-03 |
转换函数和条件表达式
- 隐式数据类型转换
- 显示数据类型转换
- 数字类型、字符类型、时间类型的转换
使用TO_CHAR 函数处理日期
必须放在单引号内 区分大小写 能够包含任何有效的日期格式元素 具备一个fm元素、用于删除填充的空格或隐藏前导零 与日期值之间用逗号分隔
元素 | 结果 |
---|---|
YYYY | 用数字表示的完全年份 |
YEAR | 用英文表示的年份 |
MM | 月份的俩位数值 |
MONTH | 月份的完整名称 |
MON | 月份的三位字母缩写 |
DY | 一周中某日的三个字母缩写 |
DAY | 一周中某日的完整名称 |
DD | 用数字表示的月份中某日 |
9 | 表明一个数字 |
0 | 强制显示0 |
$ | 放置一个浮动的美圆符号 |
L | 使用浮动的本地货币符号 |
. | 显示小数点 |
, | 显示做为千位指示的逗号 |
嵌套函数
- 单行函数能够嵌套到任意层
- 嵌套函数的计算顺序是从最内层到最外层
- 嵌套函数从内到外
常规函数、且合适使用空值的场合 将空值转换为实际值、可使用的数据类型为日期、字符和数字、数据类型必须匹配: NVL(expr1,exrp2) NVL2(EXPR1,EXRP2,EXRP3) NULLIF(expr1,expr2)
组函数报告汇集数据
AVG | 计算平均值 |
---|---|
count | 一个字段有多少行 |
max | 最大值 |
min | 最小值 |
sum | 一个字段的和 |
count | 显示行数 |
distinct | 去除重复行 |
建立数据组
group by 分组 select deptno,avg(sal) from emp group by deptno; 分组求平均数
select deptno,avg(sal),job from emp group by deptno,job;
select deptno,max(sal) from emp group by hacing max(sal)>=3000;
使用outer 联接查询一般不知足联接条件的数据 生成两个或多个表中全部行的笛卡尔积
天然连接 natural join 子句 using 子句 outer连接(外连接) left outer join right outer join full outer join 交叉连接
natural join 子句以两个表中具备相同名称的全部列为基础 它从两个表中选择在全部匹列中具备相同值得哪些行 若是名称相同的列具备不一样的数据类型,则返回一个错误
两个查询内容同样则显示公有值
若是多个列具备相同的名称,但数据类型不匹配,请使用using子句指定等值联接的列 当有多个列想匹配时,使用using 子句可仅与一列相匹配 natural loin 和using 语句是互相排斥的。
不要对using 子句中使用的列加以限定 若是在sql语句的另外一个位置使用了同一列,则不要对其设置别名
天然联接的基本联接条件是对具备相同名称的全部列进行等值连接 使用ON子句可指定任意条件或指定要联接的列 联动条件独立于其余搜索条件 使用ON子句能够代码易于理解
inner联接与outer联接
在sql:1999中,若是两个表的联接只返回相匹配的行,则称联接inner 两个表直接的联接不只返回inner联接的结果,还返回左(或右)表中不匹配的行,则称为该联接为左(或右)outer连接 两个表之间的联接不只返回inner连接的结果,还返回左和右联接的结果,则称该连接为彻底outer联接
先执行子查询(内部查询),再执行主查询(外部查询)主查询会使用子查询的结果
仅返回一行
运算符 | 含义 |
---|---|
= | 等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
<> | 不等于 |
联合运算 交集预算 普及运算 select 列表中的表达式在数量上必须匹配 第二个查询中每一列的数据类型必须与第一个查询中列的数据类型相匹配 可使用括号更改执行顺序 order dy 子句只能出如今语句的末尾 Oracle server 和集合运算符 除非使用union all 运算符、不然会自动删除重复行 第一个查询汇总的列名将显示在结果中 除非使用union all 运算符,不然默认状况下输出按照升序进行排序
uninon 运算符从两个查询中分会不包括重复行的那些行
DML语句
增删改查
DDL语句
数据库事务处理因为如下语句组成 用于对数据进行一次一致更改的DML语句 一条DDL语句一条数据控制语句(DCL)语句 在执行第一条DML SQL 语句时开始 在发生下列事件之一时结束: 发出COMMIT或ROLLDACK语句 执行DDL或DCL语句(自动提交) 用户推出SAQL Developer或SQL*Plus 系统崩溃 使用commit和rolldack提交、回滚 确保数据的一致性
数据库事务处理
使用savepoint (a) 语句可在当前事务处理中建立一个标记 使用rollback to savepoint 语句能够回退到该标记 先还原B 在还原A 如先还原A则B也消失
执行COMMIT以后的数据状态
数据更改已保存在数据库中 已改写之前的数据状态 搜游用户均可以查询看的结果 受影响行上的锁已被释放、其余用户能够进行处理 搜游保存都被清除
执行ROLLBACK操做以后的数据状态
数据已还原到之前状态 受影响行上的锁一杯释放 delete from copy_emp; rollback;