08-数据定义语言(DDL)

数据定义语言(DDL)

-- 1.创建数据库 CREATE DATABASE
CREATE DATABASE IF NOT EXISTS my_test CHARACTER SET 'utf8';
-- 注意是utf8,不是utf-8

-- 查看查看数据库
SHOW DATABASES;

-- 切换数据库
USE my_test;

-- 查看表
SHOW TABLES;

-- 查看当前使用的数据库
SELECT DATABASE()
FROM dual;

-- 查看指定数据库下有哪些表
SHOW TABLES FROM atguigudb;

-- 修改数据库(一般情况下不会使用)
-- 更改数据库表的字符集
ALTER DATABASE my_test CHARACTER SET 'gbk';
SHOW CREATE DATABASE my_test;

-- 删除数据库
DROP DATABASE IF EXISTS my_test;

-- 2.创建表
-- 方式一 : 白手起家
CREATE TABLE IF NOT EXISTS myempl_1 #需要用户具有创建表的权限。
(
    id        INT,
    emp_name  VARCHAR(15), # 使用varchar定义字符串,必须定义其长度
    hire_date DATE
);
DESC myempl_1;
-- 查看创建表的结构
SHOW CREATE TABLE myempl_1;

-- 方式二:基于现有的表创建新的表,同时还可以导入数据
CREATE TABLE myempl_2
AS
SELECT employee_id, last_name, salary
FROM employees;

DESC myempl_2;
DESC employees;

SELECT *
FROM myempl_2;

-- 将查询的结果放入一张新创建的表中
CREATE TABLE myempl_3
AS
SELECT e.employee_id emp_id, e.last_name lname, d.department_name
FROM employees e
         JOIN departments d ON d.department_id = e.department_id;


-- 复制一个现有表的结构
CREATE TABLE employee_blank
AS
SELECT *
FROM employees
WHERE 1 = 2; -- 添加一个不满足的条件

SELECT *
FROM employee_blank;

-- 3.修改表(ALTER TABLE)

-- 3.1添加一个字段(默认添加到表尾)ADD
ALTER TABLE myempl_1
    ADD salary DOUBLE(10, 2);

ALTER TABLE myempl_1
    ADD phone_number VARCHAR(20) FIRST;

ALTER TABLE myempl_1 -- 推荐(在哪个字段后添加一个字段)
    ADD email varchar(45) AFTER emp_name;

-- 3.2修改一个字段 MODIFY
ALTER TABLE myempl_1
    MODIFY emp_name VARCHAR(25);

-- 3.3重命名一个字段 CHANGE
ALTER TABLE myempl_1
    CHANGE salary month_salary double(10, 2);

-- 3.4删除一个字段 DROP
ALTER TABLE myempl_1
    DROP COLUMN email;

-- 4.重命名表
-- 方式一
RENAME TABLE myempl_1
    TO myemployee_1;

-- 5.删除表
DROP TABLE IF EXISTS myemployee_1;

-- 6.清空表
TRUNCATE TABLE myempl_3;

-- 7.DCL中的commit和rollback
-- commit 提交数据,一但提交commit数据就被保存在数据库中,就无法进行回滚
-- rollback 可以实现数据的回滚,回滚到最近的一次commit之后

-- 8.truncate table VS delete table
-- 相同点:都可以实现对表中所有数据的删除(保留包结构)。
-- 不同点:truncate table 不可以回滚。delete 可以实现回滚。

-- 9.DDL的操作一但执行不可回滚,DML默认不可以回滚,但在执行前执行了 set autocomit=false,就可以回滚。
-- 9.1 DELETE FROM
COMMIT;
SET AUTOCOMMIT = FALSE;
DELETE
FROM myempl_3
WHERE 1 = 1;
ROLLBACK;
SELECT *
FROM myempl_3;
-- 9.2 truncate table
COMMIT;
SET AUTOCOMMIT = FALSE;
TRUNCATE TABLE myempl_3;
ROLLBACK;
SELECT *
FROM myempl_3;

-- 10.mysql8新特性,DDL的原子化


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值