mysql学习笔记3

插入记录 INSERT

1
INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT},...),(...),...

插入记录-范例

1
2
3
4
5
6
7
8
9
10
11
12
13
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,
sex BOOLEAN
);
//插入几条记录
INSERT users VALUES(NULL,"Tom","123",25,1);
INSERT users VALUES(DEFAULT,"Tom","123",25,1);
//写入多条记录
INSERT users VALUES(DEFAULT,"JOHN","123",25,1),(NULL,"Rose",md5("123"),DEFAULT,0);

如果想要id遵守默认的编号 只需要设置该列为NULL或者DEFAULT即可.
如果有字段设置过DEFAULT 那么该列可以添加DEFAULT;

插入记录,使用子查询

1
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...

只能一次性插入一条记录

范例

1
INSERT users SET username="Ben",password="456";

单表更新记录UPDATE

1
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT},[, col_name2={expr2|DEFAULT}]...[WHERE where_condition]

范例

1
UPDATE users set age=age+5;

让users表中age加5.

范例2-更新多列

1
UPDATE users SET age=age-id,sex=0;

指定记录更新

1
UPDATE users SET age=age+10 WHERE id%2=0;

单表删除记录DELETE

1
DELETE FROM tbl_name [WHERE where_condition]

范例

1
DELETE FROM users WHERE id = 5;

删除后再插入一条记录 即使ID号不连续,那么新插入的id是已有的最大id+1

表达式解析

查找记录 SELECT

查找前两列

1
SELECT id,username FROM users;

别名

1
SELECT id AS userID,username AS uname FROM users;

group by 语句对查询结果分组

1
GROUP BY {col_name|position} [ASC|DESC],...]

对分组的结果进行分组

按照性别分组

1
SELECT sex FROM users GROUP BY sex;

having语句设置分组条件

1
SELECT sex,age FROM users GROUP BY sex HAVING count(id);

order by 语句对查询结果进行排序

1
[ORDER BY {col_name|expr|position} [ASC|DESC],...]

范例

1
SELECT * FROM users ORDER BY id DESC;
1
SELECT * FROM users ORDER BY age ASC,id DESC;

如果age遇到了相同的 那么再进行id排序

LIMIT

范例

1
SELECT * FROM users LIMIT 2

返回两条记录

1
SELECT * FROM users LIMIT 3,2 //id 4,5

从3开始向后截取两条记录
3非id,指的是结果集中的第三条语句.
数据库从0开始算,所以3会返回至id为4,5

插入记录

1
2
3
4
CREATE TABLE test1(
id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20)
);

跨表写入数据

1
INSERT test1(username) SELECT username FROM users WHERE age>=10;