1.插入数据----INSERT <INTO>
(1)INSERT INTO 表名(字段1,字段2,....) VALUES(值1,值2,....);
按照指定的字段插入数据,值要与前面的字段一一对应。
(2)INSERT INTO 表名 VALUES(值1,值2,值3,....值n);
前面不知地你那个字段,那么后面就要按照表中字段依次插入数据。
(3)插入多条数据
INSERT INTO 表名 VALUES
(值1,值2,值3,....,值n),
(值1,值2,值3,....,值n),
(值1,值2,值3,....,值n),
(值1,值2,值3,....,值n);
(4)插入查询结果
INSERT INTO 表1 (字段1,字段2,字段3,....,字段n)
SELECT T字段1,字段2,字段3,....,字段n FROM 表2 WHERE........;
2.更新(修改)数据-----UPDATE
UPDATE 表 SET 字段1=值1,
字段2=值2
WHERE 条件;
3.删除数据----DELETE
(1) DELETE FROM 表 WHERE 条件;
#根据条件删除某一条记录
(2) DELETE FROM 表 ;
#删除整个表中数据,但是会保留下id记录,下次再插入数据时,会从原来的id基础上继续添加。
(3) DROP 表;
删除掉全部的数据与(2)中的删除不一样,这个会删除掉所有的数据,下次再插入数据时,id会从1开始。
4.查询
from :找到表:from
where:拿着where指定的约束条件,去文件/表中取出一条条记录
group by:将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
having:将分组的结果进行having过滤
select:执行select
distinct:去重
order by:将结果按条件排序:order by
limit:限制结果的显示条数
SELECT distinct 字段1,字段2... FROM 库名.表名 #from后面是说从库的某个表中去找数据,mysql会去找到这个库对应的文件夹下去找到你表名对应的那个数据文件,找不到就直接报错了,找到了就继续后面的操作 WHERE 条件 #从表中找符合条件的数据记录,where后面跟的是你的查询条件
GROUP BY field(字段) #分组
HAVING 筛选 #过滤,过滤之后执行select后面的字段筛选,就是说我要确定一下需要哪个字段的数据,你查询的字段数据进行去重,然后在进行下面的操作
ORDER BY field(字段) #将结果按照后面的字段进行排序
LIMIT 限制条数 #将最后的结果加一个限制条数,就是说我要过滤或者说限制查询出来
5.WHERE约束
(1) 比较运算符: > 、<、>=、<=、<>、!=。
(2) between 值1 and 值2: 取值1和值2范围内的值。
(3) in (值1,值2,值3,....,值n)
(4) like ‘xxx%’:%可以放在结尾,也可以放在开始,表示任意多的字符;
like ’x_’:一个下划线代表一个字符。
(5) 逻辑运算符:and or not。
6.分组查询:GROUP BY
(1)分组发生在where之后,是基于where之后得到的记录而进行的。
(2)将所有记录按照某个相同字段进行归类。
(3)分组是为了来统计一些数据或者进行一些计算。
(4)xxxxxx GROUP BY 字段;
7.聚合函数
假设employee是职工表,里面有字段depart_id等。
SELECT COUNT(*) FROM employee; #count是统计个数用的
SELECT COUNT(*) FROM employee WHERE depart_id=1; #后面跟where条件的意思是统计一下满足depart_id=1这个的所有记录的个数
SELECT MAX(salary) FROM employee; #max()统计分组后每组的最大值,这里没有写group by,那么就是统计整个表中所有记录中薪资最大的,薪资的值
SELECT MIN(salary) FROM employee;
SELECT AVG(salary) FROM employee;
SELECT SUM(salary) FROM employee;
SELECT SUM(salary) FROM employee WHERE depart_id=3;
8.HAVING过滤
having的语法格式和where是一模一样的,只不过having是在分组之后进行的进一步的过滤,where不能使用聚合函数,having是可以使用聚合函数的
#!!!执行优先级从高到低:where > group by > having
#1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
#2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,having是可以使用聚合函数
9.去重
将查询的结果进行去重:select distinct post from employee; 注意distinct去重要写在查询字段的前面,不然会报错。
10.OBDER BY
SELECT * FROM employee ORDER BY salary; #默认是升序排列
SELECT * FROM employee ORDER BY salary ASC; #升序
SELECT * FROM employee ORDER BY salary DESC; #降序
11.使用正则表达式查询
#之前我们用like做模糊匹配,只有%和_,局限性比较强,所以现在可以考虑用正则。
SELECT * FROM employee WHERE name REGEXP '^ale';
SELECT * FROM employee WHERE name REGEXP 'on$';
SELECT * FROM employee WHERE name REGEXP 'm{2}';