天天看点

oracle的增删改查

一、什么是数据库

二、oracle中常用的sql plus命令

三、表空间及其分类

四、用户管理

五、角色、权限、数据字典

六、SQL是什么

七、数据类型、创建表、约束

八、修改表、增删改查格式

一、什么是数据库

数据库,本质就是软件,用于管理、维护数据
oracle的工具:sql plus、sql developer、plsql developer
           

二、oracle中常用的sql plus命令

connect:切换用户,简写conn   格式:conn 用户名/密码
show user:显示当前登录的用户
host:执行(操作系统命令)
      host mkdir e:\oraclepractice
      host md e:\1
spool:导出记录到文本
       spool e:\oraclepractice\text.txt  创建了text.txt,把内容导入其中
       select * from book;
       spool off
clear screen:清屏
start:执行文件中的sql语句
       start d:\test.sql
       @ d:\test.sql
       start和 @ 表示:执行
desc:显示表结构
show error:显示错误
exit:退出
           
oracle默认的系统用户:
sys/system:conn sys/111111 as sysdba
            conn system/111111
sysman
scott:有4个表(emp、dept、salgrade、bonus)

注:conn sys/111111 @orcl as sysdba
   @orcl:指定了数据库实例(选哪个数据库),有它,要把监听服务打开
   若没有@orcl,就连接到默认的数据库
           

三、表空间及其分类

表空间:永久表空间、临时表空间、undo表空间
创建表空间格式:create 【temporary】tablespace XX tempfile | datafile 'XX.dbf' size XX
          如:create tablespace 1 datafile '1.dbf' size 10m;
             create temporary tablespace 2 tempfile '2.dbf' size 10m;
select * from dba_data_files; 查看表空间的数据文件
select * from dba_temp_files; 查看临时表空间的数据文件
select * from dba_tablespace; 查看表空间

修改表空间:修改表空间状态:alter tablespace a1 online(offline) 设置联机、脱机状态
                        alter tablespace a1 read only(read write) 只读、读写(联机)
          修改数据文件:增加数据文件:alter tablespace a1 add datafile 'XX.dbf' size XX;
                      删除数据文件:alter tablespace a1 drop datafile 'XX.dbf';

删除表空间:drop tablespace a1; 只删表空间
          drop tablespace a1 including contents; 表空间连同数据文件一起删
           

四、用户管理

1、创建用户
   create user zhe identify by 111111 default tablespace a1 temporary tablesapce a2;
2、查看创建的用户
   select username from dba_users;
3、给予权限:grant connect to zhe  给zhe连接权限
4、管理用户
   连接用户:conn 用户名/密码
   更改密码:alter user zhe identified by 222222;
   删除用户:drop user zhe 【cascade】;  cascade表示:用户连同其创建的东西全删
   锁定用户:alter user zhe account lock;
   解锁用户:alter user zhe account unlock;
           

五、角色、权限、数据字典

1、角色

角色:权限的集合
用户可以给角色指定权限,并把角色赋予相应用户
3种标准角色:connect(连接角色)、resource(资源角色)、dba(数据库管理员角色)
           对普通用户:给connect、resource权限
           对DBA管理用户:给dba权限
创建角色:create role 角色名;   如:create role manager;
删除角色:drop role manager;
给角色赋予权限:grant 权限 to 角色;
             grant create table,create view to manager;
把角色赋予用户:grant 角色 to 用户;
             grant manager to user01,user02;
撤回授权:revoke manager from user01;
           

2、权限

权限:分为系统权限、对象(实体)权限
查看所有系统权限:select * from system_privilege_map;
               常见系统权限:create session、create sequence、create table、create user、
                           create view

查看所有对象权限:select * from table_privilege_map;
                常见对象权限:select、update、insert、delete、all等(all:包括所有权限)
                授予对象权限格式:grant select,insert on scott.emp to manager2;
                               grant manager2 to user03;
                               grant all on scott.emp to user04;
                回收对象权限:revoke all on scott.emp from user04;
           

3、数据字典

