Oracle学习 第三天
Oracle 表的管理
常用数据类型:
文本、二进制类型:
CHAR(size) 定长 最大2000字符
建议数据长度固定时使用,因为固定长度比较,存取速度比VARCHAR快
VARCHAR2(size) 变长 最大4000字符
建议数据长度不固定时使用,因为长度不固定,变长比VARCHAR定长更节约内存空间
NCHAR(size) Unicode编码类型 定长 最大2000字符
NVARCHAR2(size) Unicode编码类型 变长 最大4000字符
Unicode编码类型,一个汉字占用一个字符空间;而CHAR类型占两个字符空间
CTOB(character large object) 字符型大对象 最大8TB
BLOB(binary large object) 二进制数据 可以存放图片/音频 最大8TB
一般除非是对文件的安全性要求特别高。否则是不会直接将文件存放到数据库中,一般存放文件对应链接
数值类型:
NUMBER(p, s) p 整数位(1~38); s 小数位(-84~127)
数据范围:-1.0e-130 ~ 1.0e+126
日期类型:
DATE 默认格式:DD-MON_YYYY
TIMESTAMP(n) n表示指定秒的小数位。(0~9)。取0时与DATE等价
1、创建表
基本语法:
CREATE TABLE table_name( 列1 数据类型1, 列2 数据类型2, 列3 数据类型3 );
2、修改表
基本语法:
-- 增加字段 ALTER TABLE table_nameADD (column_name datatype); -- 修改字段 ALTER TABLE table_nameMODIFY (column_name datatype); -- 删除字段 ALTER TABLE table_nameDROP column (column); -- 修改表名 RENAME table_name TO newt_able_name; -- 删除表 DROP TABLE table_name;
3、表数据的操作
1. 增加
INSERT INTO table [(column [,column…])] VALUES (value [,value…]);
数据类型相同;数据大小在范围内;values中的数据位置与列的位置对应;空值不指定或用null;字符、日期在单引号内
2. 删除
DELETE FROM table [WHERE definition] TRUNCATE TABLE table [WHERE definition]
如果没有WHERE条件,则会删除表中所有数据
删除操作针对数据行,如果想删除指定行的某一列。可以使用UPDATE语句选择行的将该字段置空
删除操作只针对表中数据,不删除表本身。如果需要删除表,则使用DROP table语句。
几种删除的特点:
DELETE:删除表中数据;不破坏表结构;保存删除记录;删除后可以回滚;执行速度较慢
TRUNCATE:删除表中数据;不破坏表结构;不保存删除记录;删除后无法恢复;执行速度较快
DROP:删除表中数据;删除表结构
DELETE语句的回滚:
DELETE 语句在删除记录操作后可以使用 ROLLBACK 关键字进行回滚,即数据恢复。
但是,前提是需要使用 SAVEPOINT 关键字设置保存点。
SQL> SELECT * FROM students; ID NAME AGE ------------------------------------ 01 zhangsan 10 SQL> SAVEPOINT point01; SavePoint created SQL> DELETE FROM students WHERE name='zhangsan'; 1 rows deleted SQL> SELECT * FROM students; ID NAME AGE ------------------------------------ SQL> ROLLBACK TO point01; Rollback complete SQL> SELECT * FROM students; ID NAME AGE ------------------------------------ 01 zhangsan 10
3. 修改
UPDATE table SET column_name1=expr1[, column_name expr2…] [WHERE definition];
SET 语句指定需要更新的列名和要更新的值(可以使用表达式,即数学函数等)
如果没有WHERE条件,则会更新整个表
4. 查询
SELECT [DISTINCT] * | {column1, column2...} FROM table;
DISTINCT:去除重复数据;
*:查询所有列
以上操作时经常用到的几点:
1. 设置列的别名时。可以直接在列名后跟别名,也可以使用列名 AS 别名。别名可以不带引号,也可以带双引号,但较新版本的Oracle中不允许带单引号。
2. 巧用 NVL 函数处理 Null 值问题。基本用法: NVL(column, default)。意为:当column为null时,返回default,否则返回column本身。
3. 常用 || 拼接字符串。
4. TO_CHAR(data, format)。日期的格式转换。
以:5-MAY-2018为例。
TO_CHAR(data, 'yyyy-mm-dd') --> 2018-05-01
TO_CHAR(data, 'yyyy') --> 2018
TO_CHAR(data, 'yyyy-mm') --> 2018-05
5. LIKE 模糊查询。
% 表示任意个字符
_ 表示一个字符
6. IN(value1, value2, value3,...)
条件满足其中任意一种
7. IS NULL 是否为空。
8. ORDER BY 对结果进行排序
DESC 降序 高-->低
ASC 升序 低-->高 (默认)