首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

01-03章 检索排序数据第1章 了解SQL第2章 检索数据第3章

第2章 检索数据 2.1 SELECT语句 用于从一个或多个表中检索信息,必须指定两条信息,想选择什么,从什么地方选择。...2.3 检索多个SELECT关键字后给出多个列名,列名之间必须逗号分隔。 SELECT prod_id, prod_name, prod_price FROM Products; ?...一个子句通常由一个关键字加上所提供数据组成。 使用 ORDER BY 子句字母顺序排序数据,取一个或多个名字,据此输出进行排序。...屏幕快照 2018-05-25 06.04.04.png 对于上述例子中输出,仅在多个行具有相同 prod_price 值时才产品按prod_name 进行排序。...屏幕快照 2018-05-26 22.12.17.png 分析 DESC 关键字只应用到位于其前面的列名,要在多个进行降序排序,必须每一指定 DESC 关键字。

2.6K10

SQL语句逻辑执行过程和相关语法详解

本文也在多处通过这两个模型来分析为什么标准SQL不允许某些语法,以及为什么MySQL可以支持这些"不标准"语法。 1.2 各数据库系统语句逻辑处理顺序 SELECT语句为例。...例如,使用"group by a"a分组,那么后续select列表中就不能使用b,除非是b进行分组聚合运算。...这一步是将数据复制到内存中相同临时表结构中进行,不过该临时表多出了一个唯一性索引用来做重复消除。 (11).vt10进行排序,排序后表为虚拟表vt11。...因此,sql server和oracle会直接该语句报错。 但是MySQL/mariadb就允许在order by中使用非select_list进行排序。它们是如何"偷奸耍滑"呢?...标准SQL严格遵循select_list是"同时性",引用时候无法像mysql/mariadb一样分先后顺序地检索select_list。

3.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何管理SQL数据库

找到最大值 要按字母顺序查找最大数值或最后一个值,请使用以下MAX函数: SELECT MAX(column) FROM table; 查找最小值 要按字母顺序查找最小数值或第一个值...以下查询语法返回来自column_1和column_2值,并按升序保存column_1中结果进行排序,或者对于字符串值,按字母顺序结果进行排序: SELECT column_1, column..._2 FROM table ORDER BY column_1; 要执行相同操作,但按降序或反向字母顺序排序结果,请使用DESC命令追加查询: SELECT column_1, column_2 FROM...以下语法将计算column_2中匹配值数量,并按升序或字母顺序它们进行分组: SELECT COUNT(column_1), column_2 FROM table GROUP BY column_...2; 要执行相同操作,但按降序或反向字母顺序结果进行分组,请使用DESC命令追加查询: SELECT COUNT(column_1), column_2 FROM table GROUP BY column

5.5K95

SQL | SQL 必知必会笔记 (一 )

关键字不能用作表或者名字 子句(clause) SQL 语句由子句构成,有些子句是必需,有些则是可选 一些规则 多条 SQL 语句必须分号分隔。...SQL 不区分大小写,但一般习惯关键字用大写,列名和表名使用小写。 处理 SQL 语句时,所有空格都会被忽略。一般认为写成多行更容易维护。 选择多个时,一定要在列名之间加上逗号,但最后一个列名不加。...检索出来数据默认是不排序,会以其在底层表中出现顺序显示。 检索数据 SQL 语句是由简单英语单词构成。这些单词称为 关键字,每个 SQL 语句都是由一个或多个关键字构成。...按列位置排序 除了能用列名排序顺序外,ORDER BY 还支持按相对列位置进行排序。...如果想在多个列上降序排序,必须每一指定 DESC 关键字。

2.5K51

SQL 连接(JOIN)专题

另外聚集函数也可以在联结中进行使用。 SQL 连接(JOIN) 用于把来自两个或多个行结合起来。...它们之间唯一差别是所关联顺序。换句话说,调整FROM或WHERE子句中表顺序,左外联结可以转换为右外联结。因此,这两种外联结可以互换使用,哪个方便就用哪个。...虽然最终结果是相同,但许多 DBMS 处理联结远比处理子查询快得多。应该试一下两种方法,确定哪一种性能更好。 自然联结 标准联结(前一课中介绍内联结)返回所有数据,相同甚至多次出现。...自然联结排除多次出现,使每一只返回一次。 自然联结要求你只能选择那些唯一,一般通过一个表使用通配符(SELECT*),而对其他表使用明确子集来完成。...因此,有必要对不同选择机制进行实验,找出最适合具体情况方法。

