MySQL数据库学习之查询操作详解

目录
  • 1.示例表内容
  • 2.简单查询
  • 3.给列起别名
  • 4.列运算
  • 5.条件查询

1.示例表内容

dept表:

+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+

emp表:

+-------+--------+-----------+------+------------+---------+---------+--------+
| EMPNO | ENAME  | JOB       | MGR  | HIREDATE   | SAL     | COMM    | DEPTNO |
+-------+--------+-----------+------+------------+---------+---------+--------+
|  7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |  800.00 |    NULL |     20 |
|  7499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
|  7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
|  7566 | JONES  | MANAGER   | 7839 | 1981-04-02 | 2975.00 |    NULL |     20 |
|  7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
|  7698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 | 2850.00 |    NULL |     30 |
|  7782 | CLARK  | MANAGER   | 7839 | 1981-06-09 | 2450.00 |    NULL |     10 |
|  7788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 | 3000.00 |    NULL |     20 |
|  7839 | KING   | PRESIDENT | NULL | 1981-11-17 | 5000.00 |    NULL |     10 |
|  7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
|  7876 | ADAMS  | CLERK     | 7788 | 1987-05-23 | 1100.00 |    NULL |     20 |
|  7900 | JAMES  | CLERK     | 7698 | 1981-12-03 |  950.00 |    NULL |     30 |
|  7902 | FORD   | ANALYST   | 7566 | 1981-12-03 | 3000.00 |    NULL |     20 |
|  7934 | MILLER | CLERK     | 7782 | 1982-01-23 | 1300.00 |    NULL |     10 |
+-------+--------+-----------+------+------------+---------+---------+--------+

salgrade表:

+-------+-------+-------+
| GRADE | LOSAL | HISAL |
+-------+-------+-------+
|     1 |   700 |  1200 |
|     2 |  1201 |  1400 |
|     3 |  1401 |  2000 |
|     4 |  2001 |  3000 |
|     5 |  3001 |  9999 |
+-------+-------+-------+

2.简单查询

MySQL 数据库使用SQL SELECT语句来查询数据。

例如我们要查询一个表的全部信息,可以这样做:

当然,这种方式进行查询的效率较低,我们更推荐您使用多列查询的方式:

mysql> select * from dept;
+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+
4 rows in set (0.00 sec)

那么,如果想查询单个列的信息呢?

可以指定列名进行查询:

mysql> select DNAME from dept;
+------------+
| DNAME      |
+------------+
| ACCOUNTING |
| RESEARCH   |
| SALES      |
| OPERATIONS |
+------------+
4 rows in set (0.00 sec)

查询多个列的信息,可以这样写:

mysql> select DNAME , LOC from dept;
+------------+----------+
| DNAME      | LOC      |
+------------+----------+
| ACCOUNTING | NEW YORK |
| RESEARCH   | DALLAS   |
| SALES      | CHICAGO  |
| OPERATIONS | BOSTON   |
+------------+----------+
4 rows in set (0.00 sec)

3.给列起别名

在查询的过程中,我们还可以选择给列起一个别名:

mysql> select DNAME as NAME from dept;
+------------+
| NAME       |
+------------+
| ACCOUNTING |
| RESEARCH   |
| SALES      |
| OPERATIONS |
+------------+
4 rows in set (0.00 sec)

也可以不加 as 关键字:

mysql> select DNAME NAME from dept;
+------------+
| NAME       |
+------------+
| ACCOUNTING |
| RESEARCH   |
| SALES      |
| OPERATIONS |
+------------+
4 rows in set (0.00 sec)

在所有的数据库中,字符串统一使用单引号,这是一个标准

4.列运算

在查询的时候,我们也可以直接进行列运算操作:

比如,我们想计算员工的年薪:

