库的管理
# 创建数据库
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;
案例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;
DESC emp5;
案例9:直接删除表emp5中的列 test_column
答案:
ALTER TABLE emp5 DROP COLUMN test_column;
DESC emp5;