加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

day03 dml,ddl,dcl,序列,视图,事务以及数据类型

发布时间:2022-09-30 03:35:11 所属栏目:MsSql教程 来源:网络
导读: --DML
--insert关键字
--作用:往表中插入一条(多条)记录
--元祖(tuple)值式的插入(一次插入一条记录)
--语法1:insert into tablename(column1,column2,...,columnN) values(val1,val

--DML

--insert关键字

--作用:往表中插入一条(多条)记录

--元祖(tuple)值式的插入(一次插入一条记录)

--语法1:insert into tablename(column1,column2,...,columnN) values(val1,val2,...,valN)

--例子:

insert into emp(empno,ename,sal,deptno) values(9527,'hua%an',100,40);

--如果往表中所有的列都添加数据时,表后面的字段可以不添加,直接写values

insert into emp values(8888,'xiaoqiang','aaa',9527,sysdate,0,null,40);

--查询结果式的插入

--语法2:insert into tablename sub-query

--例子:

insert into emp_temp (select * from emp where deptno = 20)

--创建一个emp的临时复制表

create table emp_temp as select * from emp where 1 = 2

--delete关键字

--作用:删除表中的数据

--语法:delete [from] tablename [where condition]

--例子:

delete emp_temp where empno = 8888;

delete from emp_temp;

--update关键字

--作用:更新表中的数据

--语法:update tablename set column1=value1,column2=value2,...,columnN=valueN [where condition]

--例子:

update emp_temp set sal = sal*1.2 where ename = 'SMITH';

select * from emp_temp;我

事务

--转账

update emp_temp set sal = sal - 500 where ename='JONES';

update emp_temp set sal = sal + 500 where ename='SMITH';

commit;

rollback;

create table aaa(id number,name varchar2(20));

--savepoint 存档点

insert into emp_temp(empno,ename) values(1111,'cai10');

insert into emp_temp(empno,ename) values(2222,'cai20');

savepoint sp1;

insert into emp_temp(empno,ename) values(3333,'cai30');

insert into emp_temp(empno,ename) values(4444,'cai40');

rollback to sp1;

--事务的四个特性:ACID

--原子性(A)

--一致性(C)

update emp_temp set sal = 5000 where empno=1111

update emp_temp set sal = sal+1000 where empno = 1111;

--隔离性(I)

--持久性(D)

用户管理(dcl)

--用户管理

--1.创建一个账户

create user zhangsan identified by 123456;

--2.修改账户的密码

alter user zhangsan identified by 654321;

--3.删除一个账户 [cascade 表示是否级联删除]

drop user zhangsan;

--4.让一个用户的密码失效

alter user zhangsan password expire;

--5.锁定、解锁一个账户

alter user zhangsan account lock;

alter user zhangsan account unlock;

--DCL

--grant授予权限

--revoke收回权限

--1.给用户授权

--允许用户登录

grant create session to zhangsan;

--给账户授权可以操作表

grant all on scott.emp_temp to zhangsan;

--2.取消用户的权限

revoke all on scott.emp_temp from zhangsan;

序列

--创建序列

create sequence seq_emp_temp

increment by 1

start with 1

--使用序列

--通过序列名.next_val

select seq_emp_temp.nextval from dual;

select seq_emp_temp.currval from dual;

insert into emp_temp(empno) values(seq_emp_temp.nextval)

select * from emp_temp;

视图

--登录到sys账户给scott赋予创建视图的权限

grant create view to scott;

--1.视图的创建

create view v$_emp_dept

as

select ename,sal,job,dname from emp,dept where emp.deptno = dept.deptno;

--视图也可以从视图中产生

create view v$_emp_dept_tem

as

select ename,sal from v$_emp_dept

--修改视图的数据,就是修改基表的数据

create or replace view v$_emp

as

select empno,ename from emp

with read only

select * from v$_emp;

select * from emp;

update emp set sal = 8888 where empno = 9527;

--视图的优点:可以使某些重复出现SQL语句变得更为简单

--视图的缺点:1.如果修改基表的结构mssql 使用序列,视图失效

--2.增加数据库的维护成本

--3.视图会被覆盖掉

--4.一般情况下,不要对视图进行DML操作

--视图的例子

select dname, grade

from (select deptno, avg_sal, grade

from (select deptno, avg(sal) avg_sal from emp group by deptno) t,

salgrade s

where t.avg_sal between s.losal and s.hisal) t1,

dept

where t1.deptno = dept.deptno

and t1.grade =

(select min(grade)

from (select deptno, avg_sal, grade

from (select deptno, avg(sal) avg_sal

from emp

group by deptno) t,

salgrade s

where t.avg_sal between s.losal and s.hisal));

--为上面的SQL中重复出现的sql语句创建视图

create view v$_dept_avgsal

as

select deptno, avg_sal, grade

from (select deptno, avg(sal) avg_sal from emp group by deptno) t,

salgrade s

where t.avg_sal between s.losal and s.hisal

--利用视图替换上面的sql语句

select dname, grade

from v$_dept_avgsal t1,

dept

where t1.deptno = dept.deptno

and t1.grade =

(select min(grade)

from v$_dept_avgsal);

--删除视图所表示的基表

create view v$_aaa

as

select * from aaa;

--删除表 aaa

drop table aaa;

--查询视图

select * from v$_aaa;

--删除视图 v$_aaa

drop view v$_aaa;

--DDL

--create

--作用:用来创建数据库的对象(表,视图,序列,索引等)

--语法1:create table tablename(column1 dataType, column2 dataType,...,columnN dataType)

--例子:

create table t_user(

id number,

username varchar2(30),

password varchar2(30)

);

--语法2:create table tablename as subquery

--例子:

create table emp_e1 as select * from emp where 1=1;

--alter

--作用:用来修改数据库的对象(表,视图,序列,索引等)

--语法:alter table tablename [modify/add/drop]

--例子1:

alter table emp_e1 modify(ename varchar2(10));

insert into emp_e1(empno,ename) values(9898,'cai10cai10cai');

--例子2:

alter table emp_e1 add(phone varchar2(11));

--例子3:

alter table emp_e1 drop column phone;

select * from emp_e1

--drop

--作用:用来删除数据库的对象(表,视图,序列,索引等)

--语法 drop table tablename

drop table emp_e1;

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!