二、MYSQL检索数据

目录

一、 检索数据

1、SELECT语句-检索单个列

2、SELECT语句-检索多个列

3、SELECT语句-检索所有列

4、查询常量值

 5、查询表达式

6、查询函数

7、SELECT语句-检索不同的值(去重)

8、SELECT语句-限制结果

9、注释使用:

10、起别名:

11、+号的作用

12、concat拼接

 13、 IFNULL判断是否为空

二、排序检索数据

1、排序数据

2、筛选条件,检索排序

3、按多个列排序

4、按列位置排序

5、按指定排序方向


一、 检索数据

  1. 查询列表可以是表中的字段、常量值、表达式、函数
  2. 查询的结果是一个虚拟的表格

使用前最好是加上USE+库名,如USE myemployees;操作时就代表在此库操作

1、SELECT语句-检索单个列

关键字:SQL组成部分的保留字,用途是从一个或多个表中检索信息。关键字不能用作表或列的名字。

SELECT+列名+ FROM + 表名    从某个表中检索名为。。的列

SELECT quyu FROM hzhouse;        # 从某个表中检索名为。。的列

结束SQL语句:多条SQL语句必须以分号;分隔

SQL 语句和大小写:SQL 语句和大小写,但是表名、列名和值可能有所不同(这有赖于具体的 DBMS及其如何配置)。

使用空格:在处理 SQL语句时,其中所有空格都被忽略。SQL语句可以写成长长的一行,也可以分写在多行。

2、SELECT语句-检索多个列

检索多个列:要检索多个列,仍然使用 SELECT 语句。唯一的不同是必须在 SELECT 关键字后给出多个列名,列名之间必须以逗号分隔。最后一个列名后不加。如果在最后一个列名后加了逗号,将出现错误。

从hzhouse中检索名为chanquan,quyu,danjia的列

SELECT chanquan,quyu,danjia FROM hzhouse;    
#从hzhouse中检索名为chanquan,quyu,danjia的列

3、SELECT语句-检索所有列

1.检索有所列:直接用通配符*表示所有,但查询出来的顺序与原始表一致

SELECT * FROM hzhouse;        #检索所有列

自由选择,可以选择先显示哪个字段

里面的符合为着重号,不是单引号,也可去掉,当字段与关键字容易混淆时,可以使用着重号进行标识区分

#或者在数据库中直接双击表first_name即可获得`first_name`,以此类推
SELECT 
	`first_name`,
	`first_name`,
	`last_name`
FROM employees;

4、查询常量值

查询数字常量和字符常量,输出结果,列名和数据都为常量本身

SELECT 100;
SELECT 'PIKA';

 5、查询表达式

如进行加减乘除等都可

SELECT 100 * 300;

6、查询函数

SELECT VERSION();

7、SELECT语句-检索不同的值(去重)

检索不同的值:DISTINCT 关键字,指示数据库只返回不同的值(唯一性),必须直接放在列名的前面,DISTINCT 关键字作用于所有的列,不仅仅是跟在其后的那一列。即当某一列相同,但其他列不同,也是不同的值

SELECT DISTINCT chanquan,quyu,danjia FROM hzhouse;

8、SELECT语句-限制结果

使用 MySQL、MariaDB、PostgreSQL或者 SQLite,需要使用 LIMIT子句来限制最多返回多少行

SELECT chanquan FROM hzhouse LIMIT 5;

LIMIT 行数 OFFSET 行数 指示 MySQL等 DBMS返回从某行开始的多少行的数据。第一个数字是指从哪儿开始,第二个数字是检索的行数。

SELECT chanquan FROM hzhouse LIMIT 5 OFFSET 10;

注意:第一个被检索的行是第 0行,而不是第 1行。

9、注释使用:

1、注释使用 -- (两个连字符)嵌在行内。 -- 之后的文本就是注释,如:

SELECT chanquan FROM hzhouse LIMIT 5;   --注释

2、在一行的开始处使用 # ,这一整行都将作为注释。

3、注释从 /* 开始,到 */ 结束, /* 和 */ 之间的任何内容都是注释。这种方式常用于给代码加注释。

10、起别名:

  1. 便于理解
  2. 若查询字段有重名的情况,可以使用别名进行区分