mysql> select ename,sal*12 from emp;
+--------+----------+
| ename  | sal*12   |
+--------+----------+
| SMITH  |  9600.00 |
| ALLEN  | 19200.00 |
| WARD   | 15000.00 |
| JONES  | 35700.00 |
| MARTIN | 15000.00 |
| BLAKE  | 34200.00 |
| CLARK  | 29400.00 |
| SCOTT  | 36000.00 |
| KING   | 60000.00 |
| TURNER | 18000.00 |
| ADAMS  | 13200.00 |
| JAMES  | 11400.00 |
| FORD   | 36000.00 |
| MILLER | 15600.00 |
+--------+----------+
14 rows in set (0.00 sec)

5.条件查询

示例1:查询工资大于等于3000的信息:

mysql> select empno,ename from emp where sal >= 3000;
+-------+-------+
| empno | ename |
+-------+-------+
|  7788 | SCOTT |
|  7839 | KING  |
|  7902 | FORD  |
+-------+-------+
3 rows in set (0.00 sec)

示例2:查询工资在2000到3000(包含2000和3000)的信息:

mysql> select empno,ename from emp where sal between 2000 and 3000;
+-------+-------+
| empno | ename |
+-------+-------+
|  7566 | JONES |
|  7698 | BLAKE |
|  7782 | CLARK |
|  7788 | SCOTT |
|  7902 | FORD  |
+-------+-------+
5 rows in set (0.00 sec)

示例3:查询员工补助为空的(不为空为is not null):

mysql> select empno,ename from emp where comm is null;
+-------+--------+
| empno | ename  |
+-------+--------+
|  7369 | SMITH  |
|  7566 | JONES  |
|  7698 | BLAKE  |
|  7782 | CLARK  |
|  7788 | SCOTT  |
|  7839 | KING   |
|  7876 | ADAMS  |
|  7900 | JAMES  |
|  7902 | FORD   |
|  7934 | MILLER |
+-------+--------+
10 rows in set (0.00 sec)

Mysql比较NULL值不能使用=号

示例4:查询岗位为MANAGER并且工资大于等于2500的信息:

mysql> select * from emp where JOB = "MANAGER" and SAL >= 2500;
+-------+-------+---------+------+------------+---------+------+--------+
| EMPNO | ENAME | JOB     | MGR  | HIREDATE   | SAL     | COMM | DEPTNO |
+-------+-------+---------+------+------------+---------+------+--------+
|  7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL |     20 |
|  7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL |     30 |
+-------+-------+---------+------+------------+---------+------+--------+
2 rows in set (0.00 sec)

示例5:查询岗位为MANAGER或者SALESMAN的员工:(使用关键字in)(不在某几个值之间使用not in)

mysql> select empno,ename,job from emp where job in ('MANAGER','SALESMAN');
+-------+--------+----------+
| empno | ename  | job      |
+-------+--------+----------+
|  7499 | ALLEN  | SALESMAN |
|  7521 | WARD   | SALESMAN |
|  7566 | JONES  | MANAGER  |
|  7654 | MARTIN | SALESMAN |
|  7698 | BLAKE  | MANAGER  |
|  7782 | CLARK  | MANAGER  |
|  7844 | TURNER | SALESMAN |
+-------+--------+----------+
7 rows in set (0.00 sec)

示例6:模糊查询,找出名字中含有字母o的:

mysql> select ename from emp where ename like '%o%';
+-------+
| ename |
+-------+
| JONES |
| SCOTT |
| FORD  |
+-------+
3 rows in set (0.00 sec)

示例7:模糊查询,找出名字以T结尾的:

mysql> select ename from emp where ename like '%T';
+-------+
| ename |
+-------+
| SCOTT |
+-------+
1 row in set (0.00 sec)

示例8:模糊查询,找出名字以K开头的:

mysql> select ename from emp where ename like 'K%';
+-------+
| ename |
+-------+
| KING  |
+-------+
1 row in set (0.00 sec)

示例9:模糊查询,找出名字第二个字母是A的:

