mysql的tcl语句_初识数据库(TCL语句)

TCL语句 : 事物控制语句

--什么是事物 : 多种操作能够达到统一的结果

--在网上购买了一部电话

--1、查询是否有该电话的库存 ,将库存 - 1

--2、从银行卡中扣钱,a)查询卡中的钱是否足够 , 2)在银行卡中扣钱 , 3)将钱交给供货方

--3、已给物流、快递

-- 提交 / 回滚

事物控制的特性

--1、一致性  2、原子性  3、持久性  4、统一操作(隔离性)

一致性:指在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。

原子性:事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据改操作要全部执行,要么全部不执行。这种特性称为原子性。

隔离性:隔离性指并发的事务是相互隔离的。

持久性:持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。

DML语句:数据操作语言

数据操作语言 -- DML语句都需要提交或回滚

--增加  insert : 向表中插入数据   insert into 表名(列名1,列名2...) values(值,值...)

--向部门表中插入一条数据,部门编号是50, 部门名称 caiwu,部门所在地 beijing

insert into dept(deptno,dname,loc) values(50,'caiwu','beijing')

insert into dept values(60,'caiwu','beijing')

--null如何插入空值

--1、直接赋值

insert into dept(deptno,dname,loc) values(50,'caiwu',null)

--2、两个单引号

insert into dept(deptno,dname,loc) values(60,'caiwu',' ')

--3、在指定列名时,忽略要插入空的列

insert into dept(deptno,dname) values(60,'caiwu')

--将自己的信息插入到员工表中

select * from emp

select * from dept

insert into emp values (9527,'HUAAN','READER','7839','24-3月-2016',1000,200,null)

--插入时间

--隐式转换

--显式转换

--利用通配符进行插入

insert into dept (deptno,dname,loc) values(&a,'&b','&c')

--同时插入多条数据(多行)

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

create table emp2 as select * from emp where 1 = 1

select * from emp1

select * from emp2

--将emp表中部门号是30的员工插入到emp1中

insert into emp1

select * from emp where deptno = 30

--update : 修改表中的数据  update 表名 set 列名1 = 值1,列名2 = 值2,... ...列名n = 值 n

--where 条件必须要加

update emp set ename = 'heheng'

update emp set ename = 'heheng' where empno = 9527

--给员工表中'SMITH'的工资上调200

update emp set sal = sal + 200 where ename = 'SMITH'

--将'SMITH'调转到'KING'的同部门下

update emp set deptno =(

select deptno from emp where ename = 'KING')

where ename = 'SMITH'

--将'HUAAN'调到'SCOTT'同部门下,并且将领导设置为'SCOTT'

update emp set deptno =(

select deptno from emp where ename = 'SCOTT')

,mgr =

(select empno from emp where ename = 'SCOTT')

where ename = 'HUAAN'

--将员工的工资整体上调 2%

update emp set sal = sal*1.02

--修改'SMITH'同部门下的工资,按照10部门的平均工资+500修改,但是不包含'SMITH'

--数字500要写在表达式前面,子查询写在后面

update emp set sal = (500+

(select avg(sal) from emp where deptno = 10))

where deptno =

(select deptno from emp where ename ='SMITH')  and

(ename <> 'SMITH')

--delete : 删除表中的数据   delete [from] 表名 [where] --限定删除的数据

--将'SMITH'同部门的,工资比他高的全部删除

delete from emp where empno in(

select e.empno from emp e,(

select deptno,sal from emp where ename = 'SMITH') hh

where e.deptno = hh.deptno and e.sal > hh.sal)

DDL语句 : 数据定义语言

--create 语句  :   create table 表名(列名1 数据类型[default 值],列名2 数据类型[default]... ...列名n 数据类型[default])

--创建学生表

create table student(

--创建字段 学号  学号类型 数字型 长度为4位

scode number(4),

--创建姓名 字符型 长度是30位

sname varchar(30),

--创建生日

sbirthday date,

--创建身高

sheight number(3),

--创建性别

ssex char,

--创建班级

cno number(2) default 1

)

--向学生表中插入一条数据

select * from student

insert into student values(9527,'华安','24-12月-1999',180,'B',default,75.21)

--create table 表名 as 查询

--创建表内容是emp表中,部门号是10的部门

create table emp3 as select * from emp where deptno = 20

select * from emp3

--创建表 只有 ename, sal , sal*12字段

create table emp4 as select ename 姓名,sal 工资,sal*12 年薪 from emp

