2. 简单的表查询
前言
:one: :mysql环境准备
上一章,我们准备环境:安装数据库+创建数据库+创建用户+授权。
这一章:参考《sql必知必会》chapter4~7
简单的单表查询:导入表+表查询
mysql-client中没有设置的时候,无法table自动补齐。敲起来,太慢。
安装一个mycli ,table补齐,很好用。mycli 官网
sudo apt install mycli[toc]
总结与摘要
首先要有表,表中有内容;书中已经给了脚本,我们采用脚本导入。
表的常规操作:增删改查。
我们这里,仅仅整理下简单的单表查询。
这里不列出具体的语法格式,具体格式,用help select查看。
selet[select 选项] 字段列表[字段别名]  from 数据源
    [where条件字句]
    [limit 字句]
    [order by 字句]导入表
关于表结构与脚本下载,见书上的附录B。或者参看:mysql必知必会脚本
脚本下载:http://www.forta.com/books/0672325675/
# 创建样例表导入脚本
$ mysql -u root - p -D crashcourse < d create.sql
# 或者
mysql> source 脚本的绝对路径表查询
- 查询列:单列,多列,所有列,限定表名 
- 限定:不重复distinct、限制输出行数limit 
- 过滤数据:where 
- 输出样式:按照顺序输出order、按照格式输出 
一条查询语句暂时可以划分成上面四个部分;我们简单举例说道说道。
查询列
查询单列,多列,所有列。
mysql> select prod_id, vend_id, prod_name, prod_price from products;限定表名。
现在查询的是单表。后面多表,子查询的时候,限定表名是很好的。(咋个好法?)
mysel> ELECT products.prod_name FROM products;限定
# 不重复输出;如果指定多列,多列都不系统,才能检索出来
SELECT DISTINCT vend_id from products;
# 输出指定行数;offset和limit,前者表示偏移量,后者表示取前limit条数据
# 从第四行(下表从零开始)开始,输出三行。
mysql> select * from products
            limit 3 offset 4过滤数据
- where单一条件:相等、不相等、大于、小于、值的范围以及NULL值 
- where多个条件:and、or 
- where子查询:in、not、exists 
# SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符--->没事多加括号就好
# 列出价格为10美元(含)以上且由1002或1003制造的所有产品。
mysql> SELECT * FROM products WHERE prod_price>=10 AND (vend_id=1001 OR vend_id=1003)
# 在使用长的合法选项清单时, IN操作符的语法更清楚且更直观。
# IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
mysql> SELECT * FROM products WHERE prod_price>=10 AND vend_id IN (1001,1003)输出样式
检索出的数据并不是以纯粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控制的话,不能(也不应该)依赖该排序顺序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义
参考文章:mysql select 格式化输出
# ORDER BY默认是升序
mysql> SELECT * FROM products 
            WHERE vend_id IN (1001,1003)
            order by prod_price[DESC|ASC],prod_name [DESC|ASC]参考文章
最后更新于
这有帮助吗?