mysql> select ename from emp where ename like '_A%';
+--------+
| ename  |
+--------+
| WARD   |
| MARTIN |
| JAMES  |
+--------+
3 rows in set (0.00 sec)

示例10:模糊查询,找出名字第三个字母是A的:

mysql> select ename from emp where ename like '__A%';
+-------+
| ename |
+-------+
| BLAKE |
| CLARK |
| ADAMS |
+-------+
3 rows in set (0.00 sec)

到此这篇关于MySQL数据库学习之查询操作详解的文章就介绍到这了,更多相关MySQL数据库 查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL数据库必备之条件查询语句

    目录 1.基本语法 2.按条件表达式筛选 3.按逻辑表达式筛选 4.模糊查询 5.安全等于 1.基本语法 SELECT 查询列表 FROM 表名 WHERE 筛选表达式; 2.按条件表达式筛选 条件运算符:>,<,=,!=,<>,>=,<= 条件运算符不能判断null. #在employees表中筛选工资大于12000的员工的所有信息 SELECT * FROM employees WHERE salary>12000; 3.按逻辑表达式筛选 逻辑运算符:&

  • Mysql数据库中子查询的使用

    废话不多说了,直接个大家贴mysql数据库总子查询的使用. 代码如下所述: </pre><pre name="code" class="sql">1.子查询是指在另一个查询语句中的SELECT子句. 例句: SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); 其中,SELECT * FROM t1 ...称为Outer Query[外查询](或者Outer Statement

  • MySQL数据库高级查询和多表查询

    MySQL多表查询 添加练习表 -- 用户表(user) CREATE TABLE `user`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id(主键)', `username` VARCHAR(50) COMMENT '用户姓名', `age` CHAR(3) COMMENT '用户年龄' ); -- 订单表(orders) CREATE TABLE `orders`( `id` INT AUTO_INCREMENT PRIMARY KEY

  • 详解MySQL数据库千万级数据查询和存储

    百万级数据处理方案 数据存储结构设计 表字段设计 表字段 not null,因为 null 值很难查询优化且占用额外的索引空间,推荐默认数字 0. 数据状态类型的字段,比如 status, type 等等,尽量不要定义负数,如 -1.因为这样可以加上 UNSIGNED,数值容量就会扩大一倍. 可以的话用 TINYINT.SMALLINT 等代替 INT,尽量不使用 BIGINT,因为占的空间更小. 字符串类型的字段会比数字类型占的空间更大,所以尽量用整型代替字符串,很多场景是可以通过编码逻辑来实

  • MySQL 数据库聚合查询和联合查询操作

    目录 1. 插入被查询的结果 2. 聚合查询 2.1 介绍 2.2 聚合函数 2.3 group by 子句 2.4 having 3. 联合查询 3.1 介绍 3.2 内连接 3.3 外连接 3.4 自连接 3.5 子查询 3.6 合并查询 1. 插入被查询的结果 语法: insert into 要插入的表 [(列1, ..., 列n)] select {* | (列1, ..., 列n)}from 要查询的表 上述语句可以将要查询的表的某些列插入到新的表中对应的某些列 示例1: 将 stud

  • MySQL数据库学习之查询操作详解

    目录 1.示例表内容 2.简单查询 3.给列起别名 4.列运算 5.条件查询 1.示例表内容 dept表: +--------+------------+----------+ | DEPTNO | DNAME | LOC | +--------+------------+----------+ | 10 | ACCOUNTING | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS

  • MySQL数据库学习之分组函数详解

    目录 1.分组函数 极值 求和 平均值 列数和 2.分组查询 3.小练习 4.大BOSS 1.分组函数 极值 示例表内容见此篇文章 找出最高工资: mysql> select max(sal) from emp; +----------+ | max(sal) | +----------+ | 5000.00 | +----------+ 1 row in set (0.00 sec) 找出最低工资: mysql> select min(sal) from emp; +----------+

  • 优化MySQL数据库中的查询语句详解

    很多时候基于php+MySQL建立的网站所出现的系统性能瓶颈往往是出在MySQL上,而MySQL中用的最多的语句就是查询语句,因此,针对MySQL数据库查询语句的优化就显得至关重要!本文就此问题做出详细分析如下: 1.判断是否向MySQL数据库请求了不需要的数据,如下列情况: (1).查询不需要的数据,例如你需要10条数据,但是你选出了100条数据加了limit做限制. (2).多表关联时返回全部列 (3).总是取出全部列select*......取出全部列,会让优化器无法完成索引覆盖扫描这类优

  • MYSQL数据库中cmd命令操作详解

    CMD命令 cmd是command的缩写.即命令提示符(CMD),是在OS / 2 , Windows CE与Windows NT平台为基础的操作系统(包括Windows 2000和XP中, Vista中,和Server 2003 )下的"MS-DOS 方式".中文版Windows XP 中的命令提示符进一步提高了与DOS 下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件. 今天我们就来看一下数据库的各种命令,以下命令全部是从CMD命令窗口下的命令行输入指令,首先如果如果输

  • MySQL学习之数据更新操作详解

    目录 UPDATE 语句 UPDATE 语句练习① UPDATE 语句练习② UPDATE 语句练习③ UPDATE 语句的表连接 UPDATE 语句练习④ UPDATE 语句 UPDATE 语句用于修改表的记录,语法如下 UPDATE IGNORE 表名 SET 字段1=值1, 字段2=值2, 字段3=值3, ...... WHERE 条件1 ...... ORDER BY ...... LIMIT ......; -- 注意:IGNORE - 是可选条件,使用后,会针对有冲突的修改记录忽略

  • MySQL数据库使用mysqldump导出数据详解

    mysqldump是mysql用于转存储数据库的客户端程序.它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等.可以用来实现轻量级的快速迁移或恢复数据库.是mysql数据库实现逻辑备份的一种方式. 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有

  • Python MySQL数据库基本操作及项目示例详解

    目录 一.数据库基础用法 二.项目:银行管理系统 1.进行初始化操作 2.登录检查,并选择操作 3.加入查询功能 4.加入取钱功能 5.加入存钱功能 一.数据库基础用法 要先配置环境变量,然后cmd安装:pip install pymysql 1.连接MySQL,并创建wzg库 #引入decimal模块 import pymysql #连接数据库 db=pymysql.connect(host='localhost',user='root',password='1234',charset='ut

  • Python写入MySQL数据库的三种方式详解

    目录 场景一:数据不需要频繁的写入mysql 场景二:数据是增量的,需要自动化并频繁写入mysql 方式一 方式二 总结 大家好,Python 读取数据自动写入 MySQL 数据库,这个需求在工作中是非常普遍的,主要涉及到 python 操作数据库,读写更新等,数据库可能是 mongodb. es,他们的处理思路都是相似的,只需要将操作数据库的语法更换即可. 本篇文章会给大家分享数据如何写入到 mysql,分为两个场景,三种方式. 场景一:数据不需要频繁的写入mysql 使用 navicat 工

  • MySQL数据库表中的约束详解

    目录 MySQL表中的约束(constraint) 约束分类 非空约束 唯一性约束 复合约束 主键约束 自增列-AUTO_INCREMENT 外键约束FOREIGN KEY约束 CHECK约束 DEFAULT约束 MySQL表中的约束(constraint) 为了保证数据的完整性,(数据的精确性和可靠性) SQL规范以约束的方式对表数据进行额外的条件限制,可从以下四个方面进行考虑 实体完整性 域完整性 引用完整性 用户自定义完整性 约束?对表中字段的限制. 约束分类 约束作用字段的个数 单列约束

  • JDBC连接MySQL数据库批量插入数据过程详解

    这篇文章主要介绍了JDBC连接MySQL数据库批量插入数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.读取本地json数据 2.jdbc理解数据库 3.批量插入 maven 引入jar包: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2

随机推荐