一、SQL (Structured Query Language:)   结构查询语言

 

1DML Data Manipulationn. 操纵;操作;处理;篡改) Language 修改数据

单表查询DISTINCT(去重),’别名加注释’

BETWEEN最小值 AND最大值

模糊查询(%多个字符,_单个字符)、<> 和!=不等于符号、

单查询公式:{Select distinct 列 别名 from 表名 where 条件ORDER BY 排序字段 1,2 ASC|DESC}

单行函数:function_name 函数名(column列名|expression表达式,[arg1,arg2,…参数])

0.1字符函数:UPPER(转大写),LOWER(转小写)、initcap()首大写、||连接CONCAT(‘hello ‘,’world’)substr(‘hello’,1,3)截取、length(‘hello’)长度、replace(‘hello’,’l’,’x’)替换

0.2数值函数:ROUND(789.536,2)四舍五入、TRUNC()截断、MOD取余、

0.3 SYSDATE 当前日期、ROUND((SYSDATE-hiredate)/7)求之前星期数

to_date(‘2018-10-01′,’yyyy-MM-dd’) ROUND(sysdate) 取当前不带日期

to_char(fa.last_update_date,’yyyy-mm-dd’)>’2018-10-10′

0.4 转换函数TO_CHAR() 换成字符、TO_NUMBER()换成数字、TO_DATE()换成日期、

TO_CHAR(hiredate,’yyyy-mm-dd’)

0.5 通用函数 四则运算、(sal+NVL(comm,0))*12字段默认给指定数值

IFELSEIFELSE = DECODE()

SELECT DECODE(1,1,’ 结果是1′,2,’ 结果时2′,3,’ 结果是3′) FROM DUAL ;

多表查询

1、左连接和右连接(不重要一方加(+))

SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno ; (+)在等号左边是右连接,反之左连接。

2、交叉连接 CROSS JOIN产生笛卡尔积)

SELECT * FROM emp CROSS JOIN dept ;

3、自然连接 NATURAL JOIN)自动关联字段匹配

SELECT * FROM emp NATURAL JOIN dept ;

4、USING子句、直接关联操作列

SELECT * FROM emp e JOIN dept d USING(deptno) WHERE deptno=30 ;

5、ON子句、用户自己规定连接条件

SELECT * FROM emp e JOIN dept d ON(e.deptno=d.deptno) WHERE deptno=30 ;

组函数:COUNT() MAX() MIN() AVG() SUM(),

使用条件,1、程序中存在GROUP BY,并且指定分组条件。2、单独使用分组函数除了相等条件分组函数使用HAVING条件。

SELECT {DISTINCT} FROM{WHERE (s)} {GROUP BY {HAVING 分组条件}} {ORDER BY排序字段 ASC|DESC , 排序字段ACS | DESC ,}

分组:一列上有重复内容,可以嵌套使用

=ANY 等于IN 比最大值要小、>ALL比最大值大、<ALL比最小值小

事务操作(会出现死锁)

插入:CREATE TABLE myemp AS SELECT * FROM emp ;(创建备份表)

INSERT INTO 表名(字段)valuesTO_DATE(‘2009-01-16′,’yyyy-mm-dd’

更新:UPDATE 表名SET sal=5000 WHERE empno=7899;

删除:DELETE FROM表名 WHERE条件;

DROP TABLE book CASCADE CONSTRAINT ;强制删除

 

2、DDL Data Definition n. 定义;[] 清晰度;解说)Language修改表结构

 

创建表:CREATE TABLE temp AS (SELECT * FROM emp WHERE 1==2) 创建表结构。1==2不能满足的条件所以只复制了表结构

CREATE TABLE temp(字段名称 字段类型(默认值))

删除表:DROP TABLE person (需要回滚);TRUNCATE TABLE tperson ;(直接截断,不用回滚)

整加表字段:ALTER TABLE person ADD (address VARCHAR(200) DEFAULT ‘ ‘) ;

修改表字段结构:ALTER TABLE MODIFY ( DEFAULT )

RENAME 旧名称TO新名称 ;

约束条件:DROP TABLE person ;

CREATE TABLE person

(

pid VARCHAR2(18)PRIMARY KEY(主键约束) ,

name VARCHAR2(200)NOT NULL(非空约束) ,

age NUMBER(3) ,UNIQUE NOT NULL(唯一约束除主键外)

birthday DATE ,

sex VARCHAR2(2) DEFA CHECK(age BETWEEN 0 AND 150)/CHECK(sex IN (‘‘,’‘))(检查约束),

CONSTRAINT person_pid_pk PRIMARY KEY(pid) pid约束命名

ALTER TABLE book ADD CONSTRAINT person_book_pid_fk FOREIGN KEY(pid) REFERENCES person(pid) ON DELETE CASCADE ;在附表里加外键约束。

ALTER TABLE 表名称DROP CONSTRAINT 约束名称;

伪列:SELECT ROWNUM,empno,ename,job,sal,hiredate FROM emp WHERE ROWNUM<=5;

集合:UNION(无重复) UNION ALL(有重复) INTERSECT (俩个相同)MINUS (不同集合)

视图创建:CREATE VIEW 视图名称 AS 子查询 WITH CHECK OPTION(不更新创建条件);

CREATE VIEW 视图名称 AS 子查询 WITH READ ONLY(只读视图操作)

EgCREATE VIEW empv20 AS SELECT empno,ename,job,hiredate FROM emp WHERE deptno=20 ;

视图删除:DROP VIEW empv20 ;

视图修改:CREATE OR REPLACE 视图名称AS子查询 ;

 

版权声明:本文为Smileing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Smileing/p/9985767.html