3.2、创建和管理表
之前所有操作的表都是以emp表为标准, 实际上用户也可以自己建立表。
Schema:称为模式
select * from scott.emp ;
一张表的命名:当前登陆的用户名.表名称
如果现在使用了scott进行登陆,则所有创建的表都是scott模式。
数据类型:
· NUMBER:表示整数(int)
· NUMBER(5,2):表示一共有五位数字,其中两位是小数,三位是整数(float)
· VARCHAR():表示字符串,VARCHAR后面要跟上一个字段的长度
· DATE:日期格式
· BLOB:二进制文件:电影、图片等。
· CLOB:表示大文本,可以存放4G的文字。
注意:列或表的命名最好是直接用字母最合适。
例如:现在定义一张学生表:
· 学号:NUMBER/int
· 姓名:VARCHAR(30)
· 年龄:NUMBER/int
· 成绩:NUMBER(5,2)/float
CREATE TABLE student
(
stno NUMBER ,
name VARCHAR(30) ,
age INT ,
score NUMBER(5,3)
) ; |
向表中插入数据:
INSERT INTO student(stno,name,age,score) VALUES (11,'张三',18,89.0) ;
INSERT INTO student(stno,name,age,score) VALUES (12,'李四',18,79.0) ;
INSERT INTO student(stno,name,age,score) VALUES (13,'王五',18,99.0) ; |
提问:
如果现在在打开另外一个客户端,问能否看见student表?
可以看见,创建表的时候直接创建了,而在操作数据表的时候肯定需要事务的支持。
按条件复制表:
例如:现在复制一张20部门的全部雇员信息表
CREATE TABLE emp20 AS SELECT * FROM emp WHERE deptno=20;
修改表结构:
增加一列、修改一列的长度
为Student包中增加sex列,表示性别,默认值为“男”。
ALTER TABLE student ADD(sex VARCHAR(2) DEFAULT '男') ;
如果以后再插入数据时,数据的性别为null,则默认也为“男”
INSERT INTO student(stno,name,age,score) VALUES (15,'赵六',18,99.0) ;
INSERT INTO student(stno,name,age,score,sex) VALUES (16,'孙七',18,99.0,'女') ;
修改表结构:
修改已有的列,例如:sex长度太小了,希望将它的长度修改为6。
ALTER TABLE student MODIFY(sex VARCHAR(6) DEFAULT '女') ;
注意:
有些数据库ALTER指令是无效的,即表建立完之后就绝对不能更改结构,IBM DB2。
1、 截断表
正常情况下删除数据,如果发现删除错了,则可以通过rollback回滚。如果使用了截断表,则表示所有的数据不可恢复了。
TRUNCATE TABLE 表名称 ;
truncate table student ;
数据被直接清除了,再也不占用空间了
2、 重命名表(Oracle)
可以把一个已有的表重新给一个新的名字,将student表变为stu表。
RENAME 旧的表名称 TO 新的表名称
RENAME student TO stu ;
3、 删除表
表不用了,直接删除掉:
DROP TABLE 表名称 ;
DROP TABLE stu ;