现在的位置: 首页 > 数据库 > 正文

oracle学习 表的管理

2019年05月25日 数据库 ⁄ 共 2223字 ⁄ 字号 评论关闭

oracle 支持的数据类型 
字符类 
char       定长 最大 2000 个字符。  
Oracle  笔记
5
例子:char(10)   ‘小韩’前四个字符放‘小韩’,后添 6 个空格补全 如‘小韩   ’ 
varchar2(20)   变长   最大 4000 个字符。 
例子:varchar2(10) ‘小韩’ oracle 分配四个字符。这样可以节省空间。 
clob(character large object) 字符型大对象 最大 4G 
char 查询的速度极快浪费空间,查询比较多的数据用。 
varchar 节省空间 
数字型 
number 范围 -10 的 38 次方 到 10 的 38 次方 
可以表示整数,也可以表示小数 
number(5,2) 
表示一位小数有 5 位有效数,2 位小数 
范围:-999.99 到 999.99 
number(5) 
表示一个 5 位整数 
范围 99999 到-99999 
日期类型 
date 包含年月日和时分秒     oracle 默认格式   1-1 月-1999 
timestamp 这是 oracle9i 对 date 数据类型的扩展。可以精确到毫秒。 
 图片 
blob 二进制数据 可以存放图片/声音   4G     一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放
图片、视频的路径,如果安全需要比较高的话,则放入数据库。 
怎样创建表 
建表 
--学生表 
create table student (       ---表名
xh             number(4),     --学号
xm       varchar2(20),     --姓名
sex           char(2),         --性别
birthday date,                 --出生日期
sal           number(7,2)     --奖学金 
); 
--班级表 
CREATE TABLE class( 
classId NUMBER(2), 
cName VARCHAR2(40) 
); 
修改表 
 添加一个字段 
SQL>ALTER TABLE student add (classId NUMBER(2)); 
 修改一个字段的长度 
SQL>ALTER TABLE student MODIFY (xm VARCHAR2(30)); 
 修改字段的类型/或是名字(不能有数据) 不建议做 
SQL>ALTER TABLE student modify (xm CHAR(30)); 
 删除一个字段   不建议做(删了之后,顺序就变了。加就没问题,应为是加在后面) 
SQL>ALTER TABLE student DROP COLUMN sal;  
Oracle  笔记
6
 修改表的名字     很少有这种需求 
SQL>RENAME student TO stu; 
 删除表 
SQL>DROP TABLE student; 
添加数据
所有字段都插入数据 
INSERT INTO student VALUES ('A001', '张三', '男', '01-5 月-05', 10); 
oracle 中默认的日期格式‘dd-mon-yy’ dd 日子(天) mon 月份   yy   2 位的年   ‘09-6 月-99’ 1999 年 6 月 9 日 
修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表) 
ALTER SESSION SET NLS_DATE_FORMAT ='yyyy-mm-dd'; 
修改后,可以用我们熟悉的格式添加日期类型: 
INSERT INTO student VALUES ('A002', 'MIKE', '男', '1905-05-06', 10); 
插入部分字段 
INSERT INTO student(xh, xm, sex) VALUES ('A003', 'JOHN', '女'); 
插入空值 
INSERT INTO student(xh, xm, sex, birthday) VALUES ('A004', 'MARTIN', '男', null); 
问题来了,如果你要查询 student 表里 birthday 为 null 的记录,怎么写 sql 呢? 
错误写法:select * from student where birthday = null; 
正确写法:select * from student where birthday is null; 
如果要查询 birthday 不为 null,则应该这样写: 
select * from student where birthday is not null; 
修改数据 
 修改一个字段 
UPDATE student SET sex = '女' WHERE xh = 'A001'; 
 修改多个字段 
UPDATE student SET sex = '男', birthday = '1984-04-01' WHERE xh = 'A001'; 
修改含有 null 值的数据 
不要用 = null 而是用 is null; 
SELECT * FROM student WHERE birthday IS null; 
 删除数据 
DELETE FROM student; 
删除所有记录,表结构还在,写日志,可以恢复的,速度慢。 
Delete 的数据可以恢复。 
savepoint a; --创建保存点 
DELETE FROM student; 
rollback to a;   --恢复到保存点 
一个有经验的 DBA,在确保完成无误的情况下要定期创建还原点。 
DROP TABLE student; --删除表的结构和数据; 
delete from student WHERE xh = 'A001'; --删除一条记录; 
truncate TABLE student; --删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。

抱歉!评论已关闭.