分享

资深DBA整理MySQL基础知识之二,SQL语言知道这些就足够了

 xxcc140 2019-11-13

接上一篇内容,不废话直接进入正题

SQL的分类

SQL语言一般分为3种

1,数据定义语言即DDL(Data Definitoin Language):数据库管理系统提供了数据定义语言,定义数据库涉及的各种对象,定义数据的完整性约束,保密限制等约束。

2,数据操作语言即DML(Data Manipulation Language):数据库管理系统提供了操作语言实现对数据的操作。具体的操作就是增(insert )、删(delete)、改(update)、查(select)

3,数据库控制语言即DCL(Data Control Language):数据库管理系统提供了数据控制语言实现随数据库的控制,包含数据完整性控制、数据安全性控制和数据库的回复等。

下面我们主要介绍DML(数据操作语言)的增删改查

第一,增删改查 之增 insert 语法;

基本语法结构:INSERT INTO 表名(列1,…… 列n) VALUES(值 1,…… 值 n);

表名后面跟的是要插入的列名,VALUES则是列名所对应的值

插入数据的注意点:

【1】插入的表名和值无论从类型,个数,位置都要完全匹配

【2】自动编号类型最好不在出现在insert语句中

【3】插入字段为空时: 文本类型可以用 ’ ’ 或null来表示为空, 其他类型都用null

【4】时间类型也可以认为是一个特殊的文本型,即可以 加’ ’,时间类型有数据时按文本型走 ’ ’,

如果表示空 间用null

第二,增删改查 之改 update

基本语法结构:update 表名 set列1 = 新值1, 列2 = 新值2, where expr;

注意:加粗的部分是在update使用时必须存在的。尤其是where条件,要修改那一行必须写明,不然会造成大面积的破坏数据。

第三,增删改查 之改 delete

基本语法结构:Delete from 表名 [where 条件]。这个和update一样需要注意加where条件

小扩展

truncate book和delete from book是一个结果? truncate和delete 之间区别?

这个问题面试会经常问到

相同点:都是删除数据,不删除结构

不同点: delete from table 删除所有数据 Truncate table 也是删除所有数据,但它会将 auto_increment调整为0,实际上是从1开始 不能加where。

第四,增删改查 之改 select

select是数据库中用的做多的操作方式,也是数据库中的重点;

语法结构:Select 字段名称1,字段名称2,... from 表名 where条件以及 [五大子句]等等。

我们需要从数据库中差一张表时一般用:“Select * from 表名” 来查看表的全部数据

其中’ * ‘ 是通配符,代表所有字段名称。

当需求比较高,更加细化的时候。我们就需要在'Select * from 表名'后面加上where条件以及 [五大子句]。

select 5种子句介绍

1,Where 条件查询。 2,group by 分组。 3,having 筛选。 4,order by 排序 。5,limit 限制结果条数

1,where expression

用法:expression为真,则该行取出

运用场合 各种条件查询场合,如按学号查学生,按价格查商品,按发布时间 查新闻等

where后面需要更一些比较运算符,如下图

资深DBA整理MySQL基础知识之二,SQL语言知道这些就足够了

除了比较运算符,有时候需要用到:like 模糊匹配 ,% 通配任意字符, _ 通配单一字符等词来限制。

例如:

资深DBA整理MySQL基础知识之二,SQL语言知道这些就足够了

2,group by 分组

在介绍group by前必须要先说说,统计函数;因为这两者是不可分割的。

常见的统计函数有

max : 求最大 。min : 求最小 。sum : 求总和 。avg : 求平均。 count:求总行数

只要SQL出现统计函数,就必须有group by的出现。

group by 的作用:把行按 【字段】 分组

语法:group by col1,col2,...colN

注意:最后一个分组字段不加逗号,否则报错

运用场合 常见于统计场合,如按栏目计算帖子数, · 统计每个人的平均成绩等。

例如:

要求:从ecs_goods表中列出各栏目最贵的价格

资深DBA整理MySQL基础知识之二,SQL语言知道这些就足够了

3,having 筛选

having的用法和where类似(只是类似),语法结构一样

区别:where针对表中的列发挥作用,查询数据,执行在select之前。having是针对已经查出来的结果进行再次的筛选,执行在select之后。

(1)例如:从ecs_goods表查询比市场价省钱200元以上的商品及该商品所省的钱。

资深DBA整理MySQL基础知识之二,SQL语言知道这些就足够了

(2)例如:

设有成绩表stu 如下:

姓名 科目 分数

张三 数学 90

张三 语文 50

张三 地理 40

李四 语文 55

李四 政治 45

王五 政治 30

要求:试查询两门及两门以上不及格同学的平均分

结果如下:

select name ,avg(score) as ping,sum(score<60) as jg from stu group by having jg>2;

资深DBA整理MySQL基础知识之二,SQL语言知道这些就足够了

4,order by排序

Order by 排序功能 · 按一个或多个字段对查询结果进行排序

语法: order by 字段名称 desc / asc

其中desc降序 asc为降序

知识点的运用场合描述 各种排序场合,如新闻按点击量排序, 商品按价格排序等

默认排序:升续排列

Order by 排序功能 · 按一个或多个字段对查询结果进行排序

5,limit 限制条数

Limit 限制条数 · limit [offset,] N,限制结果取N条

用法: limit [偏移量,],取出条目

知识点的运用场合描述 分页应用中最为典型,如第1页取1-20条,第2页取21-40条

Limit 从第几条开始,列出几条记录 ,0代表第一条,1代表第二条

例如:列出前4条

资深DBA整理MySQL基础知识之二,SQL语言知道这些就足够了

以上5种子句是SQL中最常用到的,一定要熟练的掌握,学会在各种需求中灵活应用。

未完待续......

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多