3.2、创建和管理表

       之前所有操作的表都是以emp表为标准, 实际上用户也可以自己建立表。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Schema:称为模式
       select * from scott.emp ;
       一张表的命名:当前登陆的用户名.表名称

 

如果现在使用了scott进行登陆,则所有创建的表都是scott模式。

 

数据类型:

       · NUMBER:表示整数(int
       · NUMBER(5,2):表示一共有五位数字,其中两位是小数,三位是整数(float
       · VARCHAR():表示字符串,VARCHAR后面要跟上一个字段的长度
       · DATE:日期格式
       · BLOB:二进制文件:电影、图片等。
       · CLOB:表示大文本,可以存放<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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 ;