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语句中使用算术表达式,算术表达式由数值数据类型的列名、数值常量和连接它们的算术操作符组成算术操作符包括加(+)、减(-)、乘(*)、除(/) 

比较操作符

比较操作符用于比较两个表达式的值比较操作符包括 =!=<><=>=BETWEENANDINLIKE 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码返回对应的字符

LPADRPAD :填充

TRIM() :去除左右两边的空格符

LENGTH() --获取字符串长度

DECODE(ssex,’0’,’’,’1’,’’) :  --逐个值替换(查询结果01,把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  --排序(有相同的并列排,序号是连续的)

原文地址:https://www.cnblogs.com/hhthtt/p/10861906.html