记录的操作一般指增删改查,也就是 CRUD, 即:Create(增加), Retrieve(读取), Update(更新), Delete(删除)。
首先建一张 users 表,如下:
mysql> CREATE TABLE users(
-> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20) NOT NULL,
-> password VARCHAR(32) NOT NULL,
-> age TINYINT UNSIGNED NOT NULL DEFAULT 10,
-> gender BOOLEAN
-> );
结构图:
1. 插入记录
关键字:INSERT
语法:
INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT,...}),(...),...
- 第一种方式:
mysql> INSERT users VALUES(NULL, ‘Tom’, ‘123’, 25, 1);
若主键写为 null(可以写入null),则默认从1开始。如图所示: - 主键也可设置为DEFAULT,语句内部也能写表达式,例如:
mysql> INSERT users VALUES(DEFAULT, ‘Jack’, ‘234’, 2*6+7, 2);
若不设置,则用默认值:mysql> INSERT users VALUES(NULL, ‘Jerry’, ‘123’, DEFAULT, 1);
可一次插入多条记录,中间用逗号隔开,例如:
mysql> INSERT users VALUES(default, ‘A’, ‘234’, 29, 2), (DEFAULT, ‘B’, ‘345’, 12, 1); - 第二种方式:使用 SET
例如: mysql> INSERT users SET name=’C’, password=’179’; - 第三种方法:INSERT … SELECT
INSERT [INTO] tbl_name [(col_name,...)] SELECT ...
这里用到了子查询。例如:
mysql> DESC tdb_goods_cates;
mysql> INSERT tdb_goods_cates (cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
效果如图:
2. 更新记录
关键字:UPDATE
有两种方式:
- 更新所有数据
例如,更新所有的 age:mysql> UPDATE users SET age = age + 2;
这样做所有的 age 都更新了。 - 更新指定条件数据:
例如:id 为偶数的 gender 设置为1
mysql> UPDATE users SET gender = 1 WHERE id % 2 = 0;
3. 删除记录
关键字:DELETE
例如,删除 id 为 3 的记录:mysql> DELETE FROM users WHERE id = 3;
注意:此时若再插入数据,则 id 继续增加,而不是补充已删除的那个 id
4. 查询记录
关键字:SELECT
有条件查找:
mysql> SELECT username, id FROM users;
注:查找顺序就是显示的顺序,可以不按表的顺序。可以给查找出来的字段赋予别名,例如: mysql> SELECT username AS name, password AS pw FROM users;
结果如下:
注:AS 可省略,为防止混淆,建议不省略。
4.1 WHERE
条件过滤记录。
4.2 GROUP BY
对查询结果进行分组。
例如:
原表:
分组后:mysql> SELECT gender FROM users GROUP BY gender;
或者:mysql> SELECT gender FROM users GROUP BY 1;
注:1表示出现的第一个字段,这里就是 gender, 了解即可,不建议使用。
4.3 HAVING
HAVING 后要么是聚合函数,要么前面字段中有,否则报错。
例如: mysql> SELECT gender, age FROM users GROUP BY 1 HAVING age > 20;
ORDER BY :对结果进行排序
ASC: 升序(默认)
DESC: 降序
例如:以 id 降序排列 mysql> SELECT * FROM users ORDER BY id DESC;
多个参数排序:
例如,先按 gender升序排列,再按 id 升序排列: mysql> SELECT * FROM users ORDER BY gender, id;
4.4 LIMIT
限制查找到的记录数目。
例如: mysql> SELECT * FROM users LIMIT 2;
例如:
mysql> SELECT * FROM users LIMIT 3,2; 【LIMIT参数:起始位,个数】
注意:这里的编号是从0开始的,跟 id 神马的没关系!
将查询结果写入另一个表中:
原来的表:
新建一个 test 表:
mysql> CREATE TABLE test(
-> id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(20)
-> );
将 users 表按条件查询的内容写入到 test 中:
mysql> INSERT test(name) SELECT username FROM users WHERE age > 30;
结果: