zoukankan      html  css  js  c++  java
  • 初识数据库(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外键一同删除

  • 相关阅读:
    字符串
    决策树
    结构体实验
    指针实验
    打印杨辉三角
    P176 1.2.3
    第七次作业
    第六次作业
    第五次作业
    第四次修改
  • 原文地址:https://www.cnblogs.com/coffeerun/p/5803154.html
Copyright © 2011-2022 走看看