安装Oracle:
windows7:
兼容性
windows7/XP:
*安装路径: 一定不能有空格和汉字
*文件夹不要出现空格: D:\Program Files\Oracle
*我的电脑名尽量不要是汉字
认识Oracle: 40% 60%
java C 汇编
关系型数据库管理信息系统: RDBMS
Relational DataBase Management System
DBMS
Oracle 甲骨文
MySQL --》MeriaDB
表: 由行和列组成的一个关系表
HBash :非关系型
连接Oracle:
运行:services.msc 命令进入服务:Oracle
OracleOraDb10g_home1TNSListener :允许外部程序访问Oracle
OracleServiceORCL:一个叫ORCL的数据库实例
数据库实例 = Oracle的占用的内存空间(SGA) + 进程
CMD中连接Oracle:
SQLPLUS 命令 用户名/口令
sqlplus sys/XXXXXXXX as sysdba
SYSDBA: 权限 用户:SYS 数据库系统管理员
SYSOPER: 权限 用户:PUBLIC 管理员 --》通常用来做热备份的权限
DBA: 角色 :角色由多个权限组成
NORMAL: 自然权限 普通权限 普通用户
Oracle安装好以后,有三个可用用户:
SYS :通常作为一个系统管理员来登录
SYSTEM :普通的管理员 DBA
SCOTT :普通用户
显示连接的用户: show user
连接其他用户: conn 用户名/口令 connect 用户名/口令
清理屏幕: host cls 或者 clear screen
记录操作(文件写入流的操作):
spool "文件.sql" :将接下来所有的内容写入到指定的文件中
spool off; 结束文件的写入
运行一个数据库脚本文件:(文件中的命令通常是一个SQL语句)
start "文件名" 或者 @ "文件名"
编辑上一个SQL语句:
change /出错的位置内容/更正后的内容
edit 或者 ed
/ : 运行修改后的SQL语句
* 切记: edit命令打开的文本框一定要关闭掉才能继续在cmd中执行
edit命令中打开的文本框不要出现 ; 分号
对用户操作:
conn scott/tiger
ERROR:
ORA-28000: the account is locked
原因 : 操作的用户被上锁
解锁操作:
1 先连接一个有权限的用户 conn system/etoak
2 alter user 用户名 account unlock;
创建用户:
1 连接一个有权限的用户 conn system/etoak
2 create user 用户名 identified by 口令;
Exec:
创建et1502用户
删除用户:
1 conn system/etoak
2 drop user 用户名;
drop user 用户名 cascade;
* 如果用户中没有任何内容,那么使用 drop user 用户名;即可
如果用户中有一些表 视图等内容 必须使用cascade
* 无论是修改用户属性还是对用户解锁,一定要在管理员用户下执行
创建用户:
create user 用户名 identified by 口令;
修改用户:
alter user 用户名 identified by 口令;
对用户解锁:
alter user 用户名 account unlock;
删除用户:
drop user 用户名 cascade;
Exec:如果把某个用户的密码忘了 怎么办?
1 sys
2 alter
drop truncate delete的区别?
如果要保留表结构释放表中数据,哪种命令效率更高?为什么?SQL :Structured Query Language 结构化查询语句
* DDL DML DQL DCL TCL
* 所有的sql命令都需要以 ; 来结尾
DDL: Data Definition Language 数据定义语句
create alter drop truncate
create :新建
新建用户:
create user 用户名 identified by 口令;
新建表:Table
create table 表名(
列名1 数据类型,
列名2 数据类型,
....
列名x 数据类型
);
* 定义表中的列时: 列与列之间用 , 隔开
最后一个列之后不要用 ,
* 任何一张表,必须满足第一范式
第一范式: 不能出现重复的列名
Exec:
创建一个学生表students :
学号sid 姓名sname 年龄age 性别gender 生日birth
create table students(
sid number,
sname varchar2(10),
age number(2),
gender varchar2(2),
birth date
);
alter :修改
修改用户密码:
alter user 用户名 identified by 口令;
修改表的结构:
新增列:
alter table 表名 add(新列名1 类型,新列名2 类型...);
删除列:
alter table 表名 drop column 列名;
修改列的类型:
alter table 表名 modify 列名 新类型;
修改列名:
alter table 表名 rename column 原列名 to 新列名;
修改表名:
alter table 表名 rename to 新表名;
drop :删除
删除用户:
drop user 用户名 cascade;
删除表:
drop table 表名;
* 一个用户下可以有多个表,但是表名不能重复
* drop 命令如果用来删除表,表的结构和表中数据会被存放在系统回收区中,表原先占有的内存空间没有被释放,可以恢复;
(可以通过闪回机制来恢复数据)
* 如果想要通过drop命令来完全删除表,那么需要加上purge命令
drop table 表名 purge;
truncate :截断
truncate table 表名;
* 截断表:保留表的结构,释放表中数据所占有的内存空间
? 请简述drop和truncate的区别
DML: Data Maniputlation Language 数据操纵语句
insert update delete
* 操纵的是表中的数据
Insert :新增
insert into 表名(列名) values(列对应的值);
* :如果列的类型是字符串,那么列值需要用'单引号
* :values中的顺序必须和表名()中的顺序一致
insert into student(birth,sid,sname,gender)
values('12-2月 1990',2000,'小红','女');
Update :更新
不带有条件更新:
update 表名 set 列名1='列值',列名2=列值 where 条件;
带有条件的更新:
update student
set gender='女',birth='25-7月 1990' where sname='小明';
Delete :删除
将表中的数据全部删除:
delete from 表名;
带有条件的删除:
delete from 表名 where 条件;
* delete 删除表中的数据,不会释放原先占有的内存空间,可以被恢复
DQL: Data Query Language 数据查询语句
Select :查询
select * from 表名;
查看表中所有的数据
* 星号表示表中的所有列
DCL: Data Control language 数据控制语句
grant 授权
系统权限: 能够操作的用户的权利
DBA :角色 :很多权限的集合
create table 创建表
create session 打开回话
create view 创建视图
resource 占用系统资源
授权:
grant 权限 to 用户名;
grant create session,create table,resource to et1502;
grant dba to et1502;
允许用户将自身权限复制给其他用户:
grant 权限 to 其他用户 with admin option;
用户权限:能够操作用户中的一些数据对象的权利
数据对象: 表 视图 序列 过程
insert update delete select execute执行
授权:
grant 权限 on 表名 to 用户;
将scott用户中的student的select权限给etoak:
* grant select on student to etoak;
conn etoak/etoak
此时,在etoak用户下就能够访问到scott.student
select * from scott.student;
用户权限的转交:
grant 权限 on 表名 to 用户名 with grant option;
grant select on scott.student to etoak with grant option;
conn etoak/etoak
grant select on scott.student to et1502;
此时:et1502用户也能够访问scott.student表
revoke 撤销:
revoke 权限 from 用户名;
revoke 权限 on 用户.表名 from 用户;
Exec:
1 创建etoak , et1502两个用户
2 将create session ,create table ,resource 权限给etoak
并且通过etoak 能够给et1502授create session权
3 在管理员用户下将scott的emp表的select权限给etoak
4 思考:
每次的年级考试后的排名 1... x名
学号 姓名 单科学科 单科成绩 总成绩 名次
* 一个学生对应一门学科有唯一的一个成绩
如何去构建数据表?
TCL: Translation Control language 事务控制语句
Commit :提交
Rollback :回滚
Savepoint :还原点
----------------------------------------------------------
cmd中连接上Oracle常用的命令:
host cls
change
edit
start @
spool
spool off
查看表结构:
desc 表名;