MySQL 增删改查——表和数据库
数据库
一、增
CREATE DATABASE [IF NOT EXISTS] 数据库名 CHARACTER SET 字符集;
二、删
DROP DATABASE [IF EXISTS] 数据库名;
三、改
数据库不能改名,所谓的改名都是完全复制。
但是可以改数据库的字符集:
ALTER DATABASE 数据库名 CHARACTER SET 字符集; #gbk、utf8等
四、查
1. 所有的数据库
SHOW DATABASES;
2. 正在使用的数据库
SELECT DATABASE();
# 一个 mysql 中的全局函数
3. 指定库下所有的表
SHOW TABLES FROM 数据库名;
4. 数据库的创建信息
SHOW CREATE DATABASE 数据库名;
5. 指定库下所有的表
SHOW TABLES FROM 数据库名;
表
一、增
需要 CREATE TABLE 权限。
1. 自行创建
CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 数据类型 [约束条件] [默认值],
字段2, 数据类型 [约束条件] [默认值],
字段3, 数据类型 [约束条件] [默认值],
……[表约束条件]
);
# 栗子:
CREATE TABLE dept(
-- int类型,自增
deptno INT(2) AUTO_INCREMENT,
dname VARCHAR(14),
loc VARCHAR(13),
-- 主键
PRIMARY KEY (deptno)
);
2. 通过它表创建
CREATE TABLE [IF NOT EXISTS] 表名
AS SELECT 查询语句;
# 栗子:
CREATE TABLE dept80
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees
WHERE department_id = 80;
通过它表创建空表的方式:
CREATE TABLE emp3 AS SELECT * FROM employees WHERE FALSE;
CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2;
二、删
1. 删除表
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];
2. 截断/清空表
其实应该归类到“改”里的……
TRUNCATE TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];
三、改
0. 表-重命名
# 第一种
RENAME TABLE emp TO myemp;
# 第二种
ALTER table dept RENAME [TO] detail_dept;
1. 字段-增
ALTER TABLE 表名
ADD [COLUMN] 字段名
字段类型 [FIRST|AFTER 字段名];
# 栗子:
ALTER TABLE dept80
ADD job_id varchar(15);
2. 字段-删
ALTER TABLE 表名
DROP [COLUMN] 字段名 ;
# 栗子:
ALTER TABLE dept80
DROP job_id;
3. 字段-改
a. MODIFY - 修改字段数据类型、长度、默认值、位置。
ALTER TABLE 表名
MODIFY [COLUMN] 字段名1
字段类型(长度) [DEFAULT 默认值] [FIRST|AFTER 字段名];
# 栗子:
ALTER TABLE dept80
MODIFY salary
double(9,2) DEFAULT 1000 AFTER job_id;
b. CHANGE - 重命名字段
ALTER TABLE 表名
CHANGE [COLUMN] 列名
新列名 新数据类型;
# 栗子:
ALTER TABLE dept80
CHANGE department_name
dept_name varchar(15);
四、查
1. 表结构
DESCRIBE 表名;
2. 表的创建信息
SHOW CREATE TABLE 表名;

浙公网安备 33010602011771号