前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【mysql】基本的select语句

【mysql】基本的select语句

原创
作者头像
兮动人
发布2022-03-01 10:52:41
1.4K0
发布2022-03-01 10:52:41
举报
文章被收录于专栏:兮动人的博客兮动人的博客

1. 列的别名

  • as:全称:alias(别名),可以省略
  • 列的别名可以使用一对""引起来,不要使用''。
  • 作用:重命名一个列 ;便于计算
  • 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
  • AS 可以省略
  • 建议别名简短,见名知意
  • 举例
代码语言:sql
复制
SELECT last_name AS name
FROM employees;
在这里插入图片描述
在这里插入图片描述
代码语言:sql
复制
SELECT last_name AS name, department_id "部门id"
FROM employees;
在这里插入图片描述
在这里插入图片描述
代码语言:sql
复制
SELECT last_name AS name, department_id "部门id", salary * 12 "annual sal"
FROM employees;
在这里插入图片描述
在这里插入图片描述

2. 去除重复行

  • 查询员工表中一共有哪些部门id
代码语言:sql
复制
SELECT DISTINCT department_id 
FROM employees;
在这里插入图片描述
在这里插入图片描述
代码语言:sql
复制
#错误的:没有去重的情况
SELECT department_id
FROM employees;
代码语言:sql
复制
#仅仅是没有报错,但是没有实际意义。
SELECT DISTINCT department_id,salary
FROM employees;

这里有两点需要注意:

  1. DISTINCT 需要放到所有列名的前面,如果写成SELECT salary, DISTINCT department_id FROM employees会报错。
  2. DISTINCT 其实是对后面所有列名的组合进行去重,你能看到最后的结果是 74 条,因为这 74 个部门id不同,都有 salary 这个属性值。如果想要看都有哪些不同的部门(department_id),只需要写DISTINCT department_id即可,后面不需要再加其他的列名了。

3. 空值参与运算

  • 所有运算符或列值遇到null值,运算的结果都为null
  • null不等同于0,'','null'
代码语言:sql
复制
SELECT * FROM employees;
在这里插入图片描述
在这里插入图片描述
  • 空值参与运算:结果一定也为空。
代码语言:sql
复制
SELECT employee_id,salary "月工资",salary * (1 + commission_pct) * 12 "年工资",commission_pct
FROM employees;
在这里插入图片描述
在这里插入图片描述
  • 实际问题的解决方案:引入IFNULL IFNULL(a,b) :如果参数a不是null,就加入计算,如果是null就拿参数b来计算SELECT employee_id,salary "月工资",salary * (1 + IFNULL(commission_pct,0)) * 12 "年工资",commission_pct FROM employees;
    在这里插入图片描述
    在这里插入图片描述
  • 注意,在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。4. 着重号
  • 因为 ORDER 是排序的关键字,所以不能直接作为表名,如果有重名的order表,就使用着重号引起来
  • 错误的
代码语言:sql
复制
SELECT * FROM order
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order' at line 1
  • 正确的
代码语言:sql
复制
mysql> SELECT * FROM `ORDER`;
+----------+------------+
| order_id | order_name |
+----------+------------+
|        1 | shkstart   |
|        2 | tomcat     |
|        3 | dubbo      |
+----------+------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM `order`;
+----------+------------+
| order_id | order_name |
+----------+------------+
|        1 | shkstart   |
|        2 | tomcat     |
|        3 | dubbo      |
+----------+------------+
3 rows in set (0.00 sec)
  • 结论 需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在SQL语句中使用一对(着重号)引起来。

5. 查询常数

  • SELECT 查询还可以对常数进行查询。就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。
  • 你可能会问为什么我们还要对常数进行查询呢?
  • SQL 中的 SELECT 语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。
  • 比如说,对 employees 数据表中的员工姓名进行查询,同时增加一列字段corporation,这个字段固定值为“兮动人”,可以这样写:SELECT '兮动人' as corporation, last_name FROM employees;
    在这里插入图片描述
    在这里插入图片描述
  • 加入常数就会在每一行的前面增加一个常数,比如加个公司名为:“兮动人”

6. 显示表结构

代码语言:sql
复制
DESCRIBE employees; #显示了表中字段的详细信息
或
DESC employees;
在这里插入图片描述
在这里插入图片描述

其中,各个字段的含义分别解释如下:

  • Field:表示字段名称。
  • Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
  • Null:表示该列是否可以存储NULL值。
  • Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
  • Default:表示该列是否有默认值,如果有,那么值是多少。
  • Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

7. 过滤元素

  • 练习:查询90号部门的员工信息
代码语言:sql
复制
SELECT * 
FROM employees
#过滤条件,声明在FROM结构的后面
WHERE department_id = 90;
在这里插入图片描述
在这里插入图片描述
  • 练习:查询last_name为'King'的员工信息
代码语言:sql
复制
SELECT * 
FROM EMPLOYEES
WHERE LAST_NAME = 'King'; 
在这里插入图片描述
在这里插入图片描述
  • 注意:mysql在Windows下大小写不敏感,不区分大小写的,如上的字符串 'King' 也是可以任意大小写的

8. 练习

  1. 查询员工12个月的工资总和,并起别名为ANNUAL SALARY
代码语言:sql
复制
SELECT employee_id, last_name, salary * 12 "ANNUAL SALARY"
FROM employees
在这里插入图片描述
在这里插入图片描述
  1. 查询employees表中去除重复的job_id以后的数据
代码语言:sql
复制
SELECT DISTINCT job_id
FROM employees
在这里插入图片描述
在这里插入图片描述
  1. 查询工资大于12000的员工姓名和工资
代码语言:sql
复制
SELECT last_name salary
FROM employees
WHERE salary > 12000;
在这里插入图片描述
在这里插入图片描述
  1. 查询员工号为176的员工的姓名和部门号
代码语言:sql
复制
SELECT last_name department_id
FROM employees
WHERE employee_id = 176
在这里插入图片描述
在这里插入图片描述
  1. 显示表 departments 的结构
代码语言:sql
复制
DESC departments;
在这里插入图片描述
在这里插入图片描述

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 列的别名
  • 2. 去除重复行
  • 3. 空值参与运算
  • 5. 查询常数
  • 6. 显示表结构
  • 7. 过滤元素
  • 8. 练习
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档