select * from emp4

--alter : 修改表属性  -- 修改对象属性

--alter table 表名 rename column 原名 to new 新名

--修改student表中 cno列名 为 sno

alter table student rename column cno to sno

--添加列

--向学生表中添加体重列

alter table student add (sweight number(3,1))

--修改列属性

alter table student modify(sweight number(4,1))

--添加默认值

--添加

alter table student modify sheight default (100)

--删除

alter table student drop(sweight)

思考 : 如果列中有数据 , 是否可以使用drop -- 没有确认提交 ,慎重慎重

alter table heihei drop(id)

select * from heihei

--删除(销毁)表

--drop 删除对象

--drop table 表名

drop table emp4

--截断

--truncate : 截断

--与delete的区别  1、delete属于DML语句 ,可以提交或回滚,truncate属于DDL语句,直接对源数据进行操作

--2、delete可以有条件,truncate没有条件

--3、是否释放空间

--4、从效率而言,truncate高于delete

--语法结构   truncate table 表名

truncate table student

select * from student

添加约束

在表的某一列上设定一个条件,防止无效的数据输入该列

--约束种类 :

--1、not null : 非空约束,不允许为空

--2、unique : 唯一键约束 ,该列中的值必须是唯一的,允许为空

--3、primary key : 主键约束,唯一的、不能重复的、且不能为空的,它的值可以确定表中的某一行记录

--4、foreign key : 外键约束,保证表与表之间的数据完整性,两个表A、B存在公共字段,

--如果这两个表的公共字段是A表的主键且是B表的外键,则A表和B表就可以关联

一般情况下,A表被称为父表,B表被称为子表

--1、子表的公共字段里的值的范围都是父表中的主键范围

--2、当父表里的某个值被子表里的外键所应用,此时不允许删除父表中的对应行

--3、check检查约束  :  在某一列上设定一个布尔表达式

delete from dept where deptno = 20

drop table student

--创建学生表,并为其中的字段添加约束

create table student(

--创建字段 学号  学号类型 数字型 长度为4位

scode number(4) primary key,

--创建姓名 字符型 长度是30位

sname varchar(30) not null,

--创建生日

sbirthday date ,

--创建身高

sheight number(3) check(sheight>0),

--创建性别

ssex char(4),

--创建班级

cno number(2) default 1 references calss (cno)

)

--创建外键表calss

create table calss(

cno number(2) primary key,

cname varchar(30) not null

)

--向学生表中插入一条数据

select * from student

select * from calss

insert into student values(9527,'华安','24-12月-1999',180,'男',1)

insert into calss values(1 ,'java')

insert into calss values(2 ,'web')

alter table student modify(ssex char(2))

insert into student (scode,sname,ssex)values(9529,'华梅','女')

--表级约束

--创建学生表

create table student(

--创建字段 学号  学号类型 数字型 长度为4位

scode number(4),

--创建姓名 字符型 长度是30位

sname varchar(30),

--创建生日

sbirthday date ,

--创建身高

sheight number(3),

--创建性别

ssex char(4),

--创建班级

cno number(2),

--添加约束关键字--constraint

constraint student_scode_pk primary key(scode),

constraint student_sname_uk unique (sname),

constraint student_sheight_ck check(sheight > 0),

constraint student_cno_fk foreign key(cno) references calss(cno)

)

--给表里的列添加约束

--创建学生表

create table student(

--创建字段 学号  学号类型 数字型 长度为4位

scode number(4),

--创建姓名 字符型 长度是30位

sname varchar(30),

--创建生日

sbirthday date,

--创建身高

sheight number(3),

--创建性别

ssex char(2),

--创建班级

cno number(2)

)

--给表里的列添加约束

select * from student

select * from calss

--给scode列添加主键约束

alter table student add constraint student_scode_pk primary key(scode)

--给sname列添加唯一约束

alter table student add constraint student_sname_uk unique (sname)

删除约束

--级联删除  cascade 关键字

alter table student drop constraint student_scode_pk cascade

--把班级表的主键删除,(有主外键关系的表)--测试级联删除的作用

alter table calss add constraint calss_cno_pk primary key(cno)

alter table student add constraint student_cno_fk foreign key(cno) references calss(cno)

insert into student values(9527,'coco','24-3月-2016','175','男',1)

alter table calss drop constraint calss_cno_pk  -- 此唯一/主键已被外键连接,删除失败

alter table calss drop constraint calss_cno_pk cascade  --删除成功,连带student外键一同删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值