与MYSQL的零距离接触(笔记四) 慕课网
操作数据表中的记录
插入记录
INSERT [INTO] tb1_name [(col_name)] {VALUES|VALUE} ({expr | DEFAULT},...),(...),...
net start mysql
mysql -uroot -p123456
use test;
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(NULL,'John','123',25,1);
SELECT * FROM users;
INSERT users VALUES(DEFAULT,'John','123456789',25,1);
INSERT users VALUES(NULL,'John','123',DEFAULT,1);
INSERT users VALUES(DEFAULT,'John','123456789',25*5/25-1,1);
INSERT users VALUES(DEFAULT,'Tom','12345',3*7-5,1),(NULL,'Rose',md5('123'),DEFAULT,0);
第二种:
INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},...
说明:和第一张方式的区别在于,此方法可以使用子查询(SubQuery)
INSERT users SET username='Ben',password='456';
第一种方法可以插入多条记录。第二种一次只能插入一条记录
第三种:
INSERT [INTO] tb1_name [(col_name,...)] SELECT ...
说明:此方法可以查询结果插入到指定数据表。
CREATE TABLE test(
id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20)
);
INSERT test(username) SELECT username FROM users WHERE age>=30;
UPDATE
更新记录(单表更新)
UPDATE[LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT}
[,col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
UPDATE users set age= age +5; 修改一条
UPDATE users set age = age - id,sex =0; 修改两条
UPDATE users set age = age +10 WHERE id % 2 = 0; 加入条件
DELETE
删除记录(单表删除)
DELETE FROM tb1_name [WHERE where_condition]
DELETE FROM users WHERE id = 6; 删除id为6 的记录
INSERT users VALUES(NULL,'T111','123',33,1);
删除记录后 继续创建记录,将会以已有的最大id+1的形式创建id记录
SELECT
查找记录
SELECT select——expr [.select——expr ...]
[
FROM table_reference
[WHERE where_condition]
[GROUP BY {col_name |position}[ASC|DESC],...]
[HAVING where_condition]
[ORDER BY {col_name|expr|position}[ASC|DESC],...]
[LIMIT {[offset,] row_count |row_count OFFSET offset}]
]
查询表达式
每个表达式表示想要的一列,必须有至少一个。
每个列之间以英文逗号分隔。
星号(*) 表示所有列。tb1_name.*可以表示命名表的所有列。
查询表示式可以使用[AS] alias_name 为其赋予别名。
别名可用于GROUP BY,ORDER BY 或HAVING子句。
SELECT id,username FROM users;
SELECT username,id FROM users; 查询表达式的顺序将影响结果的顺序
SELECT users.username,users.id FROM users; 确认指定的数据表查询
SELECT id FROM users; 单列查询
SELECT id AS uesrid,username AS uname FROM users; 查询并用AS赋予别名
WHERE
条件表达式
对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。
在WHERE表达式中,可以使用MYSQL支持的函数或运算符。
GROUP BY
查询结果分组
[GROUP BY {col_name|position}[ASC|DESC],...]
SELECT sex FROM users GROUP BY sex;
SELECT sex FROM users GROUP BY 1;
HAVING
分组条件
[HAVING where_coundition]
SELECT sex,age FROM users GROUP BY 1 HAVING age > 30;
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 3;
ORDER BY
对查询结果进行排序
[ORDER BY {col_name|expr|position}[ASC|DESC],...]
SELECT * FROM users ORDER BY id DESC; 倒序排列
SELECT * FROM users ORDER BY age,id DESC;
LIMIT
限制查询结果返回的数量
[LIMIT {[offset,]row_count|row_count OFFSET offset}]
SELECT * FROM users LIMIT 2; 返还前面两条数据
SELECT * FROM users LIMIT 2,2; 返还从第三条开始 返还2条记录