(更新中)SQL数据库常用语句汇总

SQL是结构化查询语言的缩写,用来访问和操作数据库系统。

查询语句

  • SELECT 1; 测试数据库是否连接
  • SELECT * FROM <表名> ; 查询一个表的所有行和所有列的数据
  • SELECT * FROM <表名> WHERE <条件表达式> ; 条件查询
    条件表达式中可使用LIKE判断相似,例如name LIKE ‘ab%’,其中%表示任意字符。
  • SELECT 列1, 列2, 列3 FROM …,让结果集仅包含指定列。
    SELECT 列1 别名1, 列2 别名2, 列3 别名3 FROM … 给列起别名。
  • SELECT id, name, gender, score FROM students ORDER BY score DESC; ORDER BY排序,默认升序,DESC降序,ORDER BY后面可以是多列。ORDER BY子句在WHERE子句后面。
  • LIMIT M OFFSET N, 分页查询。例如SELECT id, name, gender, score FROM students ORDER BY score DESC LIMIT 3 OFFSET 0; 表示结果集分页,每页3条记录,获取第1页的记录。上述查询LIMIT 3 OFFSET 0表示,对结果集从0号记录开始,最多取3条。注意SQL记录集的索引从0开始。
  • SELECT COUNT(*) num FROM students; COUNT() 聚合查询,统计有多少条记录, num是别名。
    SELECT COUNT(*) boys FROM students WHERE gender = ‘M’; 可以用WHERE筛选
    (更新中)SQL数据库常用语句汇总
    如果聚合查询的WHERE条件没有匹配到任何行,COUNT()会返回0,而SUM()、AVG()、MAX()和MIN()会返回NULL。
  • SELECT class_id, COUNT(*) num FROM students GROUP BY class_id; 分组聚合,按class_id分组。也可以根据多个列分组。
  • SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
    FROM students s
    INNER JOIN classes c
    ON s.class_id = c.id;
    连接查询,可选:加上WHERE子句、ORDER BY等子句

修改语句

增删改查,即CRUD:Create、Retrieve、Update、Delete。
INSERT:插入新记录;
UPDATE:更新已有记录;
DELETE:删除已有记录。

  • INSERT INTO <表名> (字段1, 字段2, …) VALUES (值1, 值2, …); 可以一次性添加多条记录。注意:字段顺序不必和数据库表的字段顺序一致,但值的顺序必须和字段顺序一致。
  • UPDATE <表名> SET 字段1=值1, 字段2=值2, … WHERE …; 建议最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用UPDATE更新。
  • DELETE FROM <表名> WHERE …; 在执行DELETE语句时也要非常小心,最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用DELETE删除。
  • REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, ‘小明’, ‘F’, 99); 插入或替换

数据库语句

SHOW DATABASES; 列出所有数据库
USE test; 对一个数据库进行操作时,首先将其切换为当前数据库
CREATE DATABASE test; 创建一个新数据库
DROP DATABASE test; 删除一个数据库,慎用!!!

SHOW TABLES; 列出当前数据库的所有表
DESC students; 查看一个表的结构
SHOW CREATE TABLE students; 查看创建表的SQL语句
CREATE TABEL ‘students’ (
‘id’ bigint(20) NOT NULL AUTO_INCREMENT,
‘name’ varchar(100) NOT NULL,
PRIMARY KEY (‘id’)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
创建表
DROP TABLE students; 删除表
ALTER TABLE students ADD COLUMN birth VARCHAR(10) NOT NULL; 修改表
ALTER TABLE students CHANGE COLUMN birth birthday VARCHAR(20) NOT NULL; 修改birth列,例如把列名改为birthday,类型改为VARCHAR(20)。
ALTER TABLE students DROP COLUMN birthday; 删除列

命令行程序mysql实际上是MySQL客户端,真正的MySQL服务器程序是mysqld,在后台运行。

定义数据类型:
(更新中)SQL数据库常用语句汇总
TINYINT(范围在0~255)。各数据库厂商还会支持特定的数据类型,例如JSON。

参考文章:
廖雪峰官网:SQL教程