Oracle —— 数据类型|数据结构|SQL语句
一、数据类型
1.字符类型:
char(n):固定长度的字符串,n表示字符串长度varchar2(n):可变长度的字符串,n表示字符串长度
2. 数值类型:
number(n):表示n位整数,最大38位number(a,b):表示存小数,a为数据长度,b为小数位数,举例:number(5,2),其中数据一共是5位,2位是小数- Oracle可以兼容其他数据库的
int类型(相当于number(22)),varchar类型
3. 日期时间类型
datetimestamp
select sysdate from dual;--date类型,存储的是年月日时分秒
select systimestamp from dual;---timestamp类型,存储的是年月日时分秒,秒精确到小数点后六位,再加上时区信息
select * from dual;
-
sysdate表示当前系统时间; -
dual系统自带一张一行一列的伪表,可以用于进行数值的显示,不能修改表中数据;
-
以zhangsan的用户身份,创建表
create table test1(
tno number(10),--学号
tname varchar2(5)--姓名,5位长度
);
select * from test1;
create table test2(
tno number(5,2),--学号
tname varchar2(5)--姓名,5位长度
);
insert into test2 values (10000.51,'tom');
insert into test2 values (100.51,'tom');
select * from test2;
create table test3(
tno number(5),--学号
tname varchar2(5),--姓名,5位长度
tbirth date
);
insert into test3 values(10001,'james','19-7月-2000');
select * from test3;
二、SQL语句
1. DDL语言
- 数据定义语言:创建、修改、删除数据库对象
create/alter/drop/truncate table 表名……
(1)创建表
create table 表名(
列1名 数据类型 约束,
列2名 数据类型 约束,
列3名 数据类型 约束,
……
列n名 数据类型 约束
);
- 创建t_student学生表
create table t_student(
sid char(5) primary key,
sname varchar2(10),
ssex char(1),
sbirthday date,
stel varchar2(13),
sclass number(1)
);
(2)修改表
- 语法:
alter table 表名 …… - 增加表列
alter table 表名 add 列名 列数据类型;
alter table t_student add saddress varchar2(50);
- 修改表列的数据类型
alter table 表名 modify 列名 新的数据类型;
alter table t_student modify saddress varchar2(80);
- 重命名表列
alter table 列名 rename column 旧列名 to 新列名;
alter table t_student rename column saddress to saddr;
- 删除表列
alter table 表名 drop column 列名;
alter table t_student drop column stel;
- 给表列添加约束
alter table 表名 add constraint 约束名 具体约束;
alter table t_student add constraint uk_student_sname unique(sname);---给t_student表的sname列添加唯一约束
- 给表列删除约束
alter table 表名 drop constraint 约束名;
alter table t_student drop constraint uk_student_sname;
(3)删除整张表
drop table 表名;
drop table t_student;---删除整张表,删除后的表不能恢复
(4)删除内容保留表
delete、truncate、drop区别
delete删除表内容(删除整张表内容,或者删除某几条记录),保留表结构;删除操作会写日志,删除的数据可以恢复;(灵活,不如truncate和drop删除速度快)truncate删除整张表内容,保留表结构;但是删除不写日志,不能恢复;drop删除整张表,不保留表结构;不写日志,删除不能恢复。
语法:truncate table 表名;
select * from user_tables;---user_tables是一张数据字典,存取的是当前用户创建的所有表
select * from test3;
truncate table test3;---表结构还存在,表中的内容删掉了
(5)重命名表
- 语法:
rename 旧表名 to 新表名;
rename test to tt;
2. DML语言
- 数据操纵语言:增删改查语句
insert into/update/delete from/select 表名 ……
(1)插入数据
- 给表中添加一条完整的记录
insert into 表名 values (列1值,列2值,列3值,……,列n值);
insert into t_student values('10001','张三','m','19-7月-2000',13012341234,01);
insert into t_student values('10002','李四','m','31-5月-2000',13012345678,02);
- 只给表中的某几列添加数据
insert into 表名(列1,列2) values(列1值,列2值);
insert into t_student(sid,sname) values ('10003','王五');
insert into t_student(sid,ssex) values ('10004','f');
(2)更新数据
update 表名 set 列名=列值;
update t_student set sclass=3 ;--把表中所有记录的sclass都更新成3
update t_student set sclass=3 where sname='王五';--where条件作为一个筛选,把姓名是王五的同学的班级更新成3班
(3)删除数据
delete 表名;delete from 表名;---删除表的内容
delete from t_student;
---1)删除表内容,可以恢复
---2)可以删除表中的某几条记录
delete from t_student where sid='10001'; --删除学号是10001的学生信息
- ddl中删除表的语句
drop,truncate
(4)查询数据
select * from t_student;
select * from user_tables;
3. DCL语言
- 数据控制语言:对数据进行访问控制的语句:授予权限/角色及收回权限/角色
grant 权限/角色 to 用户;
revoke 权限/角色 from 用户;
4. TCL语言
- 事务:把一系列的增删改查操作作为一个整体去处理,这个整体就称为一个事务
- 事务控制语言:对事务进行管理和控制的语句
- 事务特性:原子性、一致性、隔离性、持久性(ACID属性)
- 事务控制语句:
commit;---提交整个事务:之前做的一系列的增删改查操作;rollback;---回滚整个事务savepoint 保存点名称;---设置保存点rollback to 保存点名称; ---回滚到某一保存点
update tt set tno=101 where tname='王力宏';
update tt set tno=102 where tname='陈奕迅';
commit; ---提交以上事务
delete from tt where tno=1;
rollback; ---撤销事务:上面的删除操作
insert into tt values(105,'易烊千玺');
insert into tt values(106,'迪丽热巴');
savepoint p1;
insert into tt values(106,'李现');
delete from tt where tname='陈一';
savepoint p2;
delete from tt;
savepoint p3;
insert into tt values(108,'杨紫');
select * from tt;
rollback;
rollback to p1;
rollback to p2;
rollback to p3;

浙公网安备 33010602011771号