MySQL数据库(2)----检索信息
SELECT 语句的简化语法如下:
SELECT what to retrive
FROM table or tables
WHERE conditions that data must satisfy;
1.在写SELECT语句的时候,需要先指定检索的内容,然后再加上一些可选的子句。
(i) FROM 子句通常是不可少的,但当不需要给出表名时,可以省略它。例如,下面这条查询语句只显示一些表达式的值。这些值计算并未涉及任何表,因此这里不需要FROM子句:
mysql> SELECT +,'Hello, World!',VERSION(),USER();
+-----+---------------+-----------+----------------+
| + | Hello, World! | VERSION() | USER() |
+-----+---------------+-----------+----------------+
| | Hello, World! | 5.6. | root@localhost |
+-----+---------------+-----------+----------------+
row in set (0.00 sec)
(ii) 当的确需要FROM子句来指定要从哪个表检索数据时,还需要指明要查看哪些列。
SELECT语句最常见的一种形式是使用一个星号(*) 作为列说明符,代表"所有列"。下面这条查询语句将显示 student 表里的所有列:
mysql> SELECT * FROM student;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Lily | F | |
| Lucy | F | |
| Travis | M | |
| Steve | M | |
+--------+-----+------------+
rows in set (0.00 sec)
(iii)也可以把自己想要查看的那些列的名字列出来。例如,只想查看学生名字,则可以这样做:
mysql> SELECT name FROM student;
+--------+
| name |
+--------+
| Jim |
| Tom |
| Lily |
| Lucy |
| Travis |
| Steve |
+--------+
rows in set (0.00 sec)
(iv) 要列出多个列名,那么需要使用逗号把它们分隔开。下面这条语句等价于 SELECT * FROM student 语句,但它把各列的名字明确地列了出来:
mysql> SELECT name,sex,student_id FROM student;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Lily | F | |
| Lucy | F | |
| Travis | M | |
| Steve | M | |
+--------+-----+------------+
rows in set (0.00 sec)
也可以按照任意顺序列出列名:
mysql> SELECT sex,student_id,name FROM student;
+-----+------------+--------+
| sex | student_id | name |
+-----+------------+--------+
| M | | Jim |
| M | | Tom |
| F | | Lily |
| F | | Lucy |
| M | | Travis |
| M | | Steve |
+-----+------------+--------+
rows in set (0.00 sec)
2. 指定检索条件
(i) 要想限制SELECT语句检索出来的行数,可以使用WHERE 子句,指定列值所必须满足的检索条件。例如,可以搜索某个范围内的数值:
mysql> SELECT * FROM student WHERE student_id > ;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Lucy | F | |
| Travis | M | |
| Steve | M | |
+--------+-----+------------+
rows in set (0.00 sec)
(ii)可以查找包含字符数据的字符串值。对于默认的字符集和排序方式,字符串的比较操作通常不区分大小写:
mysql> SELECT * FROM student WHERE sex='M';
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Travis | M | |
| Steve | M | |
+--------+-----+------------+
rows in set (0.00 sec)
(iii) 还可以查找组合值
mysql> SELECT * FROM student WHERE sex='M' OR student_id > ;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Lucy | F | |
| Travis | M | |
| Steve | M | |
+--------+-----+------------+
rows in set (0.00 sec)
WHERE 子句里的表达式允许使用算术运算符、比较运算符和逻辑运算符。在表达式里还可以使用括号。在运算时,可以使用常量、表列和函数调用。
常用运算符如下:
| 运算符 | 含义 |
| + | 加法 |
| - | 减法 |
| * | 乘法 |
| / | 除法 |
| DIV | 整除 |
| % | 模运算(除法余数) |
| < | 小于 |
| <= | 小于等于(不大于) |
| = | 等于 |
| <=> | 等于(可用于NULL值) |
| <>或!= | 不等于 |
| >= | 大于等于(不小于) |
| > | 大于 |
| AND | 逻辑与 |
| OR | 逻辑或 |
| XOR | 逻辑异或 |
| NOT | 逻辑非 |
(iv)使用 IN() 运算符
下面这两条语句效果等价:
mysql> SELECT * FROM student WHERE student_id= or student_id=;
+------+-----+------------+
| name | sex | student_id |
+------+-----+------------+
| Lily | F | |
| Lucy | F | |
+------+-----+------------+
rows in set (0.00 sec) mysql> SELECT * FROM student WHERE student_id IN(,);
+------+-----+------------+
| name | sex | student_id |
+------+-----+------------+
| Lily | F | |
| Lucy | F | |
+------+-----+------------+
rows in set (0.00 sec)
(v) NUL值
NULL值很特殊。其含义是“无值”或“未知值”,所以不能采用两个“已知值”的比较方式,将它与“已知值”进行比较。如果试图将NULL与常规的算术比较运算符一起使用,那么其结果将是未定的(undefined):
mysql> SELECT NULL<,NULL=,NULL<> ,NULL> ;
+--------+--------+----------+---------+
| NULL< | NULL= | NULL<> | NULL> |
+--------+--------+----------+---------+
| NULL | NULL | NULL | NULL |
+--------+--------+----------+---------+
row in set (0.01 sec)
事实上,也不能让NULL与其自身进行比较,因为两个“未知值”的比较结果是无法确定的:
mysql> SELECT NULL=NULL,NULL<>NULL;
+-----------+------------+
| NULL=NULL | NULL<>NULL |
+-----------+------------+
| NULL | NULL |
+-----------+------------+
row in set (0.00 sec)
如果需要测试某个值和NULL值是否相等,那么必须使用 IS NULL 或 IS NOT NULL,而不能使用 = , <> 或者 !=。
MySQL特有的 <=> 比较运算符可以用于 NULL 值与 NULL 值的比较:
mysql> SELECT NULL <=> NULL;
+---------------+
| NULL <=> NULL |
+---------------+
| |
+---------------+
row in set (0.00 sec)
3. 对查询结果进行排序
(i)使用 ORDER BY 子句进行排序:
mysql> SELECT * FROM student ORDER BY name;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Lily | F | |
| Lucy | F | |
| Steve | M | |
| Tom | M | |
| Travis | M | |
+--------+-----+------------+
(ii) ORDER BY 子句的排序方式是升序排列。在其中的列名后面加上关键字 ASC 或 DESC,可以指定是按照升序排列还是按照降序排列。如:
mysql> SELECT * FROM student ORDER BY name DESC;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Travis | M | |
| Tom | M | |
| Steve | M | |
| Lucy | F | |
| Lily | F | |
| Jim | M | |
+--------+-----+------------+
(iii) 可以对多列进行排列,而且每一列单独地按升序或降序排列:
mysql> SELECT * FROM student ORDER BY name DESC, student_id ASC;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Travis | M | |
| Tom | M | |
| Steve | M | |
| Lucy | F | |
| Lily | F | |
| Jim | M | |
+--------+-----+------------+
4.限制查询结果
LIMIT n 子句限制输出的行数:
mysql> SELECT * FROM student ORDER BY name ASC LIMIT ;
+------+-----+------------+
| name | sex | student_id |
+------+-----+------------+
| Jim | M | |
| Lily | F | |
| Lucy | F | |
+------+-----+------------+
LIMIT还允许从查询结果的中间抽出部分行。此时需要指定两个值:第一个,给出从查询结果的开头部分跳过的行数目;第二个,需要返回的行数目:
mysql> SELECT * FROM student LIMIT ,;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Lucy | F | |
| Travis | M | |
+--------+-----+------------+
如果想从某个表里随机抽取一行或几行,那么可以联合使用 LIMIT 子句和 ORDER BY RAND() 子句:
mysql> SELECT * FROM student ORDER BY RAND() LIMIT ;
+------+-----+------------+
| name | sex | student_id |
+------+-----+------------+
| Lucy | F | |
+------+-----+------------+
row in set (0.00 sec) mysql> SELECT * FROM student ORDER BY RAND() LIMIT ;
+------+-----+------------+
| name | sex | student_id |
+------+-----+------------+
| Tom | M | |
+------+-----+------------+
row in set (0.00 sec)
可以看到两次查询结果不同,这体现了随机性。
MySQL数据库(2)----检索信息的更多相关文章
- 将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成
将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成. 代码比较乱,但是方法还是对的,大家又需要的选择看,希望对博友 有帮助,欢迎留言分享! public class s ...
- 案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/118685521 长期持续带来更多项目与技术分享 ...
- 查询mysql数据库表的信息(表大小、数据大小、索引大小)
select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA='databasename' ...
- 查看连接MYSQL数据库的IP信息
要统计数据库的连接数,我们通常情况下是统计总数,细分到每个ip地址: 方法一: ) as ip , count(*) from information_schema.processlist group ...
- CentOS6.8下MySQL数据库版本信息查看
方法1:使用mysql -v命令查看: [root@yeebian mysql]# mysql -V mysql Ver 14.14 Distrib 5.1.73, for redhat-linux- ...
- MySql数据库与JDBC编程
JDBC -- Java Database Connectivity,即Java数据库连接,通过使用JDBC就可以使用同一种API访问不同的数据库 SQL语句基础(SQL结构化查询语言) 能完成的任务 ...
- MySQL数据库和InnoDB存储引擎文件
参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...
- 查看mysql数据库版本方法总结
当你接手某个mysql数据库管理时,首先你需要查看维护的mysql数据库版本:当开发人员问你mysql数据库版本时,而恰好你又遗忘了,那么此时也需要去查看mysql数据库的版本............ ...
- 三种方法查看MySQL数据库的版本
1.使用-V参数 首先我们想到的肯定就是查看版本号的参数命令,参数为-V(大写字母)或者--version 使用方法: D:\xampp\mysql\bin>mysql -V 或者 D:\xam ...
随机推荐
- java集合线程安全测试
package com.cxy; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import ...
- JavaWeb学习笔记(二十二)—— 过滤器filter
一.什么是过滤器 过滤器filter是JavaWeb三大组件之一,它与Servlet很相似!不过过滤器是用来拦截请求的,而不是处理请求的.WEB开发人员通过Filter技术,对web服务器管理的所有w ...
- 高阶篇:1)竞品(标杆产品)的拆解和分析benchmarking
本章目的:从标杆产品(竞品)逆向推出装配.制造.设计流程及难点. 1.竞品分析的目的 ①为企业制定市场准确的产品开发目标: ②为企止提供产品开发全流程性能结构对标参考数据指标: ③最优性价比务件下,为 ...
- CF1067D. Computer Game(斜率优化+倍增+矩阵乘法)
题目链接 https://codeforces.com/contest/1067/problem/D 题解 首先,如果我们获得了一次升级机会,我们一定希望升级 \(b_i \times p_i\) 最 ...
- NOI Linux学习
打开终端: cd (目录名)//进入该目录的终端 cd ..//退出该目录,返回上一层. 修改用户名 密码: 修改密码: passwd//直接修改root密码 passwd (用户名)//修改该用户的 ...
- sql2008R2新建链接服务器。
1:用sql新建链接服务器对象: /****** Object: LinkedServer [pad] Script Date: 10/23/2018 15:47:45 ******/ EXEC ma ...
- 【Python】端口扫描脚本
0x00 使用模块简介 1.optparse模块 选项分析器,可用来生成脚本使用说明文档,基本使用如下: import optparse #程序使用说明 usage="%prog -H ...
- idea使用时,部分jdk的jar包(tool.jar com.sun.javadoc) 无法引入-gradle处理方案
gradle 增加配置 def jdkHome = System.getenv("JAVA_HOME") dependencies { compile files("$j ...
- http请求全过程
第一步:浏览器生成http请求信息(第五层) 1.分解url 当用户输入网址时,浏览器会以一定的规则分解网址, 以 http://www.cemabenteng.com/dir/index.html ...
- 批处理 进行svn代码拉取,vs编译,dotfuscator混淆
Dotfuscator的使用:https://www.cnblogs.com/aitong/p/10684004.html 从拉取代码,编译到最后的混淆步骤很多.这时就可以使用批处理来进行自动化. 用 ...