oracle入学第二天—-2017-08-17
表名与列名的命名规则:
• 必须以字母开头
• 表名长度不能超过30个字符 (最大30字符)
• 不能使用oracle的保留字
• 只能使用如下字符 A-Z,a-z,0-9,$,#等
数据类型(常用,常见)
1,char 定长 最大2000个字符。
例子:char(10) ‘小韩’前四个字符放‘小韩’,后添6个空格补全 如‘小韩’
2,varchar2(20) 变长 最大4000个字符。
(oracle优化了)
例子:varchar2(10) ‘小韩’ oracle分配四个字符。这样可以节省空间。
3,clob(character large object) 字符型大对象 最大4G
char 查询的速度极快,但浪费空间,查询比较多的数据用。
varchar 查询速度较慢,但节省空间
数字型
(oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集,int类型只能存储整数;)
1. number范围 -10的38次方 到 10的38次方;//相当java的int类型 可以表示整数,也可以表示小数
number(5,2) 表示一位小数有5位有效数,2位小数 范围:-999.99到999.99 number(5)
表示一个5位整数 范围99999到-99999
日期类型
- date 包含年月日和时分秒 oracle 默认格式 : DD-MON-YY
- timestamp 这是oracle9i版本对date数据类型的扩展。可以精确到毫秒。
图片
- blob 二进制数据 可以存放图片/声音 4G
一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高的话,则放入数据库
(这个没用过,希望知道可以告诉下怎么用,以及在什么情况下用好!)
表的创建
–学生表
alter table student(
stuNo number(2) –学号,
stuName varchar2(10) ,–姓名
sex char(2) –性别,
birthday date –出生日期
)
–班级表
create table class(
classId number(2),
cName varchar2(40)
)
修改表:
–添加一个字段
SQL>alter table student add( classId number)
–添加多个字段
SQL>alter table student add( classId number,cName varchar2(40))
–修改一个字段的长度
SQL>alter table student modify (stuNo varchar2(30));
修改字段的类型/或是名字(不能有数据) 不建议做
SQL>alter table student modify (stuName char(30));
删除一个字段 不建议做(删了之后,顺序就变了。加就没问题,应为是加在后面)
SQL>alter table student drop column sex;
修改表的名字 很少有这种需求
SQL>rename student to newTableName;
删除表
SQL>drop table student;
添加数据
所有字段都插入数据
INSERT INTO student VALUES (‘A001’, ‘张三’, ‘男’, ‘01-5月-05’, 10);
(Oracle为什么不能想SQL servlet 多行添加数据, oracle怎么多行添加呢)
oracle中默认的日期格式‘dd-mon-yy’ dd日子(天) mon 月份 yy 2位的年 ‘09-6月-99’ 1999年6月;
修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表)
ALTER SESSION SET NLS_DATE_FORMAT =’yyyy-mm-dd’;
修改后,可以用我们熟悉的格式添加日期类型:
INSERT INTO student VALUES (‘A002’, ‘MIKE’, ‘男’, ‘1905-05-06’);
插入部分字段
INSERT INTO student(stuNo, stuName, sex) VALUES (‘A003’, ‘JOHN’, ‘女’);
插入空值
INSERT INTO student(stuNo, stuName, sex, birthday) VALUES (‘A004’, ‘MARTIN’, ‘男’, null);
修改数据
修改一个字段
UPDATE student SET sex = ‘女’ WHERE stuNo= ‘A001’;
修改多个字段
UPDATE student SET sex = ‘男’, birthday = ‘1984-04-01’ WHERE stuNo= ‘A001’;
删除数据
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; –删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快。