目录
一、数据库的创建和管理
1、基础知识
1.1 数据储存过程
1.2 标识符的命名规则
1.3 MySQL中的数据类型:
2、创建和管理数据库
2.1 创建数据库
2.2 管理数据库
2.3 修改数据库
2.4 删除数据库
3、如何创建数据表
4、修改表 ALTER TABLE
4.1 添加一个字段
4.2 修改一个字段:数据类型、长度、默认长度
4.3 重命名一个字段
4.4 删除一个字段
5、重命名表
6、删除表
7、清空表
8、DCL中的COMMIT和ROLLBACK
9、对比TRUNCATE TABLE和DELETE FROM
10、DDL和DML的说明
11、内容拓展
一、数据库的创建和管理
1、基础知识
1.1 数据储存过程
1.2 标识符的命名规则
1.3 MySQL中的数据类型:
2、创建和管理数据库
2.1 创建数据库
#方式1:
CREATE DATABASE mytest1; //创建的此数据库使用的是默认的字符集
#方式2:
CREATE DATABASE mytest2 CHARACTER SET 'gbk'; //显式了指明了要创建的数据库的字符集
展示:SHOW DATABASE mytest2;
#方式3:如果要创建的数据库已经存在,则创建不成功,但不会报错
CREATE DATABASE IF NOT EXISTS mytest2 CHARACTER SET 'utf8';
2.2 管理数据库
查看当前连接中的数据库有哪些?
SHOW DATABASES;
切换数据库
USE atguigudb;
查看当前数据库中保存的数据表
SHOW TABLES;
查看当前使用的数据库
SELECT DATABASE() FROM DUAL:
查看指定数据库下保存的数据表
SHOW TABLES FROM mysql;
2.3 修改数据库
更改数据库字符集
SHOW CREATE DATABASE mytest2;
ALTER DATABASE mytest2 CHARACTER SET 'utf8';
2.4 删除数据库
#方式1:
DROP DATABASE mytest1;
#方式2:推荐,如果要删除的数据库存在,则删除成功,如果不存在,则默默结束,不会报错
SHOW DATABASE IF EXISTS mytest1;
3、如何创建数据表
#方式1: //需要用户举杯创建表的权限
CREATE TABLE IF NOT EXISTS myemp1(
id INT,emp_name VARCHAR(15),hire_data DATE
);
1、使用VARCHAR定义字符产,必须要指明长度
2、如果创建表时没有指明使用的字符集,则默认使用表所在的数据库的字符集
查看表结构:
DESC myemp1;
查看创建表的语句结构:
SHOW CREATE TABLE myemp1;
查看表数据
SELECT * FROM myemp1; //无数据
#方式2:基于现有的表,同时导入数据
CREATE TABLE myemp2 AS SELECT employee_id,last_name,salary FROM employees;
DESC myemp2;
DESC employees;
SELECT * FROM myemp2;
说明1:查询语句中字段的别名,可以作为新创建的表的字段名称
说明2:此时的查询语句可以结构比较丰富,使用前面的内容
CREATE TABLE myemp3 AS SELECT e.employee_id,d.last_name,d.department_id FROM employees e JOIN departments d ON e.department_id=d.department_id;
练习1:创建一个employees_copy,实现employees表的复制,包括表数据
CREATE TABLE employees_copy AS SELECT * FROM employees;
练习2:创建一个employees_blank,实现employees表的复制,不包括表数据
CREATE TABLE employees_copy AS SELECT * FROM employees WHERE 1=2; //写一个确定没有的过滤式子
4、修改表 ALTER TABLE
4.1 添加一个字段
ALTER TABLE myemp1 ADD salary DOUBLE(10,2); //默认加在表中最后一个字段的位置
ALTER TABLE myemp1 ADD phone_number VARCHAR(20) FIRST; //在最前面
ALTER TABLE myemp1 ADD email VARCHAR(45) AFTER emp_name; //放在指定的后面
4.2 修改一个字段:数据类型、长度、默认长度
ALTER TABLE myemp1 MODIFY emp_name VARCHAR(25) DEFAULT 'aaa'; //更改了长度的同时给了一个默认值aaa
4.3 重命名一个字段
ALTER TABLE myemp1 CHANGE salary monthly_salary DOUBLE(10,2);
ALTER TABLE myemp1 email mty_email VARCHAR(50);
4.4 删除一个字段
ALTER TABLE myemp1 DROP COLUMN my_email; //删除my_email列
4.5 插入一个字段
INSERT INTO table values();
如果使用子查询插入表的话,就不需要使用VALUES
INSERT INTO table SELECT * from othertable;
5、重命名表
#方式1:建议
RENAME TABLE myemp1 TO myemp11;
#方式2:
ALTER TABLE myemp2 RENAME TO myemp12;
6、删除表
不光讲表结构删除掉,同时表里的数据也会删除掉,释放表空间
DROP TABLE IF EXISTS myemp2;
DROP TABLE IF EXISTS myemp12;
7、清空表
清空表中的所有数据,但是表结构保留
SELECT * FROM employees_copy TRUNCATE TABLE employees_copy;
8、DCL中的COMMIT和ROLLBACK
COMMIT:提交数据,一旦执行COMMIT,则数据就被永久的保存在数据库中,意味着数据不可回滚。
ROLLBACK:回滚数据,一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后
9、对比TRUNCATE TABLE和DELETE FROM
相同点:都可以实现对表中所有数据的删除
不同点:
TRUNCATE TABLE:一旦执行此操作,表数据全部清除,同时,数据是不可以回滚的。
DELETE FROM:一旦执行此操作,表数据可以全部清除(不带WHERE),同时,数据可以进行回滚
10、DDL和DML的说明
1、DDL的操作一旦执行,就不可回滚。因为在执行完DDL操作之后,一定会执行一次COMMIT,而此COMMIT
2、DML的操作默认清空,一旦执行,也是不可以回滚的。但是如果在执行DML之前,执行了SET autocommit=FALSE,则执行的DML操作就可以实现回滚。
演示:DELETE FROM
COMMIT;
SELECT * FROM myemp3;
SET autocommit=FALSE;
DELETE FROM myemp3;
SELECT * FROM myemp3;
ROLLBACK;
SELECT * FROM myemp3;
演示:TRUNCATE TABLE
COMMIT;
SELECT * FROM myemp3;
SET autocommit=FALSE;
TRUNCATE TABLE myemp3;
SELECT * FROM myemp3;
ROLLBACK;
SELECT * FROM myemp3;
11、内容拓展
阿里巴巴MySQL命名规范
DDL的原子化:
创造book1表,但没有book2表
在MySQL8.0时,在后面的报错会回滚到前面,因此book1不会删掉
在MySQL5.0时,在后面的报错不会回滚到前面,因此book1会删掉
更多推荐
MySQL学习笔记——数据库的创建、修改与删除
发布评论