一、表的管理
1、表的创建
语法格式:
create table 【if not exists】 表名(
列名 列的类型【(长度) 列的约束】,
列名 列的类型【(长度) 列的约束】
...
列的类型【(长度) 列的约束】
);
创建表必须具备:
① create table 权限;
② 存储空间;
③ 必须指定表名;
④ 必须知道列名,数据类型和长度或约束;
2、表的修改
语法格式:
alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;
① 修改列名(column可以省略)
ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME;
② 修改列的类型或约束或默认值
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;
③ 添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;
④ 删除列
ALTER TABLE book DROP COLUMN annual;
⑤ 修改表名(必须是对象的拥有者)
ALTER TABLE author RENAME TO book_author;
⑥ 修改表的字符集
alter table 表名 character set 字符集名称;
3、表的删除
语法格式:
drop table 【IF EXISTS】 表名;
一般在创建表/库的之前,都会先进行删除,再进行创建:
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 表名();
表的删除:
① 数据和结构都被删除;
② 所有正在运行的相关事务被提交;
③ 所有相关索引被删除;
④ DROP Table 语句不能回滚;
4、查看表
查询某个数据库中所有的表名称:
show tables;
查看表结构:
DESC 表名
查看表全部数据:
select * from 表名;
查看创建表的 SQL 语句:
show create table 表名;
5、复制表
语法格式:
CREATE TABLE 新表名 LIKE 表名;
① 复制表结构,不会有数据
CREATE TABLE copy_book LIKE book;
② 复制表结构 + 表数据
CREATE TABLE copy_book2
SELECT * FROM book;
③ 复制表结构 + 部分数据,部分列
CREATE TABLE copy_book3
SELECT id, bname
FROM book
WHERE id = 1;
④ 仅仅复制某些字段(列)不复制数据
方式一:
CREATE TABLE copy_book4
SELECT id, bname
FROM book
WHERE 1 = 2;
方式二:
CREATE TABLE copy_book4
SELECT id, bname
FROM book
WHERE 0; #0代表 false
二、案例
1、创建表
表 book:
CREATE TABLE book (
id INT, #编号
bname VARCHAR(20), #图书名
price DOUBLE, #价格
author INT, #作者编号
publishDate DATETIME #出版日期
);
表:author
CREATE TABLE author (
id INT,
au_name VARCHAR(20),
nation VARCHAR(10)
);
2、将表departments中的数据插入新表dept2中
CREATE TABLE dept2
SELECT department_id,department_name
FROM myemployees.departments;
3、将列Last_name的长度增加到50
ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(50);
4、根据表employees创建employees2
CREATE TABLE employees2 LIKE myemployees.employees;
5、将表employees2重命名为emp5
ALTER TABLE employees2 RENAME TO emp5;
6、在表emp5中添加新列test_column
ALTER TABLE emp5 ADD COLUMN test_column INT;
7、直接删除表emp5中的列 dept_id
ALTER TABLE emp5 DROP COLUMN test_column;