(三十六)表操作

1.插入数据----INSERT <INTO>

  1INSERT  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}';