Oracle数据库

本文详细介绍了Oracle数据库的创建表、修改表名、用户管理、权限控制、事务处理、DML操作、DQL查询以及视图、索引、存储过程等核心概念和操作。通过示例展示了如何创建和修改表结构,用户权限的赋予与回收,以及数据的查询和更新。此外,还涵盖了SQL的基本语法,如选择、排序、分组、条件判断等,以及多表查询和事务处理的使用。
摘要由CSDN通过智能技术生成

-注释
/*
数据定义语言 DDL:create(创建) alter(修改) drop(丢弃)
数据操纵语言 DML:insert(增) update(改) delete(删)
数据查询语言 DQL:select(查)基本查询语句 order by(排序) group by(分组)
数据控制语言 DCL:grant(授权) revoke(回收)
事务控制语言 TCL:commit(提交) rollback(回滚) savepoint(存储点)
*/
–语法结构:创建用户
create user 用户名 identified by 口令 [account lock|unlock];
–ex:
create user tom
identified by tom
account unlock;

–语法结构:修改密码
alter user 用户名 identified by 新密码;

–语法结构:修改用户处于锁定、非锁定状态
alter user 用户名 account lock|unlock;

–语法结构:删除用户
drop user 用户名 cascade; --如果需要删除的用户下没有数据对象,可以省略cascade关键字

/*权限->角色->用户
系统把权限赋给角色,然后把角色赋给用户
connect:连接数据的角色
resource:资源角色
dba:最高权限
*/
–语法结构:授予权限
grant 角色|权限 to 用户|角色;
–ex:
grant connect, resource to tom;

–语法结构:回收权限
revoke 角色|权限 from 用户|角色;

–练习
– 新建一个用户 tom,密码设置为 love

– 给用户 tom 授权登录,访问资源的权限

– 锁定 tom 用户的账户,使其不能登录

– 给 tom 用户解锁

– 收回 tom 用户的登录、访问资源的权限

– 删除用户 tom


–语法结构:创建表
create table 表名(
列名1 类型 [null | not null] [constraint],
列名2 类型
);
–ex:
create table test(
name varchar2(6),
sex varchar2(4),
age number(3)
);

–语法结构:修改表名
rename 原表名 to 新表名;
–ex:
rename test to test10;

–语法结构:添加列
alter table 表名 add 列名 列类型 约束;

–语法结构:添加多列
alter table 表名 add (列名1 列类型 约束, 列名2 列类型 约束);
–ex:
alter table test10 add (
fname1 char(10),
fname2 varchar2(10)
);

–语法结构:删除列
alter table 表名 drop column 列名;
–ex:
alter table test10 drop column fname2;

–语法结构:删除表
drop table 表名;
–ex:
drop table test10;

–语法结构:创建约束
alter table 表名 add constraint 约束名 约束内容;
–ex:创建学生信息表与约束
create table infos(
stuid varchar2(7) primary key, – 主键约束
name varchar2(10) not null, --非空约束
sex varchar2(3) check(sex = ‘男’ or sex = ‘女’), --检查约束
seat number(10) unique, – 唯一约束
address varchar2(50) default ‘地址不详’ --默认约束
);

–主键(主表)和外键(从表)的类型必须保持一致
–1.从表中外键的字段必须来源于主表.
–2.对主表执行删除操作时,如果删除的主键值在从表中出现,那么就删除失败

–ex:创建成绩表
create table scores(
–id varchar2(7) not null references infos(stuid), 创建表时即设置外键约束
id varchar2(7),
term varchar2(5),
score number(4)
);

alter table scores
add constraint ck_scores_score check(score>=0 and score<=100); --检查约束

alter table scores
add constraint fk_scores_id foreign key(id) references infos(stuid); --外键约束

alter table SCORES modify SCORE not null; --添加非空约束
alter table SCORES modify SCORE default 0; --添加默认约束

–语法结构:删除约束
alter table 表名 drop constraint 约束名;

–练习
– 创建表 class_info
/*
字段名 类型 长度 可选值
c_id 字符串 20 主键
c_type 字符串 6 UI or 测试 or 开发
c_position 字符串 20 非空
start_time 日期(date)
c_status 字符串 6 在读 or 毕业
*/
create table class_info(
c_id varchar2(20) primary key,
c_type varchar2(6) check(c_type in (‘UI’, ‘测试’, ‘开发’)),
c_position varchar2(20) not null,
start_time date,
c_status varchar2(6) check(c_status in (‘在读’, ‘毕业’))
);
– 把表 class_info 改成 class_info2
rename class_info to class_info2;

–上面使用system用户
–下面使用scott用户

/*语法结构:基本查询
select *|列名|表达式
from 表名;

select 识别什么列

  •      表示表中的所有列
    

列名可以选择若干列,各个列之间中逗号分隔
表达式可以是列名、函数、常数等组成
from 从哪个表查
*/
–ex:查询所有列
select *
from dept;

–ex:选择指定的列
select deptno, loc
from dept;

–ex:使用别名
select d.deptno, d.dname
from dept d;

select d.deptno “部门编号”, d.dname as 部门名称
from dept d;

/*语法结构:基本查询
select *|列名|表达式
from 表名
where 条件
order by 列名;

select 识别什么列

  •      表示表中的所有列
    

列名可以选择若干列,各个列之间中逗号分隔
表达式可以是列名、函数、常数等组成
from 从哪个表查
where 查询的条件
order by 在查询结果中排序,默认升序 ASC,降序 DESC
*/
–ex:
select *
from emp e
where e.sal > 2000
order by e.sal asc;
/*操作符
算数运算:+ - * /
关系运算:= > < <= >= != <>
逻辑运算:and or not
字符串连接操作符:||
/
select e.sal, e.sal+100, e.sal-2, e.sal
2, e.sal/10
from emp e;

select e.ena

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值