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.995表示有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;
【Oracle课堂笔记ONE】nvl(exp1,exp2):如果exp1这个字段的数据为null,则其值为exp2。
推荐阅读
- oracle|oracle java jdk install
- (六)Component初识组件
- performSelectorOnMainThread:withObject:waitUntilDone:参数设置为NO或YES的区别
- The|The ideal servant
- iPhone手机这些使用指南|iPhone手机这些使用指南 你知道多少()
- 数据技术|一文了解Gauss数据库(开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比)
- 青岛机情派iPhone5s指纹识别修复
- 每日一词|每日一词 101 | pioneer
- 我与press|我与press one的缘分
- vue项目+wxjssdk,config配置解决iPhone端签名错误的问题