7.DML+DDL+DCL+TCL(SQL基础)

现在还差一个索引和开窗SQL基础这个专栏就差不多了,然后后面可能会发pysql,我现在正在恶啃Java在后期都会分享,当时只是做个笔记分享,没想到反响不错,多多少少得到了一些积极的情绪价值学着也更有动力,也是希望真的能帮助一些人。

我做笔记多是用的语雀,笔记就是像这篇一样,格式没办法复制,先凑合看一下,后面我有时间会编辑一下的,内容我也会不断更新。我把练习题大多删掉了,只保留了知识点部分,如果有网友需要的话我也会考虑都整理出来的。加油一起进步!


DML 语句

定义:针对数据的处理经过DML语句可以实现数据的增删改

1.数据的新增 insert into

---DML语句执行完后,需要手动提交或者回退

1.1 指定列插入

insert into 表名(列名1,列名2,列名3 ...) values (值1,值2,值3...);

1.2全列插入

insert into 表名values(值1,值2...值n); --- n和表中列的个数要保持一致

--注意:值和列在数量,顺序,数据类型(字段属性)要保持一致

2.数据的修改 update

语法:

1. update 表名set 列1=新值1,列2=新值2; ---= 赋值 ---更新表中的数据 --更新整张表中的数据

2. update 表名 set 列=值 where 条件; ---按条件更新数据

值可以放:

1.放具体的值 :10000

2.可以放计算表达式 sal*1.5

3.可以放函数 update emp set sal=length(job)*1000 where deptno=10;

4.可以放子查询 (按条件更新时,给一个字段赋值,只能放单行单列子查询)

3.数据的删除 delete

delete --对表中的数据进行删除

delete from 表名;---删除整张表的数据

delete from 表名where 条件;---按条件删除

4.同时实现增删改 merge into

merge into 表1 ---目标表

using 表2 --数据源表

on( 关联条件 ) ---主键列或者唯一列

when matched then ---匹配成功时要做的事情

update set t1.列=t2.列 where 条件

delete where 条件 ----此时要满足以上所有条件

when not matched then ---匹配不成功时要做的事情

insert (t1.列1,t1.列2) values( t2.列1,t2.列2)

--用表a更新表b:参照表a更新表b的价格,如果表a中的数据在表b中不存在,则将数据插入表b

select * from t_bb
select * from t_aa

merge into t_bb t1
using t_aa t2
on (t1.ID=t2.ID)
when matched then
update set t1.price=t2.Price --where t2.ID=t1.ID
when not matched then
insert (t1.ID,t1.TYPE,t1.PRICE) values (t2.ID,t2.TYPE,t2.PRICE)

DDL --数据定义语句 对数据库对象的增删改

定义:针对数据库对象的操作

数据库对象:表、用户、角色、视图、序列、约束、索引、存储过程、函数

 create --创建一个数据库对象

create table 表名

( 列1(字段名) 字段属性,

列2 字段属性2,

列3 字段属性3,

...

列n 字段属性n

)

表名和列名 命名规范:

1.必须以字母开头 a_1 A

2.长度不能超过30个字符

3.同一个用户下,表名不能重复,用一张表下,列名不能重复

4.不建议使用中文

5.不建议使用下划线以外的其他特殊字符

6.不建议和oracle关键字重复

DDL语句 执行成功即生效,不需要手动提交

--快捷建表---复制一张表

create table 表名as sql查询语句 ---sql语句的查询结果创建成一张新表

--字段属性: 每一个字段都有自己的属性,该属性决定了该字段中存入的数据类型。

1.字符型字段属性

1.1. char(n):固定长度的字符串,该字段属性下面只能存放字符型数据,n代表字节长度,存入的数据总长度不能超过n

存入的数据长度不足n,则在右侧填充空格使其长度达到n,最终以n个长度存储。 默认最长长度 2000

1.2 varchar2(n):可变长度字符串,该字段属性下面只能存放字符型数据,n代表字节长度,存入的数据总长度不能超过n

存入的数据长度不足n,则以实际长度存储。 默认最长长度 4000

CHAR 与VARCHAR2 的关系:

CHAR 与VARCHAR2 是一对矛盾的统一体,两者是互补的关系.

VARCHAR2 比CHAR 节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,

DCL--数据控制语句

在sql语言中,是一种可对数据访问权限进行控制的指令

grant to --授权、赋权

revoke from --收回权限

控制特定用户对数据表、查看表、存储过程,函数等数据库对象的控制权

用户

user 用户:用来登录数据库的账号

system --管理员用户

scott --普通用户

新建用户:

create user 用户名 identified by 密码;

注意:

1.用户名不缺分大小写,密码区分大小写

2.用户创建完,仅仅是创建了一个账号,该账号没有任何权限

3.用户和用户之间不能直接访问,只有授权后才可以访问

4.管理员用户可以直接访问其他用户

create user testname2 identified by 123456; --创建一个普通用户

grant 权限 to 用户;---给用户赋权

grant create user to scott;---给scott 一个创建用户的权限

grant create session to testname2; --给 testname2 一个登录数据库的权限

create table test805
(
id number,
name varchar2(20)
);
grant create table to testname2;

角色

role:--带有一系列权限的集合

作用:给用户赋予一个角色,相当于 赋予该角色下的所有权限

分类:

系统角色: DBA 、管理员角色

自定义角色: 自己创建的角色

1.创建角色:

create role 角色名;

create role urole627;

2.给角色赋权:

grant create user to urole627;

grant create session to urole627;

grant create table to urole627;

grant select any table to urole627;

grant create view to urole627; --创建视图的权限

3.将角色赋权给用户:

grant 角色 to 用户;

grant urole627 to 新用户;

grant DBA to scott;

总结:

grant 权限|角色 to 角色|用户;

revoke 权限|角色 from 角色|用户;

修改密码:alter user 用户名 identified by 新密码;

删除 用户:drop user 用户名;

锁定和解锁用户:alter user 用户名 account lock; --加锁 alter user 用户名 account unlock; --解锁

TCL 事务控制语言

事务:为了完成某些业务,由一些看的见的sql 或者看不见的后台程序组成的一系列的逻辑单元。

事务的四个属性(ACID)

1.原子性:事务是一个不可分割的整体

2.一致性:所有的数据保持状态一致

3.隔离性:当前事务在修改数据时,其他事务只能看到修改之前的样子

4.持久性:当事务提交成功后,数据永久保存,直到下一个事务来改变它

commit;---提交

rollback;--回滚

显示提交:由commit 决定当前事务是否提交 针对 DML 语言;

隐式提交:一旦事务执行成功,会自动提交 比如:DDL 语言;

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值