MySQL创建和管理表
创建和管理表
基础知识
一条数据的存储
标识符命名规则
MySQL中的数据类型
常用
创建和管理数据库
删除后,除非有备份,否则,不能恢复
创建数据库
- 方式一:直接创建
CREATE DATABASE mytest1;
- 方式二:指明字符集
CREATE DATABASE mytest2 CHARACTER SET 'gbk';
- 方式三:判断数据库是否存在(推荐)
CREATE DATABASE IF NOT EXISTS mytest3 CHARACTER SET '字符集';
如果要创建的数据库已经存在,则创建不成功;反之,创建成功
使用数据库(管理)
- 查看当前连接的数据库有哪些
SHOW DATABASES;
- 切换数据库
USE mytest1;
- 查看当前数据库中保存的表
SHOW TABLES;
- 查看当前使用的数据库
SELECT DATABASE() FROM DUAL;
- 查看指定数据库下保存的表
SHOW TABLES FROM mysql;
修改数据库(一般不改)
- 更改数据库的字符集
ALTER DATABASE mytest2 CHARACTER SET 'utf8';
删除数据库
- 直接删除指定数据库
DROP DATABASE mytest1;
- 判断数据库是否存在(推荐)
DROP DATABASE IF EXISTS mytest1;
如果要删除的数据库存在,则删除成功;如果不存在,也不会报错
创建表
需要用户具备创建表的权限
前提:先要选好表创建的位置
USE 数据库
SHOW TABLES;
SHOW TABLES FROM 数据库;
方式一:直接创建
CREATE TABLE IF NOT EXISTS myemp1(
#字段
id INT,
emp_name VARCHAR(15),
hire_date DATE;
)
查看表结构和查看创建的表的语句的结构
DESC myemp1;
SHOW CREATE TABLE myemp1;
方式二:基于现有的表创建
同时导入数据,并且可以使用别名,两表互不影响
CREATE TABLE myemp1
AS
SELECT eemploye_id,last_nmae,salary
FROM employees;
#不要其中的数据
CREATE TABLE myemp1
AS
SELECT eemploye_id,last_nmae,salary
FROM employees
WHERE 1 =2;#1不可能等于2
修改表
——>ALTER TABLE
添加字段
默认添加到表中最后的字段
ALTER TABLE myemp1
ADD salary DOUBLE(10,2);#一个10为,小数位2位
添加到第一位
ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST#此字段为表中的第一列
指定位置
ALTER TABLE myemp1
ADD email VARCHAR(45) AFTER emp_name#在emp_name的后面
修改字段
改长度
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25);
重命名字段
ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(12,2);
#久名字 新名字 新范围
删除字段
ALTER TABLE myemp1
DROP COLUMN email;
重命名表
- 方式一:RENAME(推荐)
RENAME TABLE mytemp1
TO my_emp1;
- 方式二:
ALTTER TABLE myemp2
TO em_emp2;
删除表
表的结构和数据都删除了,释放表空间
DROP TABLE IF EXISTS my_emp2;
清空表
清空数据,保留表结构
TRUNCATE TABLE employees_copy;
对比TRUNCATE TABLE和DELETE FROM
- 相同:
都可以对表进行删除,同时保留表结构
- 不同:
TRUNCATE TABLE:一旦操作,表数据全部清除,同时,数据不回滚
DELETE FROM:一旦执行,表数据可以全部删除(可以指定删除),数据可以回滚
拓展1
DCL中COMMIT和ROLLBACK的使用
-
COMMIT:提交数据,一旦执行,则数据永久保留,不可以回滚
-
ROLLBACK:回滚数据,一旦执行,可以回滚,到最近的一次COMMIT使用
DDL和DML 的说明
-
DDL:一旦执行,不可以回滚(执行完DDL后会自动进行提交,不受任何的影响)
-
DML:一旦执行,也是不可以回滚,但是可以在执行DML前执行SET autocommit = false,则执行DML 操作可以回滚
拓展2
阿里巴巴《Java开发手册》之MySQL字段命名
如何理解清空、删除表等操作要谨慎
MySQL新特性—DDL的原子化
如果操作成功,则执行;如果语句中有一项不合格(eg:表不存在)则该语句回滚