1.9K20

MariaDB 连接查询与子查询

.当查询数据时,通过连接操作查询出存放在多个表中不同实体信息.当两个或多个表中存在相同意义字段时,便可以通过这些字段不同进行连接查询....,为了防止产生二义性,对表使用了别名,lyshark表第1次出现别名为fl,第2次出现别名为f2,使用SELECT语句返回时明确指出返回n为前缀全名,WHERE连接两个表,并按照第2个表...实例: 在lyshark表和suppliers表之间,使用INNER JOIN语法进行内连接查询,并查询结果排序,SQL语句如下:MariaDB [lyshark]> select suppliers.s_id...num2,然后将tab1中num1值与之进行比较,只要大于num2任何1个值,即为符合查询结果.MariaDB [lyshark]> select num1 from tab1 where num1...◆为表和字段取别名◆在前面介绍分组查询、聚合函数查询和嵌套子查询,你可以看到有的地方使用了AS关键字为查询结果中某一指定一个特定名字,在内连接查询时,则相同表lyshark分别指定两个不同名字

4.4K30

java开发学习-数据库(1)

INTO 表名(列名1,列名2 ...)VALUES(值1,值2...); 注意: 列名与类型、个数、顺序要一一应。...如果在一个数据表中有两个相同name信息 SELECT DISTINCT `name` from tb_user 4)排序 查询出来结果进行排序 排序:升序(ASC) 降序(DESC)...将查询结构按照1个或者多个字段进行分组,字段值相同为一组 生活场景:在这里有一堆人,有女人和男人,根据性别进行分组 6.1.基本分组查询 ?...8)select查询书写顺序 7)模糊查询 根据指定关键字进行查询 使用like关键后跟通配符进行查询 通配符: _ 任意一个字符 % 任意 0-n个字符 查询姓名由5个字符构成学生记录 SELECT...5.6.3.多多关系 生活中场景: 一个学生可以选择多门选修课,每门课程可以供多个学生选择 一个学生可以有多个老师,一个老师也可以有多个学生 CREATE TABLE tb_teacher( tid

1.2K50

SQL 优化必懂知识点

选择性(SELECTIVITY) 基数与总行数比值再乘 100% 就是一个选择性。...在进行 SQL 优化时候,单独看基数是没有任何意义,基数相对于总行数才有实际意义,正是这个原因,我们才引出选择性这个概念。 请思考,什么样必须建立索引?...这就是引出选择根本原因。 对于如下 SQL select * from test where phone=:b1; 不管 phone 传入任何值,最多返回1条。 什么样必须要创建索引呢?...当一个 SQL多个过滤条件但是只有一个或者部分列建立了索引,这个时候回出现回表再过滤,也需要创建组合索引,进而消除回表再过滤,从而提升查询性能。...如果集群因子与块数接近,表明表数据基本上是有序,而且其顺序基本与索引顺序一致。这样在进行索引范围扫描或者全索引扫描时,回表只需要读取少量数据块就能完成。

67020

MariaDB 单表查询与聚合查询

: 在对多进行排序时候,首先排序第一必须有相同值,才会对第二进行排序 如果第一数据中所有值都是唯一,将不再第二进行排序 指定排序方向:默认情况下,查询数据是按照字幕升序进行排序...,要返回每个水果供应商提供水果种类,这时就要在分组过程中用到COUNTO函数,把数据分为多个逻辑组,并每个组进行集合计算.实例1: 根据Gidlyshark表中数据进行分组,并显示出每个编号对应水果个数...,只有满足条件分组才会被显示.实例: 根据Gidlyshark表中数据进行分组,并显示水果种类大于1分组信息,SQL语句如下:MariaDB [lyshark]> select Gid,group_concat...,该记录计算查询出所有记录总和,即统计记录数量.实例: 根据Gidlyshark表中数据进行分组,并显示记录数量,SQL语句如下:MariaDB [lyshark]> select Gid,count...根据Gid和Name字段lyshark表中数据进行分组,SQL语句如下:MariaDB [lyshark]> select * from lyshark group by Gid,Name;+--

2.8K10

MySQL 之单表查询(精简笔记)

: 在对多进行排序时候,首先排序第一必须有相同值,才会对第二进行排序 如果第一数据中所有值都是唯一,将不再第二进行排序 指定排序方向: 默认情况下,查询数据是按照字幕升序进行排序...例如,要返回每个水果供应商提供水果种类,这时就要在分组过程中用到COUNTO函数,把数据分为多个逻辑组,并每个组进行集合计算....实例1: 根据Gidlyshark表中数据进行分组,并显示出每个编号对应水果个数,SQL语句如下: MariaDB [lyshark]> select Gid,count(*) as Name from...实例: 根据Gidlyshark表中数据进行分组,并显示水果种类大于1分组信息,SQL语句如下: MariaDB [lyshark]> select Gid,group_concat(Name)...实例: 根据Gid和Name字段lyshark表中数据进行分组,SQL语句如下: MariaDB [lyshark]> select * from lyshark group by Gid,Name

4.8K10

MySql性能测试

4、各字段解释(id、type、key、rows、Extra是衡量指标) id:select查询序列号,包含一组数字,表示查询中执行select子句或操作表 顺序三种情况: id相同,执行顺序由上至下...range:只检索给定范围行,使用一个索引来选择行。...filesort :说明mysql会对数据使用一个外部索引排序,而不是按照表内索引顺序进行读取。...第一行(执行顺序4):id列为1,表示是union里第一个selectselect_typeprimary表 示该查询为外层查询,table被标记为,表示查询结果来自一个衍生表,其中derived3...t2】 第五行(执行顺序5):代表从union临时表中读取行阶段,table表示用第一个和第四个select结果进行union操作。

1.9K40

MariaDB 连接查询

,在关系数据库管理系统中,表建立时各数据之间关系不必确定,常把一个实体所有信息存放在一个表中.当查询数据时,通过连接操作查询出存放在多个表中不同实体信息.当两个或多个表中存在相同意义字段时,便可以通过这些字段不同进行连接查询...,为了防止产生二义性,对表使用了别名,lyshark表第1次出现别名为fl,第2次出现别名为f2,使用SELECT语句返回时明确指出返回n为前缀全名,WHERE连接两个表,并按照第2个表...LEFT OUTER子句中指定左表所有行,而不仅仅是连接所匹配行,如果左表某行在右表中没有匹配行,则在相关联结果中,右表所有选择列表列均为空值....实例: 在lyshark表和suppliers表之间,使用INNER JOIN语法进行内连接查询,并查询结果排序,SQL语句如下: MariaDB [lyshark]> select suppliers.s_id...◆为表和字段取别名◆ 在前面介绍分组查询、聚合函数查询和嵌套子查询,你可以看到有的地方使用了AS关键字为查询结果中某一指定一个特定名字,在内连接查询时,则相同表lyshark分别指定两个不同名字

4.3K10

备忘单:提升你 MariaDB 和 MySQL 数据库技能

然而,在使用这些库之前,理解数据库引擎做了什么以及为什么选择数据库是重要我们会很有帮助。本文介绍 MariaDB 和 mysql 命令来帮助你熟悉数据库处理数据基本原理。...学习 SQL 基本知识 结构化查询语言是基于它们能力定义:一种通过有规则且一致语法来查询数据库中内容得到有用结果方法。SQL 看起来像是普通英文语句,有一点点生硬。...SQL 命令分号作为结尾。如果你忘记输入分号,MariaDB 会认为你是想在下一行继续输入你查询命令,在下一行你可以继续输入命令也可以输入分号结束命令。...你必须指定 MariaDB 使用哪个库,才能对该库使用查询语句。指定数据库命令是 use。当你选择了一个库后,MariaDB 提示框会切换为选择库。...通过使用多个表中独立却有关联数据,你可以保证数据一致性和有效性,使用 SQL 你可以动态地关联它们。

1.4K20

面试中遇到坑之mysql注入入门

00x1 数字型注入 php为例子,我们首先新建一个叫做users数据库,新建两个表,分别为news和users插入以下语句: MariaDB [injection]> insert usersvalues...Order by 明明是一个结果集进行排序函数。...那我们可以构造sql语句查询users这个表,当然了,你要加union 来合并多个select语句结果集。 http://192.168.217.128/1.php?...union 关键字前后查询返回数必须相同,不然没法拼接成一个表 比如:你这个查询前面返回了6,后面的查询只返回了3。缺少可以通过显示地指定Null来补充。...; }//判断连接是否成功 mysql_select_db('injection',$conn);//选择连接请求为conn数据库(fanke) $sql="select* from news where

91040

MariaDB 创建索引

索引是一个单独、存储在磁盘上数据库结构,它们包含着对数据表里所有记录引用指针.使用索引用于快速找出在某个或多个中有一特定值行,所有MySQL类型都可以被索引,相关使用索引是提高查询操作速度最佳途径...,不仅占用磁盘空间,而且会影响语句执行效率 ● 避免经常更新进行过多索引,并且索引中尽可能少 ● 经常用于查询字段应该创建索引,但要避免添加不必要字段 ● 数据量小表最好不要使用索引...,不允许有空值. 4.单列索引:即一个索引只包含单个,一个表可以有多个单列索引. 5.组合索引:指在表多个字段组合上创建索引,使用组合索引时遵循最左前缀集合. 6.全文索引:允许在这些索引中插入重复值和空值...,用来指定创建索引 col_name #需要创建索引字段,此列必须从数据表中定义选择 length....索引总是整个进行,不支持局部(前缀)索引. 1.创建表table_4在表中info字段上建立一个全文索引,SQL语句如下: MariaDB [lyshark]> create table table

3.2K10

MYSQL基础知识和案例分享

· B-Tree索引索引顺序组织存储,所以适合范围查找。适用于全键值、键值范围或键前缀查找。启动键前缀查找只适用于根据最左前缀查找。...· 前缀索引和索引选择性:对于text或者很长varchar类型,需要索引开始部分字符,可以大大结余索引空间,MySQL也不允许索引这些完整长度。...诀窍在于要选择足够长前缀保证较高选择性。 · 多索引:当多个索引做相交操作时(AND条件),通常意味着需要一个包含所有相关索引,而不是多个独立单列索引。...语句,多个事务会同时先t_source表进行当前读并获取S锁后,再插入到t_dest。...定点运行脚本情况,避免在同一时间点运行多个同一表进行读写脚本,特别注意加锁且操作数据量比较大语句。 6.应用程序中增加对死锁判断,如果事务意外结束,重新运行该事务,减少功能影响。

87220

SQL | SQL 必知必会笔记 (二)

根据 DBMS 不同及其配置,搜索可以是区分大小写。 除了能匹配一个或多个字符外,% 还能匹配 0 个字符。% 代表搜索模式中给定位置 0 个、1 个或多个字符。...这个返回供应商名称和地址 SELECT 语句很简单,但我们是如何创建这个组合值呢? 思路 解决办法是把两个拼接起来。在 SQL SELECT 语句中,可使用一个特殊操作符来拼接两个。...在 MySQL 和 MariaDB 中,必须使用特殊函数。...(USA) Jouets et ours (France) */ 上面的例子只是拼接字段进行输出,但是它没有名字,只是显示值。但是未命名不能用于客户端应用中,因为客户端没有办法引用它。...(USA) Jouets et ours (France) */ 执行算术计算 计算字段另一常见用途是检索出数据进行算术计算。

1.2K20

mysql数据库(排序与分页)

# 使用 ORDER BY 查询到数据进行排序操作 # 升序:AEC(ascend) # 降序:DESC(descend) SELECT employee_id, name, salary...employees ORDER BY salary DESC; 1.我们也可以使用别名,给别名进行排序 # 我们可以使用别名,进行排序 SELECT employee_id, name, salary...在对多进行排序时候,首先排序第一必须有相同值,才会对第二进行排序。如果第一数据中所有值都是唯一,将不再第二进行排序。...< 5 ORDER BY salary DESC; 需要说明是,这条语句是先取出来前 5 条数据行,然后再按照 hp_max 从高到低顺序进行排序。...BY annual_sal DESC, Name ASC; 2、选择工资不在 8000 到 17000 员工姓名和工资, 按工资降序, 显示第 21 到 40 位置数据 SELECT name

7910

一条 SQL 查询语句是如何执行

这个过程不需要重连和重新做权限验证,但是会将连接恢复到刚刚创建完时状态。 查询缓存 连接建立完成后,就可以执行 Select 语句了,执行逻辑就会进行到第二步:查询缓存。...你输入是由多个字符串和空格组成一条SQL语句,MySQL需要识别出里面的字符串分别是什么,代表什么,MySQL从你输入" select"这个关键字识别出来,这是一个查询语句。...,还要进行优化器处理,优化器在表里面有多个索引时候,决定使用哪个索引;或者在一个语句多表关联时候,决定各个表连接顺序,比如下面语句是执行两个表 join: mysql> select * from...,而优化器作用就是决定选择使用哪一种方案。...”,重复相同判断逻辑,直到取到这个表最后一行 执行器将上述遍历过程中所有满足条件行组成记录集作为结果集返回给客户端。

76910
领券