数据库之 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

 

posted @ 2019-10-24 16:16  维宇空灵  阅读(149)  评论(0编辑  收藏  举报