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-常用语句整理/
作者
Fany Full
发布于
2021年6月22日
许可协议