别名中存在多个字符或存在空格、关键字、#等,需要对别名进行加上双引号" "或者单引号       ' '的处理(建议双引号)

方式一:使用as

SELECT 100 AS 结果;
SELECT 'PIKA' AS 名字;

 方式二:使用空格

SELECT first_name 姓,last_name 名 FROM employees;

11、+号的作用

在mysql中的+号,只能作为运算符

  1. 两个都为数值型,进行加法运算
  2. 其中一个为字符型,一个为数值型,试图将字符型转换为数值型,转换成功则继续进行加法运算;若转换失败则将字符型数据转换为0
  3. 只要其中一方为null,则结果肯定为null
select 100+90;
select '100'+90;
select 'pika'+90;
select null + 90;

12、concat拼接

进行各字符的拼接

SELECT CONCAT ('a','b','c');
SELECT CONCAT (first_name,last_name) AS 姓名 FROM employees;

 13、 IFNULL判断是否为空

判断是否为空并进行替换

IFNULL(commission_pct,0),(原始值,为null时的替换值)

SELECT IFNULL(commission_pct,0) AS com,
	commission_pct
FROM 
	employees

二、排序检索数据

#语法
select 查询列表
from 表
【where 筛选条件】
order by 排序列表 【asc|desc】

1、排序数据

子句:一个子句通常由一个关键字加上所提供的数据组成

明确排序:使用ORDER BY 子句,ORDER BY 子句取一个或多个列的名字,据此对输出进行排序,不指定排序,默认为升序

order by子句支持单个字段、多个字段、表达式、函数、别名等

SELECT chanquan FROM hzhouse ORDER BY chanquan    
#检索chanquan列,并根据chanquan列进行排序

1、指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中最后一条子句,limit子句除外,limit子句放再其后面。如果它不是最后的子句,将会出现错误消息。

2、通常, ORDER BY 子句中使用的列将是为显示而选择的列。但是用非检索的列排序数据也是可以的。

2、筛选条件,检索排序

添加筛选条件,进行检索排序

#查询部门编号>= 90的员工信息,按入职时间的先后进行排序
SELECT * FROM employees WHERE department_id >= 90 ORDER BY hiredate ASC;
#按年薪的高低显示员工的信息和年薪【按表达式排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees  
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

#按年薪的高低显示员工的信息和年薪【按别名排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees  
ORDER BY 年薪 DESC;

#按姓名长度显示员工姓名和工资【按函数排序】
SELECT LENGTH (last_name) 字节长度, last_name salary FROM employees 
ORDER BY LENGTH (last_name) DESC;

3、按多个列排序

按多个列排序:要按多个列排序,简单指定列名,列名之间用逗号分开即可(就像选择多个列时那样)

SELECT chanquan ,quyu,danjia FROM hzhouse ORDER BY chanquan,quyu,danjia;

#查询员工信息,要求先按工资排序,再按员工编号降序【按多个字段排序】
SELECT * FROM employees ORDER BY salary ASC, employee_id DESC;

4、按列位置排序

按列位置排序:除了能用列名指出排序顺序外, ORDER BY 还支持按相对列位置进行排序。

SELECT chanquan ,quyu,danjia FROM hzhouse ORDER BY 2,3;

优点:不用重新输入列名

缺点:1、不明确给出列名有可能造成错用列名排序

2、在对 SELECT 清单进行更改时容易错误地对数据进行排序(忘记对 ORDER BY 子句做相应的改动)。

3、如果进行排序的列不在 SELECT 清单中,显然不能使用这项技术。

5、按指定排序方向

指定排序方向:可以使用 ORDER BY 子句进行降序(从 Z 到 A)排序

使用DESC关键字:以chanquan降序来排序

SELECT chanquan,quyu,danjia FROM hzhouse ORDER BY chanquan DESC;

DESC 关键字只应用到直接位于其前面的列名,如果想在多个列上进行降序排序,必须对每一列指定 DESC 关键字。

若用多个列降序排序则:

SELECT chanquan,quyu,danjia FROM hzhouse ORDER BY chanquan DESC,quyu DESC;

与 DESC相对的是 ASC (或 ASCENDING ),在升序排序时可以指定它。但实际上,ASC 没有多大用处,因为升序是默认的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pikapikk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值