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. 日期时间类型

  • date
  • timestamp
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)删除内容保留表

deletetruncatedrop区别

  • delete删除表内容(删除整张表内容,或者删除某几条记录),保留表结构;删除操作会写日志,删除的数据可以恢复;(灵活,不如truncatedrop删除速度快)
  • 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;            
posted @ 2020-06-08 19:52  Hyx'  阅读(82)  评论(0)    收藏  举报