Bootstrap

MySQL的常用增删查改语句以及执行顺序

MySQL执行顺序

  1. from组装来自不同数据源的数据
  2. where指定条件对记录进行筛选
  3. group by将数据划分为多个分组
  4. 使用聚合函数进行计算
  5. 使用having筛选分组
  6. select字段
  7. order by对结果进行排序
  8. limit指定返回的数据条数

一.基本的增删查改

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
INSERT INTO 表名 VALUES (值1, 值2, ...);
//添加数据

UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
//修改数据

DELETE FROM 表名 [ WHERE 条件 ] ;
//删除数据

SELECT DISTINCT 字段列表 FROM 表名;
// 去除重复记录
SELECT * FROM teachers WHERE country IN ('CN', 'UK');
SELECT * FROM teachers WHERE country NOT IN ('CN', 'UK');
SELECT * FROM teachers WHERE age between 20 and 40;
//查询多个条件
SELECT * FROM terchers WHERE country like ' '
//模糊查询 %代替多个字符 _代替一个字符
SELECT * from emp order by age asc , entrydate desc;
//升降序排序,ASC升序,DESC降序
SELECT 字段 FROM 表名 LIMIT 起始索引, 查询记录数;
//查询多少条的数据

二.基本的函数

SELECT AVG(字段) AS(重命名) FROM ();
SELECT MAX(字段) AS(重命名) FROM ();
SELECT SUM(字段) AS(重命名) FROM ();
SELECT COUNT(字段) AS(重命名) FROM ();    //统计数量
SELECT ROUND(字段,保留的位数) FROM ();   //将函数值四舍五入
SELECT ISNULL(字段) FROM ();             //判断字段是否为NULL,空为1,不空为0
SELECT ISFULL(字段,n) FROM ();          //空为n,不空返回对应内容

SELECT NOW(精确的秒位数)/CURDATE()/CURTIME AS (重命名) //获取时间
INSERT INTO (表名) VALUES(NOW(精确的秒位数)/CURDATE()/CURTIME AS (重命名));//表中插入时间
SELECT DATA(字段) as '日期'  TIME(字段) as '时间' FROM(); //提取已有时间的日期和具体时间
SELECT DATE_FORMAT(字段,'%Y-%m-%d %H:%i:%s') as (重命名) FROM();            
//得到表创建的 %Y 年份,%m 月份,%d 日期,%w 表示星期 His为时分秒.

三.约束

create table 表名(
    字段 int not null,
    primary key(字段)
);   //创建表时 给字段添加唯一主键约束
alter table 表名 add primary key(字段); //给已创建的表字段添加主键约束
alter table 表名 drop primary key; //给已创建的表 去除主键约束
---------------------------------
外键:就是表1某列和表2某列 一样但是字段名不一样。
主键:也称“主键约束”,其值能唯一地标识表中的每一行。
CREATE TABLE 外键表(
    字段 int NOT NULL,
    primary key (字段),
    foreign key (字段1) REFERENCES 主键表(字段2)
    //创建表格时创建外键约束
);   
alter table 表1
add foreign key(字段1)
    references 表2(字段2);   //添加外键约束
---------------------------------
//检查约束
create table 表1(
    字段 定义,
    check(字段的约束 and 字段的约束)
);                        
alter table 表1 add check(字段的约束); //表已存在,添加约束
alter table 表1 drop check;
---------------------------------
//默认约束
create table 表1(
    字段 int default(默认值)
);   
alter table 表1 alter 字段 set default;
alter table 表1 alter 字段 drop default;

四.多表联结

内连接:取两个表的交集,返回的结果就是连接的两张表中都满足条件的部分。
select 字段
FROM table1 t1
JOIN table2 t2
ON table1.common_field = table2.common_field
where 条件;
-----------------------------------------
外连接:左外连接,右外连接,全外连接
SELECT 字段1,字段2 ...
FROM table1
LEFT | RIGHT | FULL  (OUTER) JOIN table2
ON 条件
where 条件;

五.分组查询

SELECT 字段 FROM 表名  WHERE 条件  GROUP BY 字段;
SELECT 字段 FROM 表名  WHERE 条件  GROUP BY 字段 having 条件;
//having是在分组之后,where是在分组之前
例子:查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
select workaddress, count(*) address_count 
from emp 
where age < 45 group by workaddress 
having address_count >= 3;

;