DDL
一:建表
①:DESC(查看表结构)
DESC emp; #查看emp表的表结构
②:Oracle支持的数据类型
1.NUMBER
--NUMBER(n):表示长度为n的整数,n的范围是(1,38),可以使用INT来代替
--NUMBER(m,n):表示小数数字,n表示小数的长度,m表示整个数字的长度,整数的长度为m-n,可以使用FLOAT代替
2.VARCHAER2
--VARCHAR2(n):表示字符串的长度最大可以为n,n的范围是(1,4000)字节
--CHAR(n):保存定长的字符串n的范围是(1,2000)字节
3.日期相关
--DATE:时间类型(不包括毫秒)
--TIMESTAMP:时间类型(包含毫秒)
4.数据类型(GB)
--CLOB:用于存放海量文字的类型,如红楼梦,三国演义
--BLOB:用于保存二进制数据,如图片,音乐
③:完整性约束
1.非空约束
--NOT NULL
2.唯一约束
--UNIQUE
3.主键约束(非空且唯一)
--PRIMARY KEY
4.检查约束
--CHECK
5.外键约束
--FOREIGN KEY REFERENCES
--必须有唯一约束或者主键约束的字段才能做另一张表的外键
--如果现在主表中的某一行数据有对应额子表数据,那么必须先删除子表中的数据之后才可以删除主表中的数据
--假设现在想删除主表,必须先删除子表,才可以删除主表
③:示例
CREATE TABLE member(
mid NUMBER(5),
name VARCHAR2(50) DEFAULT '无名氏',
age NUMBER(3),
birthday DATE DEFAULT sysdate,
note CLOB
);
④:表的复制(两张表的结构一模一样)
CREATE TABLE 表名 AS 子查询;
⑤:表的重命名
RENAME 旧的表名 TO 新的表名;
二:表的删除
DROP TABLE 表名;
三:表结构的修改(SCHEMA 表结构)
①:给一张表新增字段
ALTER TABLE 表名 ADD(sex VARCHAR2(10) DEFAULT'男');
②:修改表的字段
ALTER TABLE 表名 MODIFY(sex VARCHAR2(10) DEFAULT'女');
③:删除表的字段
ALTER TABLE 表名 DROP COLUMN sex;
四:数据库中的对象
1.表
2.约束
3.序列(递增的整数值)
①:可以使用序列来为主键获取值
#创建一个序列
CREATE SEQUENCE test_seq;
#先获取序列的下一个值
SELECT test_seq.nextval FROM dual;
#获取序列当前的值
SELECT test_seq.currval FROM dual;
②:行号:ROWNUM(是一个伪列,来生成行号,这个行号不与任意记录挂钩)
作用:获取前n行数据
分页
SELECT ROWNUM,empno,ename,job FROM emp WHERE ROWNUM <= 10;
③:ROWID:指每一行数据存储的物理地址(这行数据存储在数据库哪一个文件的哪一行上)
表中有许多重复的记录,需要将重复的数据删除掉只保存一个数据
4.索引(可以提高查询效率)
①:B树索引
将数据存储成B树,左边的节点比中间的节点小,右边的比中间的大
ROWID:用来快速定位节点所在的行中的所有数据
创建B树索引:
–自动创建:当某一列上设置了主键约束或唯一约束的时候
–手动创建:
CREATE INDEX 索引名称 ON 表名(列名[ASC|DESC]);
②:位图索引
B树索引一般用于连续值的列(字段)
对于非连续的值,比如deptno(10,20,30)不好使用B树索引,使用位图索引
CREATE BITMAP INDEX 索引名称 ON 表名(列名[ASC|DESC]);
如果查询所有列的话,则不会走位图索引,查询一列的才会走位图索引
5.视图
简化用户的查询操作
使得用户可以以多种角度来看待同一数据
CREATE VIEW 视图名称 AS 子查询