Oracle建表和SQL语句的增删改
创建表
--建表语法结构:
/*
CREATE TABLE 表名(
字段名1 数据类型,
字段名2 数据类型
....
);
*/
--建一张老师表,里面包含老师编号,老师姓名,老师联系方式,老师入职日期
CREATE TABLE TEACHER(
TNO NUMBER,
TNAME VARCHAR2(30),
TPHONE CHAR(11),
THIREDATE DATE
);
复制表
--复制表结构,但是不复制数据
--语法结构:CREATE TABLE 表名 AS SELECT查询语句 WHERE 1 = 2;
CREATE TABLE DEPT_BAK AS SELECT * FROM DEPT WHERE 1 = 2;
--复制表结构,同时复制数据
--语法结构:CREATE TABLE 表名 AS SELECT查询语句 [WHERE 1 = 1];
CREATE TABLE DEPT_BAK_ALL AS SELECT * FROM DEPT WHERE 1 = 1;
删除表
--删除表
--语法结构:DROP TABLE 表名;
DROP TABLE STUDENT;
新增/插入数据
--单行数据插入的语法结构:
--语法结构:INSERT INTO 表名(字段名1,字段名2,字段名3...) VALUES(插入值1,插入值2,插入值3...);
INSERT INTO TEACHER (TNO, TNAME, TPHONE, THIREDATE) VALUES(1,'zhangsan','13300000000',SYSDATE);
INSERT INTO TEACHER (TNO, TNAME, THIREDATE) VALUES(2,'lisi',SYSDATE - 1);
INSERT INTO TEACHER (TNO, TNAME, TPHONE) VALUES(3,'wangwu','133');
--多行数据插入
--语法结构:INSERT INTO 表名 SELECT 查询语句;
INSERT INTO TEACHER
SELECT * FROM TEACHER;
INSERT INTO TEACHER
(TNO, TNAME, TPHONE, THIREDATE)
SELECT T.TNO, T.TNAME, T.TPHONE, T.THIREDATE FROM TEACHER T;
给表新增字段
--语法结构:ALTER TABLE 表名 ADD 字段名 数据类型;
ALTER TABLE TEACHER ADD TLOC VARCHAR2(100);
删除表中数据
--删除表中的所有数据
/*
注意:TRUNCATE和DELETE都能把表中的数据全部删除,他们的区别是在于
1. TRUNCATE是DDL命令,删除的数据不能恢复;
DELETE命令是DML命令,删除后的数据可以通过日志文件恢复。
2. 如果一个表中数据记录很多,TRUNCATE相对DELETE速度快。
*/
--语法结构:TRUNCATE TABLE 表名;
TRUNCATE TABLE TEACHER;
--语法结构:DELETE FROM 表名;
DELETE FROM TEACHER;
--删除表中符合条件的数据行
--删除TEACHER表中姓名叫WANGWU的老师信息
--DELETE FROM 表名 WHERE 筛选条件;
DELETE FROM TEACHER WHERE TNAME = 'wangwu';
删除表中字段
--删除表中的某一列(字段)
--语法结构:ALTER TABLE 表名 DROP COLUMN 字段名;
ALTER TABLE TEACHER DROP COLUMN TLOC;
修改表名
--语法结构:ALTER TABLE 旧表名 RENAME TO 新表名;
ALTER TABLE TEACHER RENAME TO T_TEACHER;
修改列名
--语法结构:ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名;
ALTER TABLE T_TEACHER RENAME COLUMN TPHONE TO T_PHONE;
修改字段的数据类型
--语法结构:ALTER TABLE 表名 MODIFY 字段名 新的数据类型;
--注意点:如果表中已经有数据,那么修改数据类型时传入的范围精度必须大于数据中的最大长度
ALTER TABLE T_TEACHER MODIFY T_PHONE VARCHAR2(11);
--注意点:如果表中已有数据,那么修改数据类型时,不能由一种数据类型改成另外一种数据类型
ALTER TABLE T_TEACHER MODIFY THIREDATE VARCHAR2(100);
数据行的修改(更新数据)
--整列数据都更新
--语法结构:UPDATE 表名 SET 字段名 = 值;
UPDATE T_TEACHER SET T_LOC = 'zhongguo';
--只更新部分符合要求的数据行
--语法结构:UPDATE 表名 SET 字段名 = 值 WHERE 筛选条件;
UPDATE T_TEACHER SET T_PHONE = '186xxxxxxx' WHERE T_PHONE IS NULL;