二、Oracle 数据库基本操作
一。oracle常用数据类型
数字:number(p,s) p表示数字的长度包括小数点后的位数,s表示小数点后的位数
固定长度字符:char(n):n表示最大长度,n即是最大也是固定的长度,当数据不满长度则以空格补满
可变长度字符:varchar2(n):n表示最大长度
日期类型:date精确到毫秒
blob:大字段数据类型
二。建表语句
注意:主键是唯一且不为空,能唯一标识一条数据的独立性。通常没有任何业务意义,只用来标识数据的唯一性
create table student(
stu_id number(8,0) primary key,
stu_name varchar2(30),
stu_age number(3,0),
stu_sex char(3),
stu_birthday date
)
三。主外键关联
--给班级表添加一个字段
alter table CLASSINFO add school_id number;
--创建外键字段
alter table STUDENT
add constraint fk_stu_class foreign key (CLASS_ID)
references classinfo (CLASS_ID);
--删除表
drop table 表名
--创建,修改,删除表,统称为数据库定义语言DDL
注意:外键约束:
1.在子表中无法添加主表还没有的数据
2.子表如果有相应记录,主表不能删除
四。数据库操作语言DML
--插入数据的语句
insert into student(stu_id,stu_name,stu_age,stu_sex,stu_birthday) values (1,'章三班',90,'男',sysdate)
insert into student values(1,'张三',22,'1',sysdate)
--delete from 表名 where 条件
例子:delete from student where stu_id=1
--修改数据
update 表名 set 字段名=值,字段名=值 .... where 条件
--查询
select 字段名 from student where 条件
五。数据库定义语言
create 、alter、 drop 、rename、 truncate
truncate:截断表数据,作用是一次性删除表中所有数据,是一个一次性事物,不能回滚,删除效率远高于delete
六。事物控制语言
commit:提交事物
rollback:回滚事物
savepoint:设置回滚点
七。数据控制语句
grant 权限 to 用户名 -- 赋予权限
revoke 权限 from 用户名 -- 撤销权限
练习:
1.创建一张学员信息表和一张班级信息表。思考这两张表如何关联起来
2.创建学校信息表。思考学校和学员和班级的关系。怎么关联
例子1:
1 --对数据的增删改查 2 --新增数据 3 insert into student(stu_id,stu_name) values(1,'张三') 4 insert into student values(2,'李四',20,'男',sysdate) 5 6 --查询数据 7 select * from student 8 9 --删除数据 10 delete from student where stu_id=1 11 12 --修改数据 13 update student set stu_name='小李子',stu_sex='女' where stu_id=2
例子2:
1 create table classinfo( 2 class_id number primary key, 3 class_name varchar2(30) 4 ) 5 6 insert into classinfo values (1,'java3班') 7 8 create table school( 9 school_id number primary key, 10 school_name varchar2(30) 11 ) 12 --给班级表添加一个字段 13 alter table CLASSINFO add school_id number; 14 15 --创建外键字段 16 alter table STUDENT 17 add constraint fk_stu_class foreign key (CLASS_ID) 18 references classinfo (CLASS_ID); 19 20 --删除表 21 drop table 表名 22 23 --创建,修改,删除表,统称为数据库定义语言DDL 24 25 --删除 26 delete from student-- where stu_id=1 --stu_name='李四' and age!=20 age<>20
例子3:
1 --创建用户 2 create user c##java06 identified by java123 3 4 --给用户赋予权限 5 --connect:链接角色 6 --resource:资源访问角色,能创建表等资源,可以访问和操作数据 7 --DBA:数据库管理员角色 8 grant resource to c##java06 9 grant connect to c##java06 10 grant dba to c##java06 11 12 --练习:创建用户并赋予权限,通过新建的用户来登录其他服务器(要先配置网络服务名) 13 --修改用户名密码 14 alter user c##hwua identified by hwua123 15 16 --建表语句 17 create table student( 18 stu_id number(8,0) primary key, 19 stu_name varchar2(30), 20 stu_age number(3,0), 21 stu_sex char(3), 22 stu_birthday date 23 ) 24 25 --对数据的增删改查 26 --新增数据 27 insert into student(stu_id,stu_name) values(1,'张三') 28 insert into student values(2,'李四',20,'男',sysdate) 29 30 --查询数据 31 select * from student 32 33 --删除数据 34 delete from student where stu_id=1 35 36 --修改数据 37 update student set stu_name='小李子',stu_sex='女' where stu_id=2
例子4:
用oop做一个进销存系统:
1.货物对象属性:编号(唯一),名称,单价,类别,厂家,厂家地址,厂家联系方式,库存,最后进货时间
2.功能:登录,入库,出库,库存查询,操作记录查询
3.功能描述:
登录:管理员输入用户名密码登录,可以有多个管理员
入库:
新增入库:新录入货物库存信息
库存修改:在已有的货物信息上修改
出库:输入出库货物编号,显示详细信息,输入出库数量,满足条件就出库
库存查询:可以按货物编号,类别,名称,来查询货物详细信息
操作记录查询:所有上面的操作都要记录下操作员的操作信息以及操作时间
可以按操作员姓名查询,操作类型
操作信息对象:属性:编号,操作员名字,操作类型,操作的数量,操作时间
1 --练习:把进销存的业务用数据库的方式完成 2 --提示:管理员,货物,操作记录对象分别建立三张表 3 --完成各项功能的sql语句 4 5 --用户信息表 6 create table user_info( 7 user_id number primary key, 8 username varchar2(30), 9 pass_word varchar2(20) 10 ); 11 12 --goods_info 13 create table goods_info( 14 goods_id number primary key, 15 goods_name varchar2(50), 16 goods_price number(10,2), 17 goods_count number(8,0) 18 ) 19 drop table deal_info 20 --操作信息表deal_info 21 create table deal_info( 22 deal_id number primary key, 23 deal_type_id char(1), 24 user_id number, 25 goods_id number, 26 deal_count number, 27 deal_time date 28 ); 29 --操作类型表 30 create table deal_type( 31 deal_type_id number primary key, 32 typename varchar2(30) 33 ); 34 35 --注册 36 insert into user_info values(1,'admin','123456') 37 --登录 38 select * from user_info where username='admin' and pass_word='123456' 39 40 --入库 41 insert into goods_info values(1,'辣条',2.5,1000) 42 --记录入库操作 43 insert into deal_info values(1,'1',1,1,50,sysdate) 44 45 --操作类型数据 46 insert into deal_type values(1,'入库'); 47 insert into deal_type values(2,'出库'); 48 insert into deal_type values(3,'修改货物信息'); 49 50 51 select * from user_info; 52 select * from goods_info; 53 select * from deal_info; 54 select * from deal_type;