dba_tablespaces:管理员级别的表空间描述信息
user_tablespaces:普通级别的...
如:select tablespace_name from dba_tablespaces;
   select   ... ...  ...  from user_tablespaces;

dba_users:管理员的用户信息
user_users:普通用户的...
如:select default_tablespace,temporary_tablespace from dba_users where username =' SYSTEM';  查看SYSTEM用户的表空间信息
   select username,defult_tablespace,temporary_tablespace from dba_users;

更改用户默认的临时表空间:alter user user01 default tablespace a1 temporary tablespace a2;
           

六、SQL是什么

SQL:结构化查询语言(Structured Query Language),是一种特殊的编程语言,用于存储数据、查询、更新、管理关系型数据库系统的语言
oracle的SQL:包括DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)、TCL(事物控制语言)

DDL语句包括:create table, drop table, create index, drop index, truncate(删除表中所有行)
           alter table:更改表结构,增加、修改、删除列
           alter table add constraint:在已有表上加约束
DML语句包括:insert:添加数据到数据库
            update:修改数据库中的数据
            delete:删除
            select:查询
DCL包括:grant:把权限/角色,赋予用户/角色(授予访问权限)
        revoke:回收权限
        lock:对数据库的特定部分进行锁定
TCL包括:commmit:提交事物处理
        rollback:事物处理回退
        savepoint:设置保存点
           

七、数据类型、创建表、约束

1、数据类型

oracle中的数据类型:字符类型、数值类型、日期类型、LOB类型

字符类型:char:固定长度的字符串,长度为1~2000个字节
        varchar2:可变长度的字符串,最大长度为4000字节
数值类型:number[p[,s]]  p:表精度 s:小数点的位数 ,可存储整数、浮点数等类型,最高精度38位
        如:number(5,0) 最大可存储 5位数 的整数
           number(5,2) 最大可存 999.99 的浮点数
日期类型:date
LOB类型:CLOB:字符LOB,存大量字符数据
        BLOB:存较大的二进制对象,如:图形、视频、剪辑、声音文件...
           

2、创建表

格式:create table 表名(
     列 数据类型,
     列 数据类型,
     ... ...
     列 数据类型
     );

如:create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2),
    birthday date,
    address varchar2(50)
    );
           

3、约束

约束的格式:[constraint 约束名] 约束类型 (column列)
          如不指定约束名,系统会自动分配一个
约束类型:主键约束(primary key constraint)
         唯一约束(unique constraint)
         默认约束(default ..)
         非空约束(not null ..)
         检查约束(check ..)
         外键约束(foreign ..)

注:
主键约束:定义表的主键,其值不为null,不重复,来保证实体的完整
        主键只有一个,但可由多个列构成
唯一约束:指定一个列或多个列组合的值的唯一性,防止在列中输入重复值(如:学生表中的身份证号)
        唯一约束:列可为null
        一个表里面,可有多个unique约束(即:把unique约束,定义在多个列上)
           

(1)主键约束:只有一个,但可由多列构成

1、创建表时,加约束 (2种方法)
   create table student(
   sid number(8,0) [primary key],
   name varchar2(20),
   sex char(2),
   birthday date,
   address varchar2(50),
   constraint sid_pk primary key(sid)
   );
2、若表已建成,要加约束
   alter table student add constraint sid_pk primary key(sid);

3、删除约束:alter table 表名 disable/enable/drop constraint 约束名; 
                           暂时删除/使之有效/彻底删除
       如:alter table student disable/../.. constraint sid_pk;
           

(2)非空约束(not null),属于列级约束

1、创建表时,加约束 (2种方法)
    create table student(
    sid number(8,0),
    name varchar2(20) [not null],
    sex char(2),
    birthday date,
    address varchar2(50),
    constraint nn_name not null(name)
    );
2、表已创建,加not null约束,用modify
   alter table student modify (name varchar2(20) not null);
   
3、删除约束,用modify
alter table 表名 modify (列 数据类型 null);
alter table student modify (name varchar2(20) null);
           

(3)唯一约束

1、创建表时,加约束 (2种方法)
    create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2),
    birthday date,
    address varchar2(50),
    email varchar2(50),
    cardid varchar2(18) [unique],
    constraint cardid_uk unique(cardid)
    );
2、表已创建,加约束
   alter table student add consraint cardid_uk unique(cardid);

3、删除约束:alter table 表名 disable/enable/drop constraint 约束名;
                           暂时删除/使之有效/彻底删除
       如:alter table student disable/enable/drop constraint cardid_uk;
           

(4)检查约束:对输入列(或整个表)的值,设置检查条件,以限制输入值  如:性别

1、创建表时,加检查约束  (2种方法)
    create table student(
    sid number(8,0),
    name varchar2(20),
    sex char(2) 【check(sex = '男' or sex = '女')】,
    birthday date,
    address varchar2(50),
    constraint sex_ck check(sex='男' or sex='女')
    );
2、表已创建,修改表时加check约束
   alter table student add constraint sex_ck check(sex='男' or sex='女');

3、删除check约束
   alter table student disable/enable/drop constraint sex_ck;
                       暂时删除/启用约束/永久删除
           

(5)外键约束:2个表数据之间的连接的一列多列,唯一一个涉及2个表的约束

oracle的增删改查

    系号:为外键列

  • 主表的主键列,从表的外键列 
  •  院系表为主表,学生表为从表
  • 注:设置外键时,主表字段是主键。主从表中,相应字段为同一类型。从表中,外键字段必须来自主表相应字段(的值或为null值)
1、创建表时,加外键
列级的格式:create table 从表表名(
           ...,
           外键列 数据类型 references 主表表名(主键列/唯一列) [on delete cascade]
           );
表级的格式:create table 从表表名(
           ...,
           constraint 约束名 foreign key(外键列) references 主表表名(主键列/唯一列) [on delete 
           cascade]
           );

如:
列级约束:主表:create table department(             从表:create table student(   
               depid varchar2(10) primary key,           sid number(8,0),
               depname varchar2(30)                      name varchar2(20),
              );                                         sex char(2),
                                                         birthday date,
                                                         address varchar2(50),
                                                         depid varchar2(10) references department(depid)
                                                         );
表级约束:主表如上
        从表:create table student(
             sid number(8,0),
             name varchar2(20),
             sex char(2),
             birthday date,
             address varchar2(50),
             depid varchar2(10),
             constraint depid_fk foreign key(depid) references department(depid)
             );
2、修改表时,加foreign key约束
   alter table student(从表) add constraint depid_fk foreign key(depid) references department(depid) 
   [on delete cascade];
   on delete cascade:有它,若删除时,级联删除
3、删除foreign key约束
   alter table student disable/enable/drop constraint depid_fk;
           

八、修改表、增删改查格式

1、修改表

添加列:alter table 表名 add 新增列名 数据类型;
       如:alter table student add tel varchar2(11);
修改列:alter table 表名 modify 列名 新的数据类型;
       如:alter table student modify tel number(11,0);
删除列:alter table 表名 drop column 列名;
       如:alter table student drop column tel;

修改列名:alter table 表名 rename column 列名 to 新列名;
         如:alter table student rename column sex to gender;
修改表名:rename 表名 to 新表名;
删除表:truncate table 表名;  只删除表数据,不删表结构
       drop table 表名;      表结构、表数据都删,就是这个表没有了
           

2、增删改查格式

1、添加信息
  inset into 表名[(列1,列2...)] values(值1,值2...); 若把表中的列都加数据,可省略[]
如:insert into student(sid,name,sex) values(001,'张三','女');
    insert into student values(002,'王五','女',to_date('19880909','YYYYMMDD'));
2、查询
  select * from 表名;  select column1,column2... from 表名;
  如:select * from student
      select sid,name from student;
3、修改
  update 表名 set column = values[,column = values] [where 条件];
  如:update student set Tel ='13800000000' where sid = 001;
     update student set address = '昌平区';
4、删除(数据)
  delete from 表名 [where 条件];
  如:delete from student;
     delete from student where sid = 002;
           

3、事务

commit:提交事务
rollback:回滚事务
savepoint:保存点
           

4、常见oracle数据字典

user_*
all_*
dba_*