您的位置:首页 > 数据库

数据库的一些基础

2016-03-07 10:37 405 查看
---恢复内容开始---

Oracle: SQL, PL/SQL

SQL: 结构化查询语言, 用来操作关系型数据库
分类:
数据查询语言:DQL SELECT
数据操作语言:DML INSERT DELETE UPDATE --MERGE
数据定义语言:DDL CREATE DROP ALTER TRUNCATE --RENAME COMMENT
数据控制语言:DCL --GRANT REVOKE
事务控制语言:TCL SAVEPOINT COMMIT ROLLBACK

DQL: SELECT
1. 基本形式
SELECT [DISTINCE] *|{column|expr [AS] alias, ...} 5--制定查询内容
FROM tablename 1--指定数据所在表
[WHERE condition] 2--过滤行
[GROUP BY col|expr, ...] 3--分组
[HAVING condition] 4--过滤分组 (条件包含分组函数)
[ORDER BY col|expr|order]; 6--排序

2. 多表查询
相等连接
自然连接: --FROM a NATURAL JOIN b; //
JOIN...USING --FROM a JOIN b USING(c);//
JOIN...ON FROM a JOIN b ON a.c = b.c;

不等连接 --FROM a JOIN b ON a.c < b.c;
自连接 --FROM a aa JOIN a ab ON aa.c = ab.c;
外连接 FROM a LEFT|RIGHT|FULL JOIN b ON a.c = b.c;
交叉连接 --FROM a CROSS JOIN b;

3. 子查询
非相关子查询:
单行子查询: SELECT ... FROM t WHERE t.c < (SELECT c1 FROM t ...);
多行子查询: SELECT ... FROM t WHERE t.c < ANY (SELECT c1 FROM t...); //ANY, ALL, IN
--多列子查询: SELECT ... FROM t WHERE (c1, c2) IN (SELECT c1, c2 FROM ....);

相关子查询:
SELECT ... FROM t1 outer
WHERE c < (SELECT ... FROM t2 WHERE t2.c = outer.c);

SELECT ... FROM t1 outer
WHERE [NOT] EXISTS (SELECT 0 FROM t2 WHERE t2.c = outer.c);

4. 函数:
单行函数:
字符函数:UPPER/LOWER/INITCAP/LENGTH/SUBSTR/INSTR/REPLACE/TRIM/LTRIM/RTRIM
数值函数:ROUND/TRUNC/MOD
日期函数:SYSDATE/MONTH_BETWEEN/ADD_MONTHS/ROUND/TRUNC/*EXTRACT
转换函数:*TO_CHAR/TO_NUMBER/*TO_DATE
其他函数:*NVL/NVL2/NULLIF/COALESCE/*CASE/DECODE
多行函数:(SUM/AVG/MAX/MIN/COUNT)

5. 其他:
伪列:ROWMID, ROWNUM
TOP-N: SELECT ... FROM (SELECT ... FROM ... ORDER BY c)
WHERE ROWNUM <= n;
分页对应的sql语句(mysql, oracle, sql server)

DML: INSERT, DELETE, UPDATE
INSERT INTO table[(col, ...)]
VALUES (val, ...);

INSERT INTO table[(col, ...)]
subquery;

DELETE [FROM] table
[WHERE condition];

UPDATE table
SET col = val, ...
[WHERE condition];

TCL: SAVEPOINT, COMMIT, ROLLBACK
SAVEPOINT spname;
COMMIT;
ROLLBACK;
ROLLBACK TO [SAVEPOINT] spname;

事务的概念,事务的四个特性,事务隔离级别(了解)

表:
CREATE TABLE tablename(
col_defined [col_constraint],
...
[table_constraint]
);
col_defind:name type[(size)] DEFAULT default_value
col_constraint: [CONSTRAINT cons_name] cons_type
table_constraint: [CONSTRAINT cons_name] cons_type(col)

cons_type: PRIMARY KEY,FOREING KEY, NOT NULL, UNIQUE,CHECK
(注意外键的创建)
ALTER TBALE tablename
ADD COLUMN col_defide;
DROP COLUMN tablename
MODIFY col_define;

ALTER TABLE tablename
ADD table_constraint;

ALTER TABLE tablename
DROP CONSTRAINT 约束名;

(一定要会用sql语句建表)

DROP TABLE tablename
TRUNCATE TABLE tablename;

视图:
CTEATE [OR REPLACE] VIEW vu[(col,...)]
AS subquery;

DROP VIEW vu;
索引:
CREATE INDEX inx_name
ON table(col);
删除索引
DROP INDEX index_name;

序列:
CREATE SEQUENCE seq
START WITH n
[INCREMENT BY n]
[MINVALUE n| NOMINVALUE]
[MAXVALUE n| NOMAXVALUE]
[CACHE n|NOCACHE]
[CYCLE|NOCYCLE];

DROP SEQUENCE seq;

ALTER SEQUENCE seq
[INCREMENT BY n]
[MINVALUE n| NOMINVALUE]
[MAXVALUE n| NOMAXVALUE]
[CACHE n|NOCACHE]
[CYCLE|NOCYCLE];

存储过程、函数
CREATE [OR REPLACE] PROCEDURE proc [(name type,...)]
IS --局部变量定义
var_name var_type [:=val|DEFAULT val];
BEGIN --语句
IF/CASE/WHILE/LOOP/FOR
SQL语句
END;

DROP PROCEDURE proc;

如何执行存储过程、函数

CREATE [OR REPLACE] FUNCTION func [(name IN|OUT|INOUT type,...)]
RETURN return type
IS --局部变量定义
var_name var_type [:=val|DEFAULT val];
BEGIN --语句
IF/CASE/WHILE/LOOP/FOR
SQL语句
END;

DROP PROCEDURE proc;

DROP FUNCTION func;

java 中 和 IN OUT 的区别↓

f(){
int i=2;
f2(i);
print(i);
}
f2(int i){
++i;
}

---恢复内容结束---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: