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 ;