系列文章目录
文章目录
- 系列文章目录
- 一、数据库的增删改查
- 二、表的增删改查
- 三、记录的增删改查
一、数据库的增删改查
- 增:
- 新建数据库:
CREATE DATABASE 数据库名;
- 可选,指定编码:
CREATE DATABASE 数据库名 CHARSET='utf8';
- 查:
- 查看所有数据库:
SHOW DATABASES; # 注意复数形式
在MySQL中,使用#号作为一行注释的开头。
- 查看单个数据库的创建语句:
SHOW CREATE DATABASE 数据库名;
- 查看当前所在的库的名字:
SELECT DATABASE();
- 改:
- 修改数据库编码:
ALTER DATABASE 数据库名 CHARSET='utf8mb4';
- 打开指定数据库:
USE 数据库名;
- 删:
- 删除数据库:
DROP DATABASE 数据库名;
二、表的增删改查
在操作数据库中的表之前,需要先打开目标数据库。
- 增:
- 新建表:
CREATE TABLE 表名(
字段名 字段类型(宽度) 若干约束条件,
# 字段名为name,类型为CHAR,宽度为10,约束条件为该字段的值不能为空
name CHAR(10) NOT NULL,
# 字段名为age,类型为TINYINT,默认值为18
age TINYINT DEFAULT 18,
……
);
几点说明:
- 在数据超过宽度情况下,如果未开启严格模式(5.7以下默认不开启),会将多出的字符截掉;但开启了严格模式(5.7及以上默认开启),则会立刻报错。严格模式的开启和关闭会在后面讲到。
- 同一张表中,字段的名称不能重复。
- 括号内,字段名和字段类型是必须的,其他是可选的。
- 最后一行不能有逗号。
- 查:
- 查看所有表:
SHOW TABLES; # 注意复数形式
- 查看单张表的创建语句:
SHOW CREATE TABLE 表名;
- 查看表的字段详情:
DESCRIBE 表名;
# 简写形式
DESC 表名;
- 改:
- 修改表名:
ALTER TABLE 旧表名 RENAME 新表名;
- 修改字段:
ALTER TABLE 表名 MODIFY 字段名 字段类型(宽度) 约束条件;
- 修改字段和字段名:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 字段类型(宽度) 约束条件;
- 在最后面插入字段:
ALTER TABLE 表名 ADD 字段名 字段类型(宽度) 约束条件;
- 在最前面插入字段:
ALTER TABLE 表名 ADD 字段名 字段类型(宽度) 约束条件 FIRST;
- 在字段XXX后面插入字段:
ALTER TABLE 表名 ADD 字段名 字段类型(宽度) 约束条件 AFTER 字段XXX;
- 删:
- 删除表:
DROP TABLE 表名;
- 删除字段:
ALTER TABLE 表名 DROP 字段名;
- 清空表并重置主键:
TRUNCATE 表名;
- 免去打开数据库的方法:
可以使用数据库名.表名
的方法,直接指定表,免去USE 数据库名
的步骤。
三、记录的增删改查
- 增:
- 按照创建表时,定义的字段顺序插入值:
字段值的类型要与字段约定的类型一致。
INSERT INTO 表名 VALUES(值, 值……);
- 按照指定的字段插入值:
INSERT INTO 表名(字段,字段……) VALUES(值, 值……);
- 查:
在MySQL中,查询出来的结果也是一张表,被临时存放在内存中!
- 查询所有数据:
SELECT * FROM 表名;
*
代表匹配多个任意字符,即任意的字段名。
- 查询指定字段:
SELECT 字段A,字段B…… FROM 表名;
可以在数字类型的字段后面使用数学运算符,直接对每条记录进行运算:
SELECT 字段A*10,字段B+3…… FROM 表名;
- 保存查询结果到新表:
CREATE TABLE 新表 SELECT 字段…… FROM 旧表 条件……;
此方法,只能保存查询结果的结构和部分数据,不能复制主键和外键。
- 改:
- 修改单个值:
UPDATE 表名 SET 属性名='新的值' WHERE 条件;
WHERE
的用法比较复杂,会在后面讲到。
- 删:
- 删除一条记录:
DELETE FROM 表名 WHERE 条件;
- 清空整张表:
DELETE FROM 表名;
数据库中,最常用的操作就是各种查询,因此查询语句是最常用的。