oracle11g学习笔记(五)

表的管理

一、表名和列的命名规范

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(--表名

Idnumber(4), --学号

Namevarchar(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 column 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 studentwhere 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='赵四' whereId=‘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即可将重复数据略去

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值