美文网首页
Oracle_Day03

Oracle_Day03

作者: 姜茶无糖 | 来源:发表于2019-02-28 10:50 被阅读0次

    权限

        系统权限:用户对数据库的相关操作权限

        我通过system不仅要赋予user1登录到数据库的权限,还要让user1能够赋予其他人登录权限(注:权限无法接力,除非管理员赋予权限可接力权限,grant 权限 to 用户 with admin option )

        对象权限:用户是否有对其他用户的对象进行操作的权限

    用户口令:profile,文件内包含了所有用户的配置信息

        Oracle在创建完成之后就会有一个default的profile。

    用户锁定

        指定某一个用户如果连续输错3次密码,就将他锁定,在2天之后自动解锁

        create profile loak_account limit failed_login_attempts 3 password_lock_time 2;

        新建profile文件   文件名                     连续输错密码次数                自动解锁时间

        将创建的profile赋予给user1

        alter user user1 profile loak_account;

        当user1被锁定后,通过DBA解锁

        alter user user1 account unlock;

    Oracle中表(表格,二维表,table)的操作

        Oracle中表名的命名规范

        1、必须以字母开头

        2、表名的大小不能超过30个字符

        3、不能出现oracle中的关键字

        4、名字中只能包含A-Z,a-z,0-9,_

    create table tablename(字段名1字段类型,字段名2字段类型,.......)

    Oracle中的数据类型:

        1、字符型:

            char(最大2000个字符,char为定长,当字段为定长时比如:身份证号,手机号,选用char) 

            varchar2(最大可以表示4000个字符,varchar为变长,当字段为变长时比如:名字,选用varchar2)

            clob(字符型大对象,最大可以存储4G的字符)

        2、数字型:

            number(取值范围为10^-38~10^38,浮点数:number(5,2)五位有效数字中有俩位小数,共有5位数)

        3、时间型:

            date:年月日时分秒,不不必指定长度

            timestamp:时间戳,可以表示秒之后的小数

        4、图片:

            blob    二进制文件,图片,视屏,音频

            一般存储相关文件的路径

    案例:创建一个学生表

        学号,名字,年龄,性别,奖金

        create table student_table(no number(4),name varchar2(9),age number(3),sex char(3),selary(6,3) );

        查看表结构:desc tablename;

        对表的修改操作:

        添加一个字段:

        alter table tablename add(字段名 字段类型(长度))

        修改一个字段(想修改的字段没有数据):

        alter table tablename modify(字段名 字段类型(长度))

        修改字段名:

        alter table tablename rename column 旧名字 to 新名字

        删除一个字段:

        alter table tablename drop column 字段名;

        对表重命名:

        rename 旧表名 to 新名字;

        删除表:

        drop table tablename;

        添加数据:

        insert into tablename values(字符1,字符2,‘字符串’),按照字段的顺序输入,字符串用单引号括起来

            因为Oracle默认的时间格式是dd-mm-yyy,但是我们想让Oracle的时间格式为yy-mm-dd,需要更改设置。

            将Oracle的环境更改为英文,alter session set nls_language=english;

            将Oracle的环境更改为中文,alter session set nls_language=‘simplified chinese’;

            更改时间默认格式:alter session set nls_date_format='yyy-mm-dd'

        只插入部分字段的数据

        insert into student_table (要插入的部分列) values(插入的部分数据)

        更改数据:

        修改一个字段:

        update tablename set 要修改的字段名=要修改的值 where 唯一标识 = '查询条件'

        修改多个字段:

        update tablename set 要修改的字段名1=要修改的值 , 要修改的字段名2=要修改的值 where 唯一标识=‘查询条件’

        案例:将所有女性的工资修改成之前的一半

        update tablename set sal = sal/2 where sex = '女';

        删除数据(回滚操作:rollback):

        完全删除

        delete from tablename;(数据可找回)

        truncate table tablename;(数据不可找回)

            设置保存点:savepoint 时间戳命名

            回退到保存点:rollback to 时间戳命名

        案例:删除员工表中员工编号为0020号的员工

            delete from emp where empno = 0020;

        案例:删除员工表中所有工资小于5000的员工信息

            delete from emp where sal<5000;

        Oracle中的查:用的最多,最复杂

            desc tablename:查看表结构

            select * from tablename;查某张表中的所有数据(效率低)

            select 字段名1,字段名2 from tablename; 查询某一个或者某几个字段

        案例:查看名为andy的工资与工作

                select sal,job from emp where ename='andy'

        案例:查看andy的年工资

                select sal*12 年工资,job 工作 from emp where ename = 'andy'(可以在要查找的字段后面起别名,字段名1 别名1,字段名2 别名2)

        案例:查看员工号为0001的员工的名字和工种

                select ename,job from briup_emp where empno=0001;

                select ename||'的工种是'||job from briup_emp where empno=0001;(字符串的拼接)

        案例:查看所有员工的年薪

                select sal*12+comm*12 年薪 from emp;(这么做,有问题,如果有员工的薪资为null,那么算出来的薪资也为null)

                select nvl(sal,0)*12+nvl(comm,0)*12 年薪 from emp;

                    nvl(exp1,exp2);如果exp1这个字段的数据为null,则其值为exp2

        where 子句

            案例:显示工资低于5000的员工信息

                select * from emp where sal<5000

            案例:查询入职时间在2004-01-01之后的员工信息

                select * from emp where startdate>'2004-01-01'

            案例:查询工资在3000到5000之间的员工信息

                select * from emp where sal<5000 and sal>3000

        like 子句(模糊查询)

            通配符:%:0~N个字符    “_”:表示一个字符

            案例:查询员工表中所有张姓的同事信息

                select * from emp where ename like '张%'

            案例:查询名字中第三个字母是a的员工的姓名和工资

                select ename , sal from emp where ename like '__a%'

             案例:查询名字中第三个字母是a的员工的姓名和工资

                select ename , sal from emp where ename like '%a__'

        in 子句

            案例:查询1号部门和2号部门的所有员工信息

                select * from emp where depton in (1,2);

        is / is not 子句

            案例:查询奖金为null的员工信息

                select ename from emp where comm is null

            案例:查询奖金不为null的员工信息

                 select ename from emp where comm is not null

        and 和 or子句

            案例:查询工资大于5000或奖金大于500且名字里有a这个字符的员工信息

                select ename,sal from emp where (sal>5000 or comm>500) and ename like '%a%'; 

        order by 子句(排序,默认升序排列)

            案例:查询所有员工的工资,并且从低到高来排序

                select ename ,sal from emp order by sal;

            案例:查询所有员工的工资,并且从高到低来排序

                select ename ,sal from emp order by sal desc;

            案例:查询所有员工的姓名,工资,部门编号,按照部门编号的升序且工资的降序。

                select ename,sal,deptno from emp order by depton,sal desc;

            案例:将所有员工的年工资做降序排列

                select ename,sal*12 年工资 from emp order by 年工资 desc;  

    相关文章

      网友评论

          本文标题:Oracle_Day03

          本文链接:https://www.haomeiwen.com/subject/vdicuqtx.html