首页 >> 大全

MySQL的SELECT查询基础

2023-12-15 大全 25 作者:考证青年

mysql的增删改查中,查询无疑是最重要的,增删改还是比较简单的,而查询就复杂的多,本篇文章试图全面解析查询语句

先导入数据库到或者其他的mysql客户端,本篇的数据库并不是简单的一张表,而是一个完整的员工系统,这样学习起来更加的真实。

数据库文件:

有下面这几张表。用到的时候再具体说明。

建议每个表都看下,熟悉有什么字段,这几张表练习非常的好用。

* FROM 表名

这是一个最简单的查询,在正式环境里面一般不会用,因为正式环境的表数据可能非常的大,直接查询整个表可能造成系统卡顿。

我们查询数据比较少的一个表,这是一个地区表。

SELECT * FROM regions;

根据列名查询

一个表可能有非常多的列,有时我们只想查询几个列,可以使用类似下面的语句。

SELECT 列名1,列名2,...列名n FROM 表名;

例如我们现在要查询这个表的员工id,名字和工资

SELECT employee_id,last_name,salary FROM `employees`

列名的别名

别名的最主要作用是方便阅读,可以用as关键字给 取别名为,这样简短一些,as并不是英文单词。而是alias的缩写。as可以被省略。例如 lname可以不用写as,**还有一点是别名可以用双引号包裹,这样的主要用途是有些别名可能有空格。**例如 “工 资”,我就想工资两个字中间有空格。用单引号也不会报错,但这是因为mysql语法不严谨,按照ANSI的SQL标准,就是应该用双引号,用单引号直接报错。

SELECT employee_id as empl_id,last_name lname,salary "工 资" FROM `employees`

使用去重

例如我们需要知道表有多少个,通过下面的语句查出的结果是有非常多的重复的,使用关键字就可以去重。

sql基本语句查询_基础sql查询语句_

错误情况:

下面这样写是不行的,因为去重和和查询出来的行数是对不上的,会直接报错。

这样写是没有错误的,表示对部门id和工资的查询结果去重。

空值和空值参与运算

员工表有一个字段,这个字段表示绩效。可以看到有些员工是没有绩效,绩效为null,null不等同于0,也不等同于‘’。null就是没有值的意思。如果用null值参与运算,那么得到的结果还是null。

例如年工资等于月工资*(1+)*12 ,因为有的员工为null,导致计算出的年工资也是null,对于mysql来说,这是合理的,但对于业务来说这是不合理的,要是把当成0不就可以了?这个想法会让你陷入误区,null不等于0。

要实现年工资的功能也是可以的,null实际上就等同于没有赋值,如果为null的话,我们赋初值为0就行了。可以通过语句来实现这个功能(后面会讲到)。这样就可以实现年工资的功能了。

反引号处理关键字

如果执行下面的语句,会发现报错,这是因为order是一个关键字,这里恰好有一个表正好叫order,要让sql正确的运行可以使用反引号处理关键字。

SELECT * from order

写成下面这样就可以了。

SELECT * from `order`

常量查询

有时候我们希望在查询结果前面添加一些东西,就可以通过常量查询来实现,可以是字符串,或者数值,字符串必须有双引号。

用DESC显示表结构

使用desc或者。

过滤查询

最简单的就是使用where语句。

这里还有细节要说,在下,字符串也是不区分大小写的,在Linux下就区分大小写。这里把‘King’改为‘king’也是可以查出结果的。

练习

【题目】

1.查询员工12个月的工资总和,并起别名为

2.查询表中去除重复的以后的数据

3.查询工资大于12000的员工姓名和工资

4.查询员工号为176的员工的姓名和部门号

5.显示表 的结构,并查询其中的全部数据

【答案】

1.查询员工12个月的工资总和,并起别名为

SELECT employee_id , last_name,salary * 12 "ANNUAL SALARY" FROM employees; 
SELECT employee_id,last_name,salary * 12 * (1 + IFNULL(commission_pct,0)) "ANNUAL SALARY" FROM employees;

2.查询表中去除重复的以后的数据

SELECT DISTINCT job_id FROM employees;

3.查询工资大于12000的员工姓名和工资

SELECT last_name,salary FROM employees WHERE salary>12000;

4.查询员工号为176的员工的姓名和部门号

SELECT last_name,department_id FROM employees WHERE employee_id=176;

5.显示表 的结构,并查询其中的全部数据

DESC departments;
SELECT * FROM departments;

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了