oracle
Posted hhthtt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle相关的知识,希望对你有一定的参考价值。
SQL语言的组成
DDL(数据定义语言):维护(定义、修改、删除)SQL模式对象.
DML (数据操纵语言) :包括数据查询和数据更新(增、删、改,查).
DCL (数据控制语言) :对数据的访问控制(授予权限、取消权限).
TCL (事务控制语言) :对事务的控制(提交、回滚、保存点)
Select sysdate from dual; --查询当前日期(dual 虚拟表)
Select systimestamp from dual; --查询当然时间的时间戳
Tablespaces → USERS → Tables 查看所有的表
伪列
Rownum 是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数(做分页)
Select rowum ,表名.* from 表名
Rowed 是表中行的存储地址,该地址可以唯一地标识数据库中的一行
Select rowid,表名.* from 表名
数据定义语言
数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象
用于操纵表结构的数据定义语言命令有:
CREATE TABLE
ALTER TABLE
TRUNCATE TABLE
DROP TABLE
外键约束:
foreign key(id) references 表名(id)
数据完整性:
可靠性+准确性
复制表:
复制表结构:
CREATE TABLE 表名 AS SELECT * FROM 要复制的表名 WHERE 1=2;
复制整张表:
CREATE TABLE 表名 AS SELECT * FROM 要复制的表名;
插入其他表中的数据:
Insert into 表名 select * from 要复制的表名(后面可where加条件)
事务控制语句:
COMMIT - 提交并结束事务处理
ROLLBACK - 撤销事务中已完成的工作
SAVEPOINT – 标记事务中可以回滚的点
数据控制语言/授予权限
GRANT 授予权限
REVOKE 撤销已授予的权限
授权需管理员身份登录(system),数据库:ORCL,连接为:SYSDBA
创建用户并授予权限:
create user 用户名 identified by 密码; --创建用户
grant connect, resource to 用户名; --授予权限
REVOKE SELECT, UPDATE ON t_student FROM 用户名; --取消权限
用户登录:连接为:Normal
表连接:
不使用join
Select * from 表名,表名 where 表一.id=表二.id;
Sql操作符
算数操作符:
算术操作符用于执行数值计算可以在SQL语句中使用算术表达式,算术表达式由数值数据类型的列名、数值常量和连接它们的算术操作符组成算术操作符包括加(+)、减(-)、乘(*)、除(/)
比较操作符:
比较操作符用于比较两个表达式的值比较操作符包括 =、!=、<、>、<=、>=、BETWEEN…AND、IN、LIKE 和 IS NULL等
逻辑操作符:
逻辑操作符用于组合多个比较运算的结果以生成一个或真或假的结果。逻辑操作符包括与(AND)、或(OR)和非(NOT),NOT通常和AND,OR联合使用。
集合操作符:
集合操作符将两个查询的结果组合成一个结果
UNION 操作符返回两个查询的不重复的所有行。INTERSECT 操作符只返回两个查询的公共行。MINUS 操作符返回从第一个查询结果中排除第二个查询中出现的行。select * from 表名 where 条件 集合操作符 select * from 表名 where 条件
连接操作符:
连接操作符用于将多个字符串或数据值合并成一个字符串使用连接操作符可以将表中的多个列合并成一列SELECT (‘学号为‘ || SID|| ‘的同学姓名是‘ || SNAME) FROM t_student;
操作符的优先级:
SQL 操作符的优先级从高到低的顺序是:算术操作符 --------最高优先级连接操作符比较操作符NOT 逻辑操作符AND 逻辑操作符OR 逻辑操作符 --------最低优先级
Sql函数
SQL 函数带有一个或多个参数并返回一个值
单行函数:
单行函数对于从表中查询的每一行只返回一个值可以出现在 SELECT 子句中和 WHERE 子句中 单行函数可以大致划分为:字符函数数字函数日期函数转换函数其他函数
字符函数:
Initcap(char) --首字母大写
Lower(char) --大写转小写
Upper(char) --小写转大写
Ltrim(‘xyzadams’,’xyz’) --从左边开始找 符合x y z的去掉
Rtrim(‘xyzadams’,’xyz’) --从右边开始找 符合x y z的去掉
translate(‘jack’,’j’ ,’b’) --把第一个字符串中的j替换为b
Replace(‘jack’,’j’ ,’b’) --把第一个字符串中的j替换为b
instr (‘worldwide’,’d’) --d在字符串中的索引
substr(‘abcdefg’,3,2) --截取字符串,从索引3开始(包含3)截取2个
concat (‘Hello’,’ world’) --拼串,将2个拼为一个
CHR() :根据ASCII码返回对应的字符
LPAD和RPAD :填充
TRIM() :去除左右两边的空格符
LENGTH() :--获取字符串长度
DECODE(ssex,’0’,’男’,’1’,’女’) : --逐个值替换(查询结果0或1,把0替换为男,把1替换为女)
数字函数:
Abs() --绝对值
Ceil() --向上取整
Cos() --三角函数
Floor() --向下取整
Power(m,n) --去次幂
Mod(m,n) --取余
Round(m,n) --四舍五入,可选保留小数点后几位数
Trunc() --舍去,可选保留小数点后几位数
Sqrt() --平方根
Sign()
日函数:
日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果
日期函数包括:
ADD_MONTHS() --偏移量
MONTHS_BETWEEN
LAST_DAY
ROUND
TRUNC
NEXT_DAY
EXTRACT 计算年份差
转换函数:
转换函数将值从一种数据类型转换为另一种数据类型
常用的转换函数有:
TO_CHAR (1.2,’¥0.00’) --按照指定的格式转化字符串
TO_DATE(1998-04-11,’yyyy-MM-dd’) --将字符串转化成日期
TO_NUMBER() --将数字字符串转化成数字
其他函数:
Nvl(指定字段,0) --如果这个值为空默认值为0
Nvl2(字段,不为空的值,为空的值) --指定字段判断
Nullif(100,200) --比较两个值,如果不相等则为第一个值,如果想等则为空
分组函数:
分组函数基于一组行来返回结果为每一组行返回一个值
AVG
MIN
MAX
SUM
COUNT
分析函数:
分析函数根据一组行来计算聚合值
用于计算完成聚集的累计排名、移动平均数等
分析函数为每组记录返回多个行
ROW_NUMBER() over(order by 字段名 desc) as num --排序(连续排序)
Rank over(order by 字段名 desc) as num --排序(有相同的并列排,序号随后跳跃)
DENSE_RANK over(order by 字段名 desc) as num --排序(有相同的并列排,序号是连续的)
以上是关于oracle的主要内容,如果未能解决你的问题,请参考以下文章