DML(数据操纵语言)、DQL(查询)

DML包含对数据的增加、修改删除

1、插入数据INSERT INTO

Insert into  表名  (列名) values (值列表);
-----------------
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

2、更新值 UPDATE

Update 表名 set 字段= 新值   [where 条件];
----------------
UPDATE table_name 
SET field1=new-value1, 
field2=new-value2
[WHERE Clause];
-- 如果不指定条件,那么UPDATE将会更新表中所有值

3、删除DELETE

DELETE FROM table_name [WHERE Clause];
-- 如果不指定条件,那么DELETE将会删除表中所有值

DQL

0、语句顺序参照

select [all | distinct] 表达式列表 [as 别名]
          from 表名或者视图名
          [where 条件表达式]
          [group by 列名]
          [having 搜索表达式]
          [order by 列名 [asc | desc]]

1、简单查询SELECT

SELECT * FROM <table_name>;
-- SELECT语句也可单独使用用来调试
SELECT "print_text";
SELECT a*b; 

2、重命名列AS

SELECT <columu_a> AS <columu_b> FROM table_name;

3、限制行数LIMIT

-- LIMIT 子句写在SQL语句的最后即可
-- LIMIT 行数的下标是从0开始
-- 如果只带一个值,那么将返回5行,从第一行开始
LIMIT 5;
-- 如果带两个值,那么前一个个数代表起始行下标,后一个代表行数
LIMIT 0,5;

4、结果去重DISTINCT

DISTINCT直接写在SELECT关键字后面

5、过滤 WHERE

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....;
Select  * from 表名  where  条件  = 某值 and/or  条件2 = 某值 ;

范围条件

BETWEEN 0 AND 5;
NOT BETWEEN 0 AND 5;

匹配

IN
NOT IN

6、聚合函数和分组

深入理解GROUP BY和聚合函数
1.聚合函数的分类
- Count(列名或者*)获取结果集中的行数
- Count(*)不会忽略null,而count(列)会忽略该列的null
- avg(列名) 获取结果集中某列的平均值
- Max(列名) :获取结果集中某列的最大值
- Min(列名)获取结果集中某列的最小值
- Sum(列名)获取结果集中某列的总和

聚合函数的书写位置:SELECT [DISTINCT] 之后

2、分组GROUP BY

SELECT <column_name>, [function(column_name)]
FROM <table_name>
GROUP BY <column_name>;
-- 多列分组
GROUP BY 列1,列2;

3、HAVING 过滤
a、对聚合函数的过滤
b、HAVINGWHERE的区别

1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。
2、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
3、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
转自:https://blog.csdn.net/jdjh1024/article/details/76647866
4、HAVING子句一般写在GROUP BY后面

7、模糊查询

WHERE后面跟LIKE
%:匹配多个字符,包含0个的字符
_:只能匹配一个字符,不包含0个的字符

8、连接查询

内连接:inner join 表名 on 连接条件
外连接:
左外连接:左表 left outer join 右表 on 连接条件
右外连接:左表 right outer join 右表 on 连接条件
自连接:自己和自己表查询

9、子查询

select语句可以嵌套在其他语句中(crud),这些嵌套的select语句被称为子查询
in子查询
exists子查询:测试子查询的结果是否为空,为空–>false
比较子查询:> >= < <= <> != = (可以和any 和all 联合使用) !> !<
any:表示满足子查询结果的任何一个。和<、<=搭配,表示小于等于列表中的最大值;而和>、>=配合时表示大于等于列表中的最小值。
all:表示满足子查询结果的所有结果。和<、<=搭配,表示小于等于列表中的最小值;而和>、>=配合时表示大于等于列表中的最大值。

10、联合查询

将多个查询的结果合并到一个结果集中(union not union)
查询1 union(查询2 union 查询3)
排序联合查询结果:order by 放在最后一个查询语句的后面

11、视图

视图–>虚表 便于查询(crud都可以)

它是基于一个表或多个表的逻辑表,视图本身不包含任何数据。可以把视图看成是虚拟的表,只是一个查询语句的结果,它的数据最终是从表中获取的,这些表通常称为源表或基表。

   特点
    使数据简化--->简化在开发中使用复杂sql的冗余
    使数据更加独立-->修改源表结构不会影响应用本身
    增加安全性--->不直接操作源表

创建:

create view 视图名  as 查询语句

删除:

drop view 视图名

猜你喜欢

转载自blog.csdn.net/candy_27/article/details/81535671