维护表的数据和结构、同字段多条件判断

复制表
创建表并复制其他表的数据
CREATE TABLE EMP_BAK2 AS SELECT * FROM EMP;
创建表,只复制其他表的结构
CREATE TABLE EMP_BAK3 AS SELECT * FROM EMP WHERE 1 = 2;
在一个空表中复制另一个表中的数据 

INSERT INTO EMP_BAK3 SELECT * FROM EMP;

后面可以加条件 WHERE XXXX,如果只插入某个字段的话,需要对应数据类型

注意在复制表数据的时候:1.数据类型要一致 2.字段数据量要一致

表结构的维护

表结构:字段类型,数据长度,约束

字段类型的修改:在修改时,要保证该字段的数据列为空

ALTER TABLE 表名 MODIFY (字段名 数据类型(长度));

在使用修改字段数据类型的时候,首先对要对表的数据进行备份,备份使用的是创建表并备份表的数据;其次是蒋表中的目标数据字段列置空,最后是修改表的字段类型 

UPDATE EMP 表名 SET 字段名 ENAME = NULL;

数据长度的修改与字段类型一样的方式,增加精度可以直接增加,但是减少精度需要先清空列数据

增加表字段:

ALTER TABLE 表名 ADD(字段名 数据类型(长度));

删除表字段:

ALTER TABLE 表名 DROP COLUMN 字段名;

修改字段名:

ALTER TABLE 表名 RENAME COLUMN 原字段名 TO 新字段名;

修改约束

约束:给某一个字段加上一些特定的属性,比如字段唯一,非空

1.主键约束:唯一且非空。一张表只能有一个主键,用来唯一确定表中的每一行。

添加主键约束的语法:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY(字段名);

2.唯一约束:唯一可为空

添加唯一约束的语法:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(字段名);

 3.非空约束:非空可重复

增加非空约束的语法:

ALTER TABLE 表名 MODIFY 字段名 NOT NULL;

需要提交和回滚的命令:INSERT, DELETE, UPDATE (DML语句)

不需要提交回滚的命令:CREATE, ALTER, TRUNCATE, DROP (DDL语句)

DDL 数据库定义语言:CREATE, ALTER, DROP

DML 数据库操纵语言:INSERT, UPDATE, DELETE

DQL 数据库查询语言:基本查询语言, ORDER BY, GROUP BY

TCL 事务控制语言:COMMIT, ROLLBACK

DCL 数据库控制语言:GRANT, REVOKE

伪表、伪列

也就是DUAL表,表中只有一行数据,可以有很多列

伪列有两列,ROWNUM和ROWID

1.ROWNUM 表示的是数据插入时的顺序,返回的查询结果是行号,一般用来做分页查询

 ROWNUM只能使用小于运算符,不能使用大于等于或者是范围运算符的

如果想适用范围查询的话,必须先把伪列ROWNUM变成可用字段

示例:查询出工资排名在5-10之间的人

SELECT * 

FROM (SELECT E.*, ROWNUM RN FROM (SELECT * FROM EMP ORDER BY SAL DESC) E ) T

WHERE RN BETWEEN 5 AND 10 ORDER BY RN ASC;

2. ROWID 返回的是每一行数据的物理地址,唯一,一般用来是删除重复值

先按字段分组,找出该字段里的最大最小值,删除重复数据,一般用不在最大/最小值的范围里查询去删除

DELETE FROM EMP_BF WHERE ROWID NOT IN (
SELECT MAX(ROWID) FROM EMP_BF GROUP BY EMP_BF.EMPNO)

Q:如何找出某一个字段,重复的数据有几条,比如JOB字段

A:计数器大于1的时候则是有重复值的情况

SELECT JOB, COUNT(1) FROM EMP WHERE COUNT(1) > 1;
 同字段多条件判断
CASE 关键字
CASE 字段 WHEN...... THEN ....ELSE.....END (AS 别名)

语法:当字段为什么的时候,则输出什么,ELSE不写,默认空值

CASE 字段 WHEN 条件1 THEN 返回值1

                   WHEN 条件2 THEN 返回值2

                   WHEN 条件3 THEN 返回值3

                   ELSE 返回值 --- 以上条件均不满足的时候

                   END (AS 别名)
DECODE 关键字

使用效果和CASE WHEN是一样的

DECODE (字段名,值1,返回值1,值2,返回值2,值3,返回值3.....,值N-1,返回值N-1, 返回值N);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值