库的管理

# 创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库
# if not exists可选,作用是当数据库已存在时执行创建语句不会报错

# 修改数据库名
rename database 旧 to 新;

# 更改数据库的字符集
ALTER DATABASE 库名 CHARACTER SET 字符集;

# 删除数据库
DROP DATABASE IF EXISTS 库名;

表的管理

# 创建表
CREATE TABLE 表名(
	字段1 类型[(长度) NOT NULL AUTO_INCREMENT UNSIGNED],
	字段2 类型[(长度) 约束],
	字段3 类型[(长度) 约束]
);
# CHANGE和MODIFY的区别
# CHANGE:可以同时修改字段名和类型
# MODIFY:只可以修改类型 
# 修改字段名(列名)
ALTER TABLE 表 CHANGE COLUMN 原字段名 新字段名 字段类型(长度);

# 修改列的类型或约束
ALTER TABLE 表 MODIFY COLUMN 字段名 类型;

# 添加新字段
ALTER TABLE 表 ADD COLUMN 字段名 类型;

# 删除列
ALTER TABLE 表 DROP COLUMN 字段名;

# 修改表名
ALTER TABLE 旧表名 RENAME TO 新表名;

# 表的删除
DROP TABLE 表名;
#如果表不存在的情况下删除表会报错,添加 IF EXISTS即可
DROP TABLE IF EXISTS 表名;

# 复制数据表
# 1、仅仅复制表结构,不复制数据
CREATE TABLE copy_表 LIKE 表;
# 2、复制结构的同时,复制数据
# 方法1: 该方法可能会报Statement violates GTID consistency的错误
	CREATE TABLE copy_表 SELECT * FROM 表;
# 原因是这是因为在5.6及以上的版本内,开启了 enforce_gtid_consistency=true 功能导致的
# 若想使用这种方法,可以:
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off;
配置文件中 :ENFORCE_GTID_CONSISTENCY = off;
# 方法2:拆分sql语句(不要忘记两条语句中间的分号)
	CREATE TABLE copy_表 like 表;
	INSERT INTO copy_表 SELECT * FROM 表;

# 3、复制部分数据(筛选条件自定)
CREATE TABLE copy_表
SELECT id, content FROM 表
WHERE id < 10;

# 4、只复制部分字段,过滤掉所有数据(1=2恒不成立,所以不会有数据,换成其他结果伪false的表达式也行)
CREATE TABLE copy_表
SELECT id, content FROM 表
WHERE 1=2;

【案例】数据库/表的管理

案例1: 创建表 dept1 , 字段:

id INT(7), name VARCHAR(25)

答案:

create table if not exists dept1(
	id int(7),
	`name` varchar(25)
);

案例2: 将表departments中的数据插入到新表dept2中(该表结构在:mysql基础复习——连接查询(sql99) 中有

答案:

CREATE TABLE IF NOT EXISTS dept2 LIKE departments;
INSERT INTO dept2 SELECT * FROM departments;
# 或者
create table if not exists dept2
select * from departments;

案例3: 创建表emp5 , 字段:

id INT(7), first_name VARCHAR(25), last_name VARCHAR(25), dept_id INT(7)
CREATE TABLE IF NOT EXISTS emp5(
	id INT(7),
	first_name VARCHAR(25),
	last_name VARCHAR(25),
	dept_id INT(7)
);

案例4:将列last_name 的长度增加到50

答案:

ALTER TABLE emp5 MODIFY last_name VARCHAR(50);
DESC emp5;

mysql 新增列到某列的后面 mysql添加新列_字段

案例5:根据表employees 创建employees2

答案:

CREATE TABLE IF NOT EXISTS employees2 LIKE employees;

案例6:删除表emp5

答案:

drop table if exists emp5;

案例7:将表employees2重命名为emp5

答案:

ALTER TABLE employees2 RENAME TO emp5;

案例8:在表dept1和emp5中添加新列test_column INT,并检查所作操作

答案:

alter table dept1 add column test_column int;
ALTER TABLE emp5 ADD COLUMN test_column int;
DESC dept1;

mysql 新增列到某列的后面 mysql添加新列_mysql_02

DESC emp5;

mysql 新增列到某列的后面 mysql添加新列_mysql 新增列到某列的后面_03

案例9:直接删除表emp5中的列 test_column

答案:

ALTER TABLE emp5 DROP COLUMN test_column;
DESC emp5;

mysql 新增列到某列的后面 mysql添加新列_字段名_04