我们看一下创建和管理表的题目
51. 利用子查询创建表 myemp,
该表中包含 employees 表的 employee_id(id), last_name(name), salary(sal), email 字段
1). 创建表的同时复制 employees 对应的记录
create table myemp
as
select employee_id id, last_name name, salary sal, email from employees
2). 创建表的同时不包含 employees 中的记录, 即创建一个空表
create table myemp
as
select employee_id id, last_name name, salary sal, email from employees where 1 = 2
利用子查询创建这个表叫emp,该表包含employees这几个字段,这是创建表的第二种方式,借助于已经存在的表,你看怎么写,
我们就不自己去操作了,一块看一下,create table myemp,as select,这样四个列,起别名的话就加在列的后面,那么你新创建
的表就叫做id,就叫name,创建表的同时,大家注意,这个方式创建表的时候,是包含employees表的数据的
create table myemp
as
select employee_id id, last_name name, salary sal, email from employees
如果想不包含,创建一个空表的话,加上一个条件,将这个条件一定不成立,如果你这里写2等于2,怎么着了,是不是又把表里面
所有数据都加进去了,那就和没写一样,加上一个不等
create table myemp
as
select employee_id id, last_name name, salary sal, email from employees where 1=2
52. 对现有的表进行修改操作
1). 添加一个新列
ALTER TABLE myemp
ADD(age number(3))
2). 修改现有列的类型
ALTER TABLE myemp
MODIFY(name varchar2(30));
3). 修改现有列的名字
ALTER TABLE myemp
RENAME COLUMN sal TO salary;
4). 删除现有的列
ALTER TABLE myemp
DROP COLUMN age;
这个修改操作啊,稍微多一点,这样你需要熟悉一下,有add,有modify,有rename to,还有一个叫drop,有
四个命令,需要注意,其中这个modify,既可以改数据类型,可以改数据大小,还可以增加一个默认值
53. 清空表(截断: truncate), 不能回滚!!
清空表,使用truncate,truncate table什么什么,truncate table,比如叫myemp
truncate table myemp;
就完了,就清空了,这个是不可回滚的
54.
1). 创建一个表, 该表和 employees 有相同的表结构, 但为空表:
create table emp2 as select * from employees where 1 = 2;
2). 把 employees 表中 80 号部门的所有数据复制到 emp2 表中:
insert into emp2 select * from employees where department_id = 80;
如果你要表结构都一样的话,那你就select *呗,但是是空表,就这样写,如果不用空表的话,你就这样写
相当于对原有的表进行一个复制,完全的把原有的employees表复制了一份,就这个意思,后面是把employees
表中80号部门的所有的数据,复制到这个里边,这个是我们上一步创建的表,这个操作是我们下一节要讲的,
叫insert into,insert into的时候我们也可以一条条的加,添加的方式就是这样,这个大家先不用管它,我们放在
数据处理里面会讲,这个题目我们就先到这儿
create table dept1(
id number(7),
name varchar2(25)
)
大家先把这个题目先做一下,我们来看一下这个题目,第一个题目叫创建这个表,这个表结构都给你放到
这儿了,这个写法的话是不是可以直接来了,创建表,这个就是白手起家创建的,create table,dept,
然后就是一个小括号,两项,id,number类型的,7个长度,第二个name,varchar2,25个长度,这就创建好了,
我就把我这个表里面已经有了一个dept,真是有,我们给他改个名吧,dept1
create tabel dept1(
id number(7),
name varchar2(25)
)
然后你再desc dept1;
2. 将表departments中的数据插入新表dept2中
a) create table dept2
b) as
c) select * from departments
讲一个表departments中的数据插入dept1中,这个就相当于我用第二种方式来创建,这个改成dept2,
create table dept2,这个就不这样写了,as select,将里面的所有的,select *,from departments这个表,
他也没有说这个数据怎么办,那我们就让这个数据都要,那就这样来写
create table dept2
as
from * from departments
然后select * from dept2,刚才我写的是dept2
create table emp5(
id number(7),
first_name varchar2(25),
last_name varchar2(25),
dept_id number(7)
)
他这创建的叫emp,emp我们这里面有这个表了,起一个其他的名字,emp10吧,emp10,然后呢,
id,number,第一个长度,最后一个没有逗号了,需要你注意
create table emp5(
id number(7),
first_name varchar2(25),
last_name varchar2(25),
dept_id number(7)
)
4. 将列Last_name的长度增加到50
a) alter table emp5
b) modify (last_name varchar2(50))
将这里面的列,last_name,长度增加到50,那就是修改,修改,alter table,这里叫emp5,
modify,last_name,varchar2增加到50,这样
alter table emp5
modify (last_name varchar2(50))
5. 根据表employees创建employees2
a) create table employees2
b) as
c) select * from employees
这个难度也不大,就是我们创建表的第二种方式,就是完全是一个复制了,create table employees2,
as select, from employees
create table employees2
as
select from employees
6. 删除表emp5
drop table emp5;
刚才我们是emp5,所以删除emp5,删除我们直接在这里写,drop,drop table emp5
7. 将表employees2重命名为emp5
rename employees2 to emp5
将employees2重命名为emp5,大家注意,这里是没有table的,rename employees2,to emp5,
rename employees2 to emp5;
8. 在表dept和emp5中添加新列test_column,并检查所作的操作
alter table dept
add(test_column number(10));
在表中增加新列test_column,再加一个列,这两个表中都加新列,检查所做的操作,我们就在其中一个加,
另一个都同理,增加一个列,alter table,dept,然后呢add,增加一个列,test_column,加个数据类型,number
类型的,10个单位的长度,并检查所做的操作,那你就desc dept就行
alter table dept
add (test_column number(10));
desc dept;
看看是否新增加了一个列,存储的长度是否对,然后同样的操作来处理emp,这个我们就省略了
9. 在表dept和emp5中将列test_column设置成不可用,之后删除
a) alter table emp5
b) set unused column test_column
alter table emp5
drop unused columns
我们将这两个列设置成不可用的,之后删除,这个大家也不需要过多的关注,作为一个了解吧,那我们得写一下,
我还是得用一下他,刚才我们是emp5,给他新增加一个列
alter table emp5
add(test_column number(10))
有这个列,现在把这个列设置成不可用,这个怎么写,大家了解一下就行,set unused,
column test_column,把它置成一个不再使用的
alter table emp5
set unused column test_column
就没有了,虽然没有了,但是并不意味着这个列是在的,跟没在效果差不多,那么这个命令这样写
把设置不可用的列删除,删除的话我们就这样,drop unused columns
alter table emp5
drop unused columns
这是这个命令,大家只要了解一下就行,下面直接删除表中的列,删除还是一个修改
10. 直接删除表emp5中的列 dept_id
Alter table emp5
drop column dept_id
alter table emp5,alter table他,然后删除drop,column dept_id,删除这一个列
alter table emp5
drop column dept_id