mysql语句执行顺序(mysql数据库常用语句)

前言面试过程中SQL语句不知道怎么写,一看到SQL语句就头疼?都说MySQL只有增删改查,怎么四个字就这么难?增删改还比较容易掌握,这个掌握怎么用这么多形式呢,我该如何入手呢?大公司一聊到数据库就是索引优化、分库分表,都是什么鬼?单机数据库已

前言

面试过程中 SQL 语句不知道怎么写,一看到SQL语句就头疼?都说 MySQL 只有增删改查,怎么四个字就这么难?增删改还比较容易掌握,这个掌握怎么用这么多形式呢,我该如何入手呢?大公司一聊到数据库就是索引优化、分库分表,都是什么鬼?单机数据库已经优化到极致,怎么还能做到横向扩展(主从、读写、高可用等等)呢?这些都学会了,那面试怎么过?

mysql语句执行顺序(mysql数据库常用语句)

准备两个表:

mysql -uroot -p
show databases;

#表1
create database plane;
use plane;
create table destination (
region char(20),
place_name char(20));

insert into destination values(\'southwest\',\'chengdu\');
insert into destination values(\'north China\',\'beijing\');
insert into destination values(\'southwest\',\'kunming\');
insert into destination values(\'north China\',\'tianjin\');
select * from destination;

#表2
create table info (
place_name char(20),
sales int(10),
date char(10));

insert into info values(\'chengdu\',\'350\',\'2021-02-10\');
insert into info values(\'beijing\',\'294\',\'2021-02-10\');
insert into info values(\'kunming\',\'330\',\'2021-02-10\');
insert into info values(\'beijing\',\'392\',\'2021-02-16\');
select * from info;

mysql语句执行顺序(mysql数据库常用语句)

一、MySQL高级语句

1、SELECT——显示表格中一个或数个栏位的所有资料

语法:SELECT \"栏位\" FROM \"表名\";
例:
select place_name,sales from info;

mysql语句执行顺序(mysql数据库常用语句)

2、WHERE——有条件查询

语法:SELECT \"栏位\" FROM \"表名\" WHERE \"条件\";
例:
select place_name from info where sales > 300;

mysql语句执行顺序(mysql数据库常用语句)

MySQL学习笔记+面试真题+思维导图:关注+转发 私信【MySQL】获取!

3、AND|OR——且|或

语法:SELECT \"栏位\" FROM \"表名\" WHERE \"条件1\" {[AND|OR] \"条件2\"}+ ;
例:
select place_name from info where sales > 350 or sales < 300;
select place_name from info where sales > 300 and sales < 350;

mysql语句执行顺序(mysql数据库常用语句)

4、BETWEEN——显示两个值范围内的资料

语法:SELECT \"栏位\" FROM \"表名\" WHERE \"栏位\" BETWEEN \'值1\' AND \'值2\';
例:
select * from info where sales between \'300\' and \'350\';

mysql语句执行顺序(mysql数据库常用语句)

5、通配符

% :百分号表示零个、一个或多个字符
_ :下划线表示单个字符
例:
\'A_Z\':所有以 \'A\' 起头,另一个任何值的字符,且以 \'Z\' 为结尾的字符串。例如,\'ABZ\' 和 \'A2Z\' 都符合这一个模式,而 \'AKKZ\' 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。
\'ABC%\': 所有以 \'ABC\' 起头的字符串。例如,\'ABCD\' 和 \'ABCABC\' 都符合这个模式。
\'%XYZ\': 所有以 \'XYZ\' 结尾的字符串。例如,\'WXYZ\' 和 \'ZZXYZ\' 都符合这个模式。
\'%AN%\': 所有含有 \'AN\'这个模式的字符串。例如,\'ANGELES\' 和 \'FRANCISCO\' 都符合这个模式。
\'_AN%\':所有第二个字母为 \'A\' 和第三个字母为 \'N\' 的字符串。例如,\'SAN FRANCISCO\' 符合这个模式,而 \'LOS ANGELES\' 则不符合这个模式。

6、ORDER BY——按关键字排序

语法:SELECT \"栏位\" FROM \"表名\" [WHERE \"条件\"] ORDER BY \"栏位\" [ASC, DESC];
#ASC 是按照升序进行排序的,是默认的排序方式。
#DESC 是按降序方式进行排序。
例:
select place_name,sales,date from info order by sales;
select place_name,sales,date from info order by sales asc;
select place_name,sales,date from info order by sales desc;

mysql语句执行顺序(mysql数据库常用语句)

7、数学函数

abs(x) 返回 x 的绝对值
rand() 返回 0 到 1 的随机数
mod(x,y) 返回 x 除以 y 以后的余数
power(x,y) 返回 x 的 y 次方
round(x) 返回离 x 最近的整数
round(x,y) 保留 x 的 y 位小数四舍五入后的值
sqrt(x) 返回 x 的平方根
truncate(x,y) 返回数字 x 截断为 y 位小数的值
ceil(x) 返回大于或等于 x 的最小整数
floor(x) 返回小于或等于 x 的最大整数
greatest(x1,x2…) 返回集合中最大的值
least(x1,x2…) 返回集合中最小的值

例:SELECT abs(-1), rand(), mod(5,3), power(2,3), round(1.89);

8、聚合函数

avg() 返回指定列的平均值
count() 返回指定列中非 NULL 值的个数
min() 返回指定列的最小值
max() 返回指定列的最大值
sum(x) 返回指定列的所有值之和

#count(*)包括了所有的列的行数,在统计结果的时候,不会忽略值为NULL
#count(列名)只包括列名那一列的行数,在统计结果的时候,会忽略列值为NULL的行

例:
select avg(sales) from info;

9、GROUP BY——对GROUP BY后面的栏位的查询结果进行汇总分组

通常是结合聚合函数一起使用的。

GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY后面。

语法:SELECT \"栏位1\", SUM(\"栏位2\") FROM \"表名\" GROUP BY \"栏位1\";
例:
select place_name,sum(sales) from info group by place_name order by sum(sales);

mysql语句执行顺序(mysql数据库常用语句)

二、连接查询

mysql语句执行顺序(mysql数据库常用语句)

1、inner join(等值相连)

只返回两个表中联结字段相等的行

SELECT * FROM 表1 表1的别名 INNER JOIN 表2 表2的别名 on 表1别名.栏位 = 表2别名.栏位; #这里的栏位名称相同
例:
select * from destination a inner join info b on a.place_name = b.place_name;

mysql语句执行顺序(mysql数据库常用语句)

2、left join(左联接)

返回包括左表中的所有记录和右表中联结字段相等的记录

SELECT * FROM 表1 表1的别名 LEFT JOIN 表2 表2的别名 on 表1别名.栏位 = 表2别名.栏位; #这里的栏位名称相同
例:
select * from destination a left join info b on a.place_name = b.place_name;

mysql语句执行顺序(mysql数据库常用语句)

3、right join(右联接)

返回包括右表中的所有记录和左表中联结字段相等的记录

SELECT * FROM 表1 表1的别名 RIGHT JOIN 表2 表2的别名 on 表1别名.栏位 = 表2别名.栏位; #这里的栏位名称相同
例:
select * from destination a right join info b on a.place_name = b.place_name;

mysql语句执行顺序(mysql数据库常用语句)

三、CREATE VIEW 视图

(1)视图跟表格的不同是,表格中有实际储存资料,而视图是建立在表格之上的一个架构,它本身并不实际储存资料。

(2)临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失。

(3)视图不含有数据,只存储它的定义,它的用途一般可以简化复杂的查询。比如你要对几个表进行连接查询,而且还要进行统计排序等操作,写SQL语句会很麻烦的,用视图将几个表联结起来,然后对这个视图进行查询操作,就和对一个表查询一样,很方便。

语法:CREATE VIEW \"视图表名\" AS \"SELECT 语句\";
例:
create view new_info as select a.region region,a.place_name place_name,b.sales sales from destination a inner join info b on a.place_name = b.place_name;

select * from new_info;
drop view new_info;

mysql语句执行顺序(mysql数据库常用语句)

总结

MySQL学习笔记+面试真题+思维导图:关注+转发 私信【MySQL】获取!

mysql语句执行顺序(mysql数据库常用语句)

mysql语句执行顺序(mysql数据库常用语句)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/16042.html

(0)
nan
上一篇 2021-08-21
下一篇 2021-08-21

相关推荐

  • amd7950x发售价

    amd7950x这款处理器,性能非常的出众,符合大部分小伙伴的期待,那么amd7950x发售价是多少呢?其实这款处理器在京东商场的发售价是5499元。amd7950x发售价答:5499元。 性能出众,性价比很高,感兴趣的朋友可以去看看。amd7950x优势1、是专门为电竞玩家打造的一款处理器。2、拥有16个核心32个线程,游戏的运算速度有很大的提升。3、对于从事影视制作,设计以及3D渲染需求的用户

    2024-02-01
    0
  • PHP如何实现获取与验证密码功能

    在PHP中,可以使用password_hash()函数生成密码的哈希值,并使用password_verify()函数验证密码是否匹配哈希值。以下是一个简单的示例:// 生成密码哈希值$password = 'password123';$hashedPassword = password_hash($password, PASSWORD_DEFAULT);// 验证密码$

    2024-04-29
    0
  • 搜狗推广顾问做什么的(搜狗搜索推广怎么样)

    搜狗推广顾问做什么的,搜狗搜索推广怎么样内容导航:搜狗搜索营销顾问是做什么的,前景怎么样做搜狗推广好还是百度推广好谁能告诉我搜狗网络推广是做什么的搜狗推广服务的主要有哪些服务一、搜狗搜索营销顾问是做什么的,前景怎么样你的回答被采纳后将获得:系统奖励1

    2022-04-23
    0
  • python双引号报错如何解决

    在 Python 中,双引号通常用于表示字符串。如果双引号导致错误,可能是因为双引号中包含了其他双引号,或者双引号未正确配对。解决这个问题的方法有以下几种:使用转义字符:在需要双引号的地方添加反斜杠(\),将双引号转义。例如:”This is a \”quoted\” string”。使用单引号代替双引号:在 Python 中,单引号和双引号都可以用来表示字符串。如果双引号导致问题,可以尝试使用单

    2024-04-16
    0
  • docker两个容器怎么共用一个端口

    Docker 不允许两个容器共享同一个端口,因为在同一台主机中,每个端口只能被一个容器绑定。如果两个容器需要使用同一个端口,可以将其中一个容器映射到另一个容器的端口上,或者使用 Docker 的网络模式来实现容器之间的通信。下面是两种实现方法:端口映射:可以将一个容器的端口映射到另一个容器的端口上。例如,如果容器 A 需要使用端口 8080,而容器 B 也需要使用端口 8080,可以将容器 A

    2024-02-22
    0
  • 数据库drop和delete的区别是什么

    drop和delete是两个不同的数据库操作命令,它们有以下区别:Drop操作是用于删除整个表,包括表的结构和数据;而Delete操作是用于删除表中的数据,但保留表的结构。Drop操作是一个DDL(数据定义语言)命令,它会立即删除表并释放与该表相关的所有资源,包括存储空间;而Delete操作是一个DML(数据操作语言)命令,它只删除表中指定的数据行。Drop操作是一个不可逆的操作,一旦执行就无法恢

    2024-03-04
    0

发表回复

登录后才能评论