现在的位置: 首页 > 综合 > 正文

oracle11g学习笔记(五)

2013年05月18日 ⁄ 综合 ⁄ 共 2267字 ⁄ 字号 评论关闭

表的管理

一、表名和列的命名规范

1.必须以字母开头

2.长度不能超过30个字符

3.不能使用oracle的保留字

4.只能使用如下字符串,A-->Z,a-->z,0-->9,$,#等

二、oracle支持的数据类型

1、字符型

char 定长,最长2000字符

例如:char(10) 存储内容为“小韩”时,前4个字符放‘小韩’,后六位由空格补齐

优点是:效率高,查询速率快。如身份证的字段可以设置成char(18)。

varchar2
变长 最大4000字符(oracle推荐使用)

varchar2(10) 存储内容为“小韩”时 oracle分配4个字符

clob(character large object) 字符型大对象

最大4G

2、数字类型

number
范围-10的38次方到10的38次方

可以是整数,也可以是小数

number(5,2)表示一个小数有5位有效数字,2位是小数

例如:定义一个范围在-999.99-999.99的数字可以用number(5,2)

定义一个范围在-99999-99999可以用number(5)

3、日期类型

date 包含年月日和时分秒

timestamp oracle对date类型的扩展

4、图片类型

blob 二进制数据,可以存放图片,音频,视频
最大4G

这个类型允许我们将大文件存储进数据库,但是一般在数据库里,存放的应该是这些文件的路径,如果对安全性有要求,可以将文件放入数据库

三、建表语句

1)建表

sql>create table student(
--表名

Id
number(4), --学号

Name
varchar(20), --姓名

Sex char(2),
--性别

birthday date);
--出生日期

上面的语句足以建立一个简单的学生表

2)向已经建立的表中添加字段

sql>alter table
student
add(ClassId number(2));

3)修改字段的长度

sql>alter table student
modify(Name varchar2(50) );

4)修改字段的类型/或名字(不能有数据)

sql>alter table
student
modify(Name char(20));

sql>alter table
student 
rename Name to
Sname
;

5)删除一个字段(慎重使用)

alter table
student
drop column Sex

6)修改表的名字

sql>rename
student
to stu

7)删除表

drop table
student

8)查看表结构

desc student;

四、操作表

1、添加数据,所有字段必须都插入

insert into
student
values(1,'张三','男','01-5月-05');

不要以为这里写错了,oracle中默认的日期格式‘DD-MON-YY’ (日-月-年)

想要修改日期的默认格式可以这样做

sql>alter session set nls_date_format='YYYY-MM-DD';

修改以后就可以用我们熟悉的格式来添加类型

insert into
student
values(1,'张三','男','2000-08-31');

但是这里的修改只是临时成立的,要想永久改变日期输入格式是需要改注册表的,还有一个方法是使用函数,暂且略过

2、插入部分字段,前提是未插入的字段允许为null

insert into student(Id,Name) values(1,'张三');

3、插入空值

insert into
student(Id,Name,Sex)
values('1',null,null);

4、查询Name为空的一条记录

按照正常的逻辑,许多人会这样做

select * from student
where Name=null;

但是这样的结果是什么都查不到,正确的方法如下

select * from
student
where Name is null;

查询所有非空的就在is后面加上not

5、修改一个字段

update
student
set sex=‘女’ where
Id=‘1’

6、修改多个字段

update
student
set sex=‘男’,Name='赵四' where
Id=‘1’

7、修改含有null值的字段

update
student
set Name=‘张三’ where Name is null

8、删除数据(三中方式)

1)删除一条记录

delete from
student
where Id=‘1’

2)删除所有记录,表结构还在,会记录日志,这种删除是可以恢复的,速度会稍慢

delete from
student

3)删除表的结构和数据

drop table
student ;

4)删除所有记录,表结构还在,不记录日记,所有这种删除无法找回数据,但是速度很快

truncate table
student;

9、恢复数据

用delete from student 时数据可恢

1)首先要设置一个保存点

savepoint sp;
--sp是保存点名称,可以随意起名,作用是将数据保存在日志中

2)删除数据

delete from
student
 ;

3)查询验证数据是否被删掉

select * from
student

结果是肯定的,没有数据

4)回滚数据

rollback to
sp;

5)在查询验证数据回滚是否成功

select * from
student

结果还是肯定的数据回来了!

当然可以设置多个保存点,但是如果不做处理,新的保存点会默认覆盖前一个保存点

10、取消重复行

select
distinct
deptno,job from
emp
;

在查询时select后面加上distinct即可将重复数据略去

 

 

 

 

 

抱歉!评论已关闭.