MySQL 常用语句整理
一、数据库
1.1、创建数据库
CREATE DATABASE 数据库名称;
1.2、删除数据库
DROP DATABASE 数据库名;
1.3、选择数据库
USE 数据库名;
二、数据表
2.1、创建数据表
格式一:
create table 表名(
列名, 数据类型
);
格式二:
CREATE TABLE 表名 (
属性名 数据类型 [完整约束条件],
属性名 数据类型 [完整约束条件],
...
...
属性名 数据类型 [完整约束条件]
);
示例 01
CREATE TABLE test01 (
post_id INT AUTO_INCREMENT,
title VARCHAR(100) NOT NULL DEFAULT '标题',
author VARCHAR(40) NOT NULL DEFAULT '用户名',
PRIMARY KEY (post_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
示例 02(注一)
CREATE TABLE `test01` (
`post_id` int NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL DEFAULT '标题',
`author` varchar(40) NOT NULL DEFAULT '用户名',
PRIMARY KEY (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这里的主键都是最后才指定的,另一种写法是在定义字段的时候指定,示例见文末的大示例。
关于建表所需的完整约束条件可以参考下面的表
约束条件 | 说明 |
---|---|
PRIMARY KEY | 标识该属性为该表的主键,可以是唯一的标识对应的元组 |
FOREIGN KEY | 标识该属性为该表的外键,是与之联系某表的主键 |
NOT NULL(注二) | 标识该属性不能为空 |
UNIQUE | 标识该属性的值是唯一的 |
AUTO_INCREMENT | 标识该属性的值是自动增加,这是 MySQL 的 SQL 语句的特色 |
DEFAULT | 为该属性设置默认值 |
2.2、删除表
DROP TABLE 表名;
2.3、插入数据
INSERT INTO table_name
( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
这里要注意反引号和单引号的使用(双引号的用法和单引号类似,官方建议使用单引号),
- 一般表名和列名要使用反引号。
- 一般字符串类型要使用单引号。
- DATE 和 DATATIME 等时间日期类型也建议使用单引号。
- 其他数据,如 INT 类型不使用引号。
2.4、删除数据
DELETE FROM table_name [WHERE Clause];
三、注释的写法
# 注释样例1
/* 注释样例2 */
-- 注释样例3。注意,这种形式的注释,'--' 后面一定要加一个空格
四、一份示例
CREATE TABLE tb_stu(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(16) NOT NULL,
age INT,
stuno CHAR(12),
tel CHAR(11)
);
# 插入语句第一种写法
INSERT INTO tb_stu(name, age, stuno) VALUES('张醒言', 20, '20190001');
# 插入语句第二种写法
INSERT INTO tb_stu(id, name, age, stuno, tel) VALUES(null, '琼彤', 20, '20190002', '12841283428'); # sql 语句插入为 null,如果属性是自增的,那么,数据库在插入时会自动插入上一个属性值的增一的值
# 插入语句第三种写法
INSERT INTO tb_stu VALUES(null, '雪宜', 20, '20190003', '12841283428');
INSERT INTO tb_stu
VALUES
(null, '盈掬', 20, '20190003', '12841283428'),
(null, '伯玉', 20, '20190003', '12841283428');
# 删除语句
DELETE FROM tb_stu WHERE id = 5;
# 删除 tel 为空的条目
DELETE FROM tb_stu WHERE tel IS NULL;
# 更新语句
UPDATE tb_stu SET age = 28;
UPDATE tb_stu SET age = 26, stuno = '201912206'
WHERE id = 4;
UPDATE tb_stu SET name = '琼肜'
WHERE id = 2;
# 查询语句
SELECT * FROM tb_stu;
SELECT * FROM tb_stu WHERE age BETWEEN 26 AND 28;
SELECT * FROM tb_stu WHERE age BETWEEN 26 AND 27;
SELECT * FROM tb_stu WHERE age = 28 AND tel = '12841283428';
SELECT * FROM tb_stu WHERE age = 28 OR tel = '12841283428';
# 表示别名的 AS 可以省略,一般使用空格即可
SELECT id AS '主键', name '姓名', stuno '学号' FROM tb_stu;
SELECT id AS '主键', name '姓名', stuno '学号', (age - 10) AS '年龄' FROM tb_stu;
# distinct 关键字,表示消除重复的行
SELECT DISTINCT age FROM tb_stu;
注释
注一:这个是用 show create table test01;
的运行结果中的创建 MySQL
自己生成的表创建语句,感觉应该会比较官方。所以,表名和属性名字段也是还是用反引号给包裹起来的。
注二:关于 NOT NULL,有些人认为 MySQL 字段属性应该尽量设置为 NOT NULL。
MySQL 常用语句整理
http://fanyfull.github.io/2021/06/22/MySQL-常用语句整理/