大数据BI学习之建表和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;

 

总结:

*******DROP、TRUNCATE、DELETE三者的区别:******
(1)DROP:删除表结构以及表中数据,释放空间。简单来说就是把整个表都去掉。DROP 语句将删除表的结构、被依赖的约束、触发器、索引,但是依赖于该表的存储过程、函数将被保留,其状态会变成 INVALID。
(2)TRUNCATE:删除表中所有的数据,释放空间,但不是删除表结构。表结构、约束、索引等保持不变。
(3)DELETE:DELETE 语句用于删除表中的行。执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存,以便进行回滚操作。不带 WHERE 的 DELETE 语句与 TRUNCATE 语句都是只删除表中的数据,保留表结构。
(4)对于由 FOREIGN KEY(外键)约束引用的表,不能使用 TRUNCATE TABLE 语句,而应该使用不带 WHERE 的 DELETE 语句。由于 TRUNCATE TABLE 记录在日志中,所以它不能激活触发器。
(5)执行速度:DROP > TRUNCATE > DELETE。
(6)DELETE 是属于数据库操作语言(DML),这个操作会放到 ROLLBACK SEGEMENT 中,事务提交之后才生效;如果有相应的触发器,执行的时候将被激活。TRUNCATE、DROP是属于数据库定义语言(DDL),操作立即生效,原数据不放到 ROLLBACK SEGEMENT 中,不能回滚,操作不激活触发器。

 

大数据BI学习之建表和SQL语句的增删改

上一篇:【MySQL】面试官:如何查询和删除MySQL中重复的记录?


下一篇:SQL Server 数据库性能优化