oracle学习02
oracle:多表查询,存储过程,触发器
1:创建新的数据库:
2:表名和列的命名规则:
必须以字母打头
长度<=30个字符
不能使用oracle的保留字
只能使用如下字符:A-Z,a-z,0-9,$,#等
3:oracle的数据类型:
字符型:char:最大字符数为2000,定长的,假使你写的是20,不管你的内容为几位,都统统占用20位,多余的用空格占用。
虽浪费空间,但是查询的效率很高。比如身份证号码或者性别是定长的,所以此时可以将此定义为char型
varchar2:最大字符数为4000,变长的,查询时,先比较第一个,再比较第二个,一次类推,此时就比较慢。
clob :字符型大对象。比如字符数>4000
数字型:number:范围:10的-38次方到10的38次方
number(5,2):有效数为5位,有2位小数
number(5):表示一个5位整数
日期类型:date:
timestamp:oracle9i对date数据类型的扩展
图片类型:blob :二进制数据 可以存放图片/声音等 4G
但是一般不会真的存在数据库,只存路径,一般是存放在另外一个文件夹下
出于安全,可以考虑放在数据库,一般就存在文件夹下
4:建表:一种通过命令行
一种打开pl/sql developer,单击选择左边的目录Tables,右键选择新建,填好之后点应用即可
5:修改表:
给stu表添加一个字段 alter table stu add(stuid number(20));
修改字段的长度: alter table stu modify (id varchar2(10));
修改字段的类型或名字(不能有数据):alter table stu modify (stu id(20));
删掉一个字段 alter table stu drop column stu;
修改表的名字: rename stu to stu1;
删除表 drop table stu;
6:oracle的日期格式:DD-MON-YY 天,月,年
插入日期时,出现错误,在语句中会有红线提示错误。正确日期格式:'11-12月-2009'
修改日期的默认格式:alter session set nls_date_format = 'yyyy-mm-dd';
插入部分字段:类似,不写不插入的字段就行了
插入空值:insert into stu(id,name,sex,salary)values(3,‘aa’,null);只要写一个null就行了
查询没有生日的那些人:select * from stu where bir is null;不能用bir=null,反之用is not null
7:修改一个字段:
update stu set id=12 where age=13;
update stu set sex='nan',birthday='1908-12-13' where id=12;
修改含有null值的数据:is null
7:删除数据:
delete from stu;删除所有记录,表结构还在,写日志,可恢复,速度慢
drop table stu;删除表的结构和数据
truncate table stu;删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快
例子:假如表中有一条数据,在删除之前先:savepoint a;delete from stu;rollback to a;提示回滚完成
所以很多 dba每天开始干活的时候先设置一个savepoint a,中间再设置一个savepoint b,此时a会被b覆盖。
oracle支持多个保存点,即可以会滚到之前的任意一个保存点中的一个。但是不做任何处理的话,保存点只有一个