zoukankan      html  css  js  c++  java
  • 数据库之 MySQL --- 数据处理 之 表操作、CRUD(六)

     个人博客网:https://wushaopei.github.io/    (你想要这里多有)

    一、 表操作

    创建数据库
    CREATE DATABASE demo
    -- 删除数据库
    DROP DATABASE demo

    -- 创建表
    -- 第一种方式 : 白手起家
    CREATE TABLE em(
    e_id INT PRIMARY KEY, -- primary key 主键,不可重复不能为null
    e_name VARCHAR(20),
    e_age INT
    )

    -- 第二种方式: 基于现有的表来创建新的表
    DROP TABLE em;

    CREATE TABLE em2
    AS
    SELECT first_name
    FROM employees

    -- 复制employees 表
    -- 注意: 表的约束是复制不了的
    CREATE TABLE em3
    AS
    SELECT *
    FROM employees
    
    -- 复制employees表但不要里面的内容
    CREATE TABLE em4
    AS
    SELECT *
    FROM employees
    WHERE 1 = 2;

    【1】 修改表
    CREATE TABLE em(
    e_id INT PRIMARY KEY,
    e_name VARCHAR(20),
    e_age INT
    )

    【2】修改列的类型

            如果列中没有数据,那么列的类型可以进行修改
            如果列中有数据,orcal是不允许修改的。mysql允许但大家需要谨慎修改

       

     ALTER TABLE em
        MODIFY e_age VARCHAR(20)

    【3】修改列的名称

       ALTER TABLE em
        CHANGE  e_age e_address VARCHAR(20)

    【4】添加列  

     ALTER TABLE em
        ADD e_age INT

    【5】删除列

       ALTER TABLE em
        DROP COLUMN e_age

    【6】修改表名 

      -- orcal中 修改表名 alter table em3 rename 旧的名字 to  新的名字
        ALTER TABLE em3
        RENAME TO emm
    DESC em;

    【7】删除表

    DROP TABLE emm
    -- 清空表 - 清空表中的内容,表结构还在
    TRUNCATE TABLE em2  -- 不能回滚数据
    DELETE FROM em2 -- 可以回滚数据
    -- truncate 比 delete from 效率要高
    
    COMMIT; -- 提交,一旦commit就不可以回滚了
    SET autocommit = FALSE; -- 设置不允许自动commit
    
    -- delete from em2;
    TRUNCATE TABLE em2;
    ROLLBACK -- 回滚到上一次的commit

    二、事务

        例 : AA给BB转钱,转一百块钱
        第一个动作 : AA = AA - 100
        ----- 抛异常了 ------
        第二个动作 : BB = BB + 100
        
        思考?如何做到二次动作要完成都完成,要失败都失败

      

     try{
           commit;
           SET autocommit = FALSE;
           第一次动作: AA = AA - 100
           System.out.println(1 / 0);
           第二次动作: BB = BB + 100
           commit;
        }catch(Exception e){
           rollback;
        }

    SELECT * FROM em2

    CREATE TABLE emp(
    emp_id INT PRIMARY KEY, -- 不能重复,不能为null
    emp_name VARCHAR (20),
    emp_age INT
    )
    
    DESC emp

    三 、数据操纵语言 -- CRUD


      【1】添加数据

    -- 第一种
    INSERT INTO emp(emp_id,emp_name,emp_age) VALUES(1,'强哥',56)
    INSERT INTO emp(emp_id,emp_age) VALUES(2,30)
    
    -- 注意: 没有插入字段的值默认为null
    INSERT INTO emp VALUES(4,'成哥',65)
    
    -- 第二种 基于现有的数据
    -- 注意列的类型和长度问题
    INSERT INTO emp(emp_id,emp_name)
    SELECT employee_id,first_name FROM employees

    【2】   改

    UPDATE emp SET emp_age =20 WHERE emp_id =1
    UPDATE emp SET emp_age = 30 -- 修改所有数据的emp_age


    【3】    删

    DELETE FROM emp WHERE emp_id =1
    DELETE FROM emp WHERE emp_id>100


    【4】删除失败和修改失败(有外键约束的表中)。

    SELECT * FROM departments
    DELETE FROM departments WHERE department_id = 50
    
    SELECT * FROM emp
  • 相关阅读:
    &与&&的区别
    x^y=(x&~y)|(~x&y)证明
    a、b交换与比较
    x+y = ((x&y)<<1) + (x^y) 证明
    (x&y) + ((x^y)>>1)即x和y的算数平均值
    默认参数提升
    类型转换
    闲扯原码,补码和反码(转)
    C/C++中float和double的存储结构
    led设备驱动(s3c_led.c)
  • 原文地址:https://www.cnblogs.com/wushaopei/p/11732853.html
Copyright © 2011-2022 走看看