Oracle 学习:约束、查询语句
2016-07-24 22:37
525 查看
阅读本文大概需要 6 分钟。
主键约束
外键约束
唯一约束
检查约束
数据字典(user_constraints)
确保数据完整性(精确性和可靠性)
一张表中只能设置一个主键约束
添加表级外键约束方法
table1从表table2主表
外建约束时主表当中的字段,必须是主表当中的主键
主从表当中的字段必须是同一个数据类型
从表中外键字段的值,必须来自主表中相印字段的值,或者NULL
与主键约束的区别:允许空值,在一个表中可以从在多个唯一约束
比较运算符(> < <= >= <>)
逻辑运算符 (and or not)
优先级: not > and > or
单条件的查询
多条件的查询 (and or not)
通配符的使用(’_’,’%’)
_ :表示一个字符 % : 表示任意个字符
IN/ NOT IN 一般用于字符
decode 函数具有类似功能。
持之以恒。
一、约束
非空约束主键约束
外键约束
唯一约束
检查约束
数据字典(user_constraints)
1. 约束的作用
定义规则确保数据完整性(精确性和可靠性)
2. 非空约束
1 > 在创建表的时候设置非空约束
CREATE TABLE table_name (column_name datatype NOT NULL,...);
2 > 在修改表的的候添加非空约束
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
3 > 在修改表的时候去除非空约束
ALTER TABLE table_name MODIFY column_name datatype NULL;
3.主键约束
作用:确保表中每一行数据的唯一性 (非空,唯一)一张表中只能设置一个主键约束
1 > 在创建表的时候设置主键约束
CREATE TABLE table_name (column_name datatype PRIMARY KEY,...); //联合主键 CREATE TABLE table_name (column_name datatype,... ,CONSTRAINT constaint_name PRIMARY KEY(column_name1,...));
2 > 在修改表的的候添加主键约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name1,...);
3 > 更改主键约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;
3 > 删除主键约束
//禁用|启用 ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name; //彻底删除 ALTER TABLE table_name DROP CONSTRAINT constraint_name; ALTER TABLE table_name DROP PRIMARY KEY[CASCADE]
4. 外键约束
两个表当中字段关系的约束1 > 在创建表的时候设置外键约束
添加列级外键约束方法CREATE TABLE table1 (column_name1 datatype REFERENCES table2(column_name),...);
添加表级外键约束方法
CREATE TABLE table1(conlumn_name datatype,... ,CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES table2 (column_name) [ON DELETE CASCADE]);
table1从表table2主表
外建约束时主表当中的字段,必须是主表当中的主键
主从表当中的字段必须是同一个数据类型
从表中外键字段的值,必须来自主表中相印字段的值,或者NULL
2 > 在修改表的的候添加外键约束
ALTER TABLE table_name1 ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) ERFERENCES table_name2 (column_name)[ON DELETE CASCADE];
3 > 更改外键约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;
3 > 删除外键约束
//禁用|启用 ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name; //彻底删除 ALTER TABLE table_name DROP CONSTRAINT constraint_name;
5. 唯一约束
保证值的唯一性。与主键约束的区别:允许空值,在一个表中可以从在多个唯一约束
1 > 在创建表的时候设置唯一约束
//列级创建 CREATE TABLE table_name (column_name datatype UNIQUE,...); //表级创建 CREATE TABLE table_name (column_name datatype,... ,CONSTRAINT constaint_name UNIQUE(column_name));
2 > 在修改表的的候添加唯一约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);
3 > 更改唯一约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;
3 > 删除唯一约束
//禁用|启用 ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name; //彻底删除 ALTER TABLE table_name DROP CONSTRAINT constraint_name;
6. 检查约束
让表当中的值满足一定的条件,有实际意义1 > 在创建表的时候设置检查约束
//列级创建 CREATE TABLE table_name (column_name datatype CHECK(expressions),...); //表级创建 CREATE TABLE table_name (column_name datatype,... ,CONSTRAINT constaint_name CHECK(expressions));
2 > 在修改表的的候添加检查约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK (expressions);
3 > 更改检查约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;
3 > 删除检查约束
//禁用|启用 ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name; //彻底删除 ALTER TABLE table_name DROP CONSTRAINT constraint_name;
二、查询
1. 基本查询语句
SELECT [DISTINCT] column_name1...| * FROM table_name [WHERE conditions];
2. 在SQL*PLUS中设置格式
//更改列表显示名 COLUMN 可以简写 COL COLUMN column_name HEADING new_name; //设置结果显示格式 字符:a10 数字:9999.9 ¥9999 COLUMN column_name FORMAT dataformat; //清除设置的格式 COLUMN column_name CLEAR;
3. 给字段设置别名
// AS 可以省略 SELECT column_name AS new_name,... FROM table_name;
4. 运算符和表达式
算术运算符(+ - / *)比较运算符(> < <= >= <>)
逻辑运算符 (and or not)
优先级: not > and > or
5. 带条件的查询
SELECT [DISTINCT] column_name1...| * FROM table_name WHERE conditions;
单条件的查询
多条件的查询 (and or not)
6. 模糊查询
关键字: like通配符的使用(’_’,’%’)
_ :表示一个字符 % : 表示任意个字符
SELECT [DISTINCT] column_name1...| * FROM table_name WHERE column_name like 'X%'; SELECT [DISTINCT] column_name1...| * FROM table_name WHERE column_name like '_X%';
6. 范围查询
BETWEEN…AND… 一般用于数值IN/ NOT IN 一般用于字符
SELECT [DISTINCT] column_name1...| * FROM table_name WHERE BETWEEN xxx AND xxx; SELECT [DISTINCT] column_name1...| * FROM table_name WHERE IN |NOT IN(value,value);
7. 对查询结果排序
SELECT...FROM...[WHERE...] ORDER BY column1 DESC|ASC,...
8. case…when 语句
CASE column_name WHEN value1 THEN result1,...[ELSE result] END; CASE WHEN column_name=valu1 THEN result1,...[ELSE result] END;
decode 函数具有类似功能。
持之以恒。
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- oracle的nvl函数的使用介绍
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解