一、数据库基本概念
1)数据库管理系统:一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,Oracle、DB2、Mysql、MS Server;
2)数据库: 按照数据结构来组织、存储和管理数据的仓库。
3)数据:
4)表(Table):数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row)和列(Column)组成的。
5)视图:其实是一个虚拟的表,在数据库中并不实际存在。视图数据是由查询数据库表产生的,它限制了用户能看到和修改的数据。
6)索引:索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。
7)存储过程:存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。
8)触发器:触发器是一个用户定义的SQL 事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动执行。
9)ER图:实体关系图
10)范式:
第一范式:数据库表的每一列都是不可分割的基本数据项;
第二范式:要求实体的属性完全依赖于主关键字primary key:
SelectCourse 表(学号, 姓名, 年龄, 课程名称, 成绩,学分)
1、数据冗余
2、更新异常
3、插入异常
4、删除异常
第三范式:数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖;
11)事务特性:原子性、一致性、隔离性、持久性
设置oracle事务隔离界别:
set transaction isolation level serializable;
未提交读:事务A可以读取事务B未提交的数据。
提交读:事务A只能读取事务B提交了的数据
可重复读:在同一个事务A里,先后执行同一个查询语句,得到的结果是一样的。
序列化读:事务A在执行的时候不允许其他事务的执行,隔离级别最高。
12) SQL:结构化查询语言,是操作关系型数据库中的对象。
二、SQL语句
SQL Statement (SQL 语句)
1)DDL Data Defination Language数据库定义语言
create,alter,drop,truncate
2)DML Data Management Language数据库操纵语言
insert ,upate ,delete
3)DCL Data Control Language数据库控制语言
grant revoke
4)TCL Transaction Control Language)数据库事务控制语言
commit,rollback,savepoint
5)Select数据库查询语句
Select
三、用户及连接的一些指令
连接命令
(1)conn[ect]
用法:conn 用户名/密码@网络服务名 [as sysdba/sysoper]
当用特权用户身份连接时,必须带上 as sysdba 或是 as sysoper
(2)disc[onnect]
说明:该命令用来断开与当前数据库的连接
(3)passw[ord]
说明:该命令用于修改用户的密码。如果要想修改其他用户的密码,需要用sys/system登陆。
(4)show user
说明:显示当前用户名
(5)exit
说明:该命令会断开数据库的连接,同时会退出sqlplus
文件操作命令
(1)start和@
说明:运行sql脚本
案例:sql>@ C:\Users\Administrator\Desktop\submit_me.sql
或者sql> start C:\Users\Administrator\Desktop\submit_me.sql
(2)edit
说明:该命令可以编辑指定的sql脚本
案例:sql>edit C:\Users\Administrator\Desktop\submit_me.sql
(3)spool
说明:该命令可以讲sqlplus屏幕上的内容输出到指定文件中去
案例:sql>spool C:\Users\Administrator\Desktop\a.sql 并输入 sql>spool off
显示和设置环境变量
概述:可以用来控制和输出各种格式,set show如果希望永久的保存相关的设置,可以去修改glogin.sql脚本。
(1)linesize
说明:设置显示行的宽度,默认是80个字符
sql>show linesize
sql>set linesize 90
(2)pagesize
说明:设置每页显示的行数目,默认是14
用法和linesize一样
至于其他环境参数的使用也是大同小异
创建用户:
概述:在oracle中创建一个用户create user语句,一般是具有dba(数据库管理员)的权限才能
使用
create user xiaoming(用户名) identified by m123(密码)
给用户修改密码
概述:如果给自己修改密码可以直接使用
sql>password 用户名
如果给别人修改密码则需要具有DBA的权限,或是拥有alter user的系统权限
sql:>alter user 用户名 identified by 新密码
删除用户
概述:一般以dba的身份去删除某个用户,如果用其他用户去删除用户则需要具有drop user的权
限
比如drop user 用户名 【cascade】
【cascade】:如果被删除的用户已经创建了表,那么在删除该用户时就需要在命令中带上该参数
表示级联删除
sys与system
sys有create database的权限,而system没有,其他相似(????)这个未确认~!
在日常对orcale管理过程中,使用system就够了
查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;
查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
select * from dba_sys_privs;
select * from user_sys_privs;
查看角色(只能查看登陆用户拥有的角色)所包含的权限
sql>select * from role_sys_privs;
查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
查看所有角色:
select * from dba_roles;
查看用户或角色所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;
查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS
用户管理的综合案例
概述:创建的新用户是没有任何权限的,甚至连登录的数据库权限都没有,需要为其制定相应的
权限,给一个用户赋权限使用命令 grant,回收权限使用命令 revoke
授权角色
orcale对用户的设定分为权限和角色,
权限分为系统权限和对象权限;
系统权限:用户对数据库的相关权限
create session权限
对象权限:用户对其他用户的数据对象操作的权限
select
insert
update
delete
all
create index
......
数据对象:比如表,视图,过程....
角色:
事先定义一些角色,例如connect,connect本身包含
7种权限
自定义角色:根据用户或项目的权限需求,在后期由
人为设定的角色
预定义角色:该角色在安装数据库时已经配置好的。
例如connect、dba(管理员权限)、resource(可以
在任何表空间里建表)
grant connect to xiaoming(用户名);
如何让xiaoming去查询别人的表
grant select(查询权限) on emp(表名) to
xiaoming;
select * from scott(方案).emp;
方案:这里指scott的表
grant update on emp to xiaoming;
授权修改emp表给xiaoming
grant all on emp to xiaoming;
授权所有权限给xiaoming对emp表进行操作
权限的传递
如果是对象权限,就在后面加入 with grant option
加入with grant option后xiaoming可以将权限继续
向下传递
指令由授权人写入
如果是系统权限
system给xiaoming赋权的时候;
grant connect to xiaoming with admin option
xiaoming可以把这个权限继续向下传递
revoke收回权限
revoke select on emp from xiaoming;
收回 查询emp表的权限 从xiaoming
谁授权,谁收回权限
oracle 用户的管理
概述:profile是口令限制,资源限制的命令集合,当建立数据库时,oracle会自动建立名称为default的profile.当建立用户没有指定profile选项,那oracle就会将default分配给用户。
(1)账户锁定
概述:指定该庄户(用户)登陆时最多可以输入密码的次数,也可以指定用户锁定时间(天)一般用dba的身份去执行该命令,
例子:指定tea这个用户最多只能尝试3次登陆,锁定时间为2天,
sql>create profile lock_accunt limit
failed_login_attempts 3 password_lock_time 2;
sql>alter user tea profile lock_account;
(2)给账户(用户)解锁
spl>alter user tea account unlock;
(3)终止口令
为了让用户顶起修改密码可以使用终止口令的指令来完成,同样这个命令也需要dba身份来操作。
例子:给前面创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自家的登陆密码,宽限期为2天。看看怎么做。
sql>create profile myprofile limit password_life_time 10 password_grace_time 2;
sql>alter user tea profile myprofile;
口令历史
概述:如果希望用户在修改密码时,不能使用以前使用过的密码,可以用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就会提示用户重新输入密码。
例子:
1)建立profile
sql>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10
password_reuse_time //指口令可重用时间,即10天后就可以重用
2)分配给某个用户
删除profile
概述:当不需要某个profile文件时,可以删除该文件
sql>drop profile password_history [cascade]
by:cs