广告位联系
返回顶部
分享到

Mysql的SELECT语句与显示表结构介绍

Mysql 来源:互联网 作者:佚名 发布时间:2023-01-28 22:19:50 人浏览
摘要

SELECT... 1 2 SELECT 1+1, 2+2;# 直接这样写相当于下面这句 SELECT 1+1, 2+2 FROM DUAL; # 这里DUAL:伪表 SELECT ... FROM 语法: SELECT 标识选择哪些字段(列) FROM 标识从哪个表中选择 例如选择全部列: 1

SELECT...

1

2

SELECT 1+1, 2+2;# 直接这样写相当于下面这句

SELECT 1+1, 2+2 FROM DUAL; # 这里DUAL:伪表

基本的SELECT语句与显示表结构_MySQL

SELECT ... FROM

语法:

SELECT 标识选择哪些字段(列)
FROM 标识从哪个表中选择

例如选择全部列:

1

SELECT * FROM departments;

一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。

在生产环境下,不推荐直接使用SELECT * 进行查询。

选择特定的列:

1

SELECT department_id, location_id FROM departments;

MySQL中的SQL语句是不区分大小写的,因此SELECT和select的作用是相同的,但是习惯将关键字大写、数据列和表名小写。

列的别名

重命名一个列(alias 别名),便于计算。注意,重命名之后结果集中的列会显示别名而非原名。

紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。建议别名简短,AS 可以省略。

举例

1

SELECT last_name "Name", salary*12 "Annual Salary" FROM employees;

去除重复行

默认情况下,查询会返回全部行,包括重复行。

1

2

SELECT department_id

FROM employees;

基本的SELECT语句与显示表结构_字段_02

在SELECT语句中使用关键字DISTINCT去除重复行

1

2

SELECT DISTINCT department_id

FROM employees;

基本的SELECT语句与显示表结构_MySQL_03

针对于:

1

2

SELECT DISTINCT department_id,salary

FROM employees;

基本的SELECT语句与显示表结构_字段_04

注意:

??DISTINCT?? 需要放到所有列名的前面,如果写成??SELECT salary, DISTINCT department_id??FROM employees 会报错。??DISTINCT?? 其实是对后面所有列名的组合进行去重,如果你想要看都有哪些不同的部门(department_id),只需要写DISTINCT department_id 即可,后面不需要再加其他的列名了。空值参与运算

所有运算符或列值遇到null值,运算的结果都为null。当然可以采用??IFNULL??作为其解决方案。

1

2

3

SELECT employee_id,salary,commission_pct,

12 * salary * (1 + commission_pct) "annual_sal"

FROM employees;

在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长度是空。而且,在 MySQL 里面,空值是占用空间的。

着重号

我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在SQL语句中使用一对``(着重号)引起来。

1

2

3

4

5

6

7

8

# 错误

mysql> SELECT * FROM ORDER;

ERROR 1064 (42000): 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

 

# 正确

mysql> SELECT * FROM `ORDER`;查询常数(查询同时添加常数字段)

SELECT 查询还可以对常数进行查询。对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。

比如说,我们想对 employees 数据表中的员工姓名进行查询,同时增加一列字段??corporation?? ,这个字段固定值为 “timerring”,可以这样写:

1

2

SELECT 'timering' as corporation, last_name

FROM employees;

基本的SELECT语句与显示表结构_MySQL_05

显示表结构

使用DESCRIBE 或 DESC 命令,表示表结构。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

DESCRIBE employees;

DESC employees;mysql> desc employees;

+----------------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+----------------+-------------+------+-----+---------+-------+

| employee_id | int(6) | NO | PRI | 0 | |

| first_name | varchar(20) | YES | | NULL | |

| last_name | varchar(25) | NO | | NULL | |

| email | varchar(25) | NO | UNI | NULL | |

| phone_number | varchar(20) | YES | | NULL | |

| hire_date | date | NO | | NULL | |

| job_id | varchar(10) | NO | MUL | NULL | |

| salary | double(8,2) | YES | | NULL | |

| commission_pct | double(2,2) | YES | | NULL | |

| manager_id | int(6) | YES | MUL | NULL | |

| department_id | int(4) | YES | MUL | NULL | |

+----------------+-------------+------+-----+---------+-------+

11 rows in set (0.00 sec)

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

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

过滤数据

1

2

3

SELECT 字段1,字段2

FROM 表名

WHERE 过滤条件使用WHERE 子句,将不满足条件的行过滤掉WHERE子句紧随 FROM子句

举例

1

SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90 ;

基本的SELECT语句与显示表结构_字段_06

练习题

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

基本工资

1

2

SELECT employee_id, last_name, salary * 12 "ANNUAL SALARY"

FROM employees;

加权工资

1

2

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

FROM employees;

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

1

2

SELECT DISTINCT job_id

FROM employees;

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

1

2

3

SELECT first_name, last_name, salary

FROM employees

WHERE salary > 12000;

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

1

2

3

SELECT first_name, last_name, department_id

FROM employees

WHERE employee_id = 176;

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

1

2

DESC departments;

SELECT * FROM departments;


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.51cto.com/u_15736437/6019123
相关文章
  • MySQL之xtrabackup备份恢复的实现

    MySQL之xtrabackup备份恢复的实现
    mysql版本:8.0.28 xtrabackup版本:8.0.28 1、安装xtrabackup 下载地址:Download Percona XtraBackup 8.0https://www.percona.com/downloads 1 2 [root@myoracle ~]# tar -zxvf
  • Mysql的SELECT语句与显示表结构介绍

    Mysql的SELECT语句与显示表结构介绍
    SELECT... 1 2 SELECT 1+1, 2+2;# 直接这样写相当于下面这句 SELECT 1+1, 2+2 FROM DUAL; # 这里DUAL:伪表 SELECT ... FROM 语法: SELECT 标识选择哪些字段(列)
  • MySql如何不插入重复数据
    向数据库的插入值时,需要判断插入是否重复,然后插入。 这种操作怎么提高效率 下面说说一些解决方案 1、insert ignore into 当插入数据时,
  • MYSQL统计逗号分隔字段元素的个数
    写SQL的时候会遇到如下的问题,统计如下表中project_id字段中id的个数。 company_id project_id 77 94882,214880,94881,154882,94871,94879 140 2890,2872,3178,4314,
  • MySQL事务的SavePoint简介及操作
    什么是SavePoint SavePoint是数据库事务中的一个概念, 可以将整个事务切割为不同的小事务, 可以选择将状态回滚到某个小事务发生时的样子,
  • mysql查看表大小的方法介绍
    1.查看所有数据库容量大小 1 2 3 4 5 6 7 8 select table_schema as 数据库, sum(table_rows) as 记录数, sum(truncate(data_length/1024/1024, 2)) as 数据容量(MB), sum(
  • MySQL不用like+%实现模糊查询

    MySQL不用like+%实现模糊查询
    我们都知道 InnoDB 在模糊查询数据时使用 %xx 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用
  • SQL通用语法以及分类图文介绍
    MySQL的启动和连接数据模型 MySQL的启动和停止 1.services.msc 2.命令行启停 启动:net start mysql80 停止:net stop mysql80 (命令行窗口以管理员权限打
  • mysql开启各种日志的方法
    以下日志开启均在mysql5.7.32进行测试 general_log general_log支持热开启,热关闭。开启general_log会记录所有操作mysql命令,所以会产生大量文件,
  • Mysql备份的几种方法教程
    1. mysqldump mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计