Oracle课堂笔记ONE

一个认知:

       占市场份额最多的大型关系型数据库。

两个概念:

       数据库:存储数据的仓库。

       关系型数据库:数据库中保存的数据对象之间可以存在一些联系。

三个名词:

        sql:操作数据库的结构化语言,是一种符合ANSI标准的计算机语言。

        sql*plus:Oracle自带的可以输入sql语言的终端,并将最近结果展示在终端上。

        plsql:程序化的sql语言。在sql语言基础上新加来一些逻辑,如if else,使之形成sql块,完成复杂功能。

四种对象:

        table——表:表格,由行(元组)和列(字段)组成,每一行即一条完整的数据。

        view——视图

        序列

        索引

五种分类:

        针对sql语句进行分类。

        DDL(数据定义语言):create

        DQL(数据查询语言):select

        DML(数据操作语言):insert(增) delete(删) update(改)

        DTL(事务控制语言):commit(提交) rollback(回滚)

        DCL(数据控制语言):grant(授予权限) revoke(回收权限)



sqlplus常用命令

1、conn【ect】

用法:(1)conn username/ password 【as sysdba】

           (2)conn 回车以后再输入用户名密码

建议不要以sys用户的身份登录。

2、disc【onnect】断开连接

3、passw【ord】更改密码

4、show user 显示当前用户名

5、clear scr【een】清屏

6、exit 该命令会断开与Oracle的连接,并关闭sqlplus窗口



sqlplus的交互命令

1、edit

说明:可以编辑指定的sql脚本

2、spool

该命令可以将sqlplus屏幕上的内容输入的指定的sql文件中。

spool xxxx.sql

要往xxxx.sql里面输入的东西

spool.off



sqlplus显示的位置

1、linesize

说明:设置每一行显示的宽度,默认是80个字符。

sql>show linesize

sql>set linsize 字符大小

2、pagesize

说明:设置每一行显示的条目,默认是14行。

sql>show pagesize

sql>set pagesize 字符大小



Oracle基本操作:

——Oracle用户的管理

1、创建用户

create user username identified by password;

2、删除用户

drop user username;



用户管理的综合案例:

概述:创建出来的briup的用户是没有任何权限的,连最基本的登录数据库的权限都没有,需要为它指定相应的权限。

授予权限:grant

回收权限:revoke

grant 具体权限 to username

想要让briup用户登录到数据库:

grant connect to briup

grant create_database_link to briup;

revoke 具体权限 from username

角色

自定义角色:根据用户的需求添加权限到某个角色权限。

预定义角色:预定义好的角色。

权限

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

通过system不仅要赋予xiaohong登录到数据库的权限,还要让xiaohong能够给其他人赋予登录权限。

连接system。

create user xiaohong identified by w2019;

grant connect to xiaohong;

连接xiaohong。

create user xiaoming identified by w2019;

grant connect to xiaohong with admin option;

grant connect to xiaoming;

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



用户口令:profile

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

用户的锁定

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

连接system。

create profile loak_account limit failed _login_attempts 3 password_lock_time 2; 

将上面创建好的profile赋予给xiaohong。

alter user xiaohong profile loak_account;

xiaohong被锁定之后,登录system。

alter user xiaohong account unloak;



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

Oracle在表名的命名规范:

1、表名以字母开头

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

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

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

create table tablename (

字段名1 字段类型,

字段名2 字段类型,

……

字段名N 字段类型)

括号和字母之间可以不用空格。

Oracle中的数据类型:

1、字符型

char:最大2000个字符 定长

    name char(10)     ‘Andy      ’

varchar2:最大可以表示4000个字符 变长

    name varchar2(10)     ‘Andy’

clob(character lager object)字符型大对象:最大存储空间4G

2、数字型

number    -10的38次方——10的38次方

    sal number(5)    -99999——99999

    sal number(5,2)     -999.99——999.99    5表示有5个有效数字,2表示有两位是小数

3、时间型:

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

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

4、图片:

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

    一般存储相关文件的路径

案例:创建一个学生表

           学号 名字  年龄   性别 生日   工资

create table student_table(

no number(4),

name varchar2(20),

age number(3),

sex char(3),

brithday date,

sal number(7,2)

);

查看表结构:desc tablename;



对表的修改操作

添加一个字段:

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

案例:向之前创建好的学生表中添加一个字段。

alter table student_table add(classid number(2));

修改一个字段:

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

alter table student_table modify (no number(5));

alter table student_table modify (no char(5));

修改一个字段的字段名:

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

alter table student_table rename column no to student_to;

删除一个字段:

alter table tablename drop column 字段名;

alter table student_table drop column classid;

对表重命名:

rename oldname to newname;

rename student_table to student;

删除表:

drop table tablename;


添加数据:

每个字段都有数据

insert into tablename values(

1001,

‘张三’,

20,

‘男’,

‘13-JUN-1995’,

2534.67

);

因为Oracle默认的时间是dd-mm-yyyy,但是我们想让它是yyyy-mm-dd,修改语言环境:

修改语言环境:

alter session set nls_language='simplified chinese';

alter session set nls_language=english;

修改时间格式:

alter session set nls_date_format='yyyy-mm-dd'

只插入部分字段的数据:

insert into student_table(no,name, age) values(1002,'李四',22);

修改数据:

修改一个字段

update tablename set 要修改的字段名=要修改的值

update student_table set sex='女' where no=1001;

修改多个字段

update student_table set no='1008' ,birthday=‘1009’ where name=‘张三’;

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

update student_table set sal=sal/2 where sex='女’;

删除数据:

delete from tablename;可回滚

commit;不可回滚

delete from student_table;

truncate table tablename;不可回滚

设置保存点    

savepoint pointname;

回滚到某个保存点    

rollback to pointname;

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

           delete from briup_emp where empno=0020;

           删除员工表中员工工资小于5000的员工信息。

           delete from briup_emp where sal<5000;


删除表:

drop table tablename;



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

查看表结构

desc tablename;

查询某表中所有的数据(效率低)

select * from tablename;

查询某表中的某一个或某几个字段

select 字段名1,字段名2,…… from tablename;

select ename from briup_emp;

select ename,sal from briup_emp;

案例:查看名为Andy的工资和工作。

           select sal,job from briup_emp where ename='Andy';

           查看Andy的年工资。

           select sal*12 from briup_emp where ename='Andy';

问题:给字段名起别名。

           select 字段名1 别名1,字段名2 别名2,…… from ……;

           查看员工号为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 briup_emp;(这么做有问题,如果有员工的钱数为 null,那么最后算完的年薪也为null)

           select sal*12+nvl(comm,0) from briup_emp;

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

你可能感兴趣的:(Oracle课堂笔记ONE)