Oracle_DDL数据定义语言
--SQL语句分为三种类型,这篇讲的DDL就是其中一种
DDL:Data Definition language 数据定义语言
DDL用于定义数据库的结构,比如:创建、修改或删除数据库对象,包括以下语句:
Create table:创建表
Alter table:更改表结构、添加、删除、修改列长度
Drop table:删除表
Create index:在表上建立索引
Drop index:删除索引
Create table 语句:创建表
创建表时要注意几点:第一必须以字母开头;第二要在1-30个字符之间;第三不能和用户定义的对象重名;第四不能是oracle的保留字;第五只能包含A-Z,a-z,0-9,_,$,#;第六创建表得有权限才能创建;
创建表必须具有创表的权限,存储的一个空间;创建的过程要列出它的表名,列名,数据类型还有它的尺寸
以下会有两种创表方式:第一是直接创建,第二使用子查询进行创建
create table emp_2 (emp_2 number(4),emp_name varchar2(10),hire_date date,salary number(8,2));
第二:通过子查询的方式创建(复制现有的表)
通过子查询的方式创建表时,使用as subquery,将创建表和插入数据结合起来;指定的列和子查询中的列要全部一一对应;下面会有两三个例子可以看到它的效果。
第一个例子:创建一张跟employees表一样结构还有数据的表
create table emp_1 as select * from employees;
第二个例子:创建一张插入employees表的employee_id是100的数据
注释:子查询中的列要根据创建表的列对应上
create table emp_1 as select employee_id,last_name,hire_date,salary
from employees where employee_id=100;
第三个例子:创建一张结构和employees表一样的一张空表,可以根据employees表的结构直接创建,但是这样会很麻烦,所以使用一个子查询,给个空值的过滤条件,因为在子查询中空值不返回任何行,这样就创建了一张具有employees表结构的空表。
create table emp_1 as select * from employees where 1=2;
alter table 语句:修改表
使用alter table 语句可以:
1、新增新的列 2、修改现有的列 3、删除不再需要的列 4、重命名表的一个列名
添加新列时,是可以添加多个列。想要加多个列时,在列的后面加个逗号继续再加上需要的列
添加多个列:alter table emp_2 add(age number(2),sex varchar2(2));
alter table emp_2 add(age number(2));
修改列可以修改列的数据类型,尺寸和默认值; 修改默认值只影响今后对表的修改;
还可以对多个列进行修改
alter table emp_2 modify(age number(3),salary number(8,2) default '1500');
alter table student_1 modify(student_name varchar2(10));
使用rename column.... to...子句重命名列
Alter table student_1 rename column student_name to name ;
1、数据和结构都被删除 2、drop table语句不能回滚 3、使用drop column子句删除不再需要的列
alter table student_1 drop column brithday;
drop table语句:删除表
1、数据和结构都被删除 2、drop table 语句不能回滚
drop table emp_2;
Create index语句:创建索引
在这几种情况下可以创建索引:列中的数据值分布范围很广;列经常在where子句或连接条件中出现;
表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%;
还有几种情况是不要创建索引的:表很小;列不经常作为连接条件或出现在where子句中;查询的数据大于2%和4%;表经常更新
create index emp_last_name_index on emp_3(last_name);
Drop index语句:删除索引
使用Drop index命令删除索引,只有索引的所有者,还有拥有索引权限的用户才可以删除索引,删除索引是不能回滚的。所以谨慎删除。
drop index emp_last_name_index;