AI智能
改变未来

mysql基础(三)查改删与排序分组

建表

CREATE TABLE aa(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(5) NOT NULL,sex CHAR(2),age TINYINT)

插入数据

INSERT INTO aa VALUES(NULL,\'张三\',\'男\',35),(NULL,\'李四\',\'女\',NULL),(NULL,\'王五\',\'男\',NULL),(NULL,\'李四\',\'男\',28)

查:

查询年龄字段为空:SELECT * FROM aa WHERE age IS  NULL查询名字重复:SELECT DISTINCT NAME FROM aa查询男性的总数:SELECT COUNT(*) FROM aa WHERE sex=\'男\'按性别分组查询每种性别人数:SELECT sex,COUNT(*) FROM aa GROUP BY sex按性别分组并返回性别总数大于2的性别:SELECT sex FROM aa GROUP BY sex HAVING COUNT(sex)>2按年龄升序(默认,可以用ASC指定)、ID降序排序SELECT * FROM aa ORDER BY age,id DESC
查询指定行数(返回行数可以大于实际行数,不会报错):SELECT * FROM aa LIMIT 5第X行开始的x条记录(前面的数字是偏移量,后面的数字是返回行数,偏移基准是从第1行开始):SELECT * FROM aa LIMIT 1,2查询结果同上,不过返回行数在前,偏移量在后:SELECT * FROM aa LIMIT 2 OFFSET 1

当语句中有limit、group by、order by、where、having语句顺序是怎么样的呢?
顺序依次是where、group by、having、order by、limit,也就是判断后再分组,再对分组筛选过滤,过滤后的结果再进行排序,排序后指定返回行。
如下:

性别为男,以ID分组,筛选出年龄不为空的数据进行降序排列,只返回其中的前三行:SELECT * FROM aa WHERE  sex=\'男\' GROUP BY id HAVING age IS NOT NULL ORDER BY NAME DESC LIMIT 0,3

改:

id为2的年龄改为20,语句格式很简单,UPDATE 表名 SET 字段=字段值 条件UPDATE aa SET age=20 WHERE id=2注意update后面是没有from也没有table关键字的。

删:

DELETE FROM  aa WHERE id=3语句格式:DELETE FROM  表名 条件

删除表:
delete删除的是表内容,truncate删除整张表然后重建一张,不同于drop,此两种方式进行删除后表的数据结构还在。理论上truncate速度快于delete,但是在数据量不大的情况下差别不明显,甚至delete测试结果比truncate还快?

DELETE FROM aaTRUNCATE TABLE aa
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » mysql基础(三)查改删与排序分组