选择数据库
use 数据库名
显示所有的数据库
show databases; //注意是databases不是database
显示指定了数据库中所有的表
show tables
显示指定表所有的列信息
show columns from 表的名称 (等效 desc 标的名称)
显示指定表所有的列信息(快捷方式)
describe 标的名称 (ps:describe可用desc缩写代替)
显示服务器的状态信息
show status
显示创建特定数据、表的MySQL语句
show create database 数据库名称
show create table 表的名称
显示授权用户安装的权限
show grants
显示服务器错误和警告信息
show errors (显示服务器错误)
show warnings (显示服务器警告)
进一步查看所有可用的show
命令
help show
SELECT
语句常用语法
检索单个列
select prod_name from products;
检索多个列
select prod_id,prod_name,prod_price from products;
检索所有的列
select * from products;
检索不同的行
select distinct vend_id from products;
配合limit
限制结果的输出(一般用于做分页处理)
select prod_name from products limit 5; //指定返回的行数不多于5行。
select prod_name from products limit 5,5; //从第5行开始的后面5行数据。第一个数表示开始的位置,第二个数表示要检索的行数。
PS:检索出来的第一行为行0而不是行1,因此,limit1,1将检索出第二行而不是第一行。
PS:如果没有足够的行数,MySQL将只返回他能返回的那么多行数。
ORDER BY
常用语句
单个列排序
select prod_name from products order by prod_name //按字母顺序进行排序
多个列排序
select prod_id, prod_price, prod_name from products order by prod_price,
prod_name; //首先按价格排序,然后按名称排序。
指定排序方向
select prod_id, prod_price from products order by prod_price desc; //按
价格降序排序
select prod_id, prod_price, prod_name from products order by prod_price desc, prod_name; //价格降序排序,产品名默认升序排序
select prod_price from products order by prod_price limit 1; //结合limit找出价格最贵的物品
使用where
来进行数据过滤
使用where子句
select prod_price, prod_name from products where prod_price = 2.50 //过滤出prod_price值为2.50的行。
结合order by
select prod_price, prod_name from products where prod_price = 2.50 order by prod_name //注意order by的顺序在where自己的后面
where
子句操作符
操作符 | 说明 |
---|---|
= | 等于 |
不等于 | |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
BETWEEN | 在指定的两个值之间 |
PS:MySQL执行匹配时默认不区分大小写,所以fuses与FUSES匹配。
PS:如果将值与字符串类型比较,则需要用单引号或者双引号包含起来,与数值比较则不需要使用引号。
PS:使用BETWEEN
操作符时,需要提供开始值和结束值,且两个值需要用AND
关键字分割,举例如下所示:
select prod_price from products where prod_price BETWEEN 5 and 10;
空值检查
select prod_name from products where prod_price is null;
高级数据过滤
AND
操作符
select prod_id,prod_price from products where vend_id = 1003 and prod_price <= 10; //检索出vend_id为1003且价格小于10的产品
OR
操作符
select prod_id,prod_price from products where vend_id = 1003 or prod_price <= 10; //检索出vend_id为1003或价格小于10的产品
AND
和OR
的优先级
select prod_id,prod_price from products where vend_id = 1003 or vend_id = 1002 and prod_price >= 10; //SQL在处理OR操作符前,优先处理`AND`操作符.为了避免困扰,考虑用优先级更高的"()"
select prod_id,prod_price from products where (vend_id = 1003 or vend_id = 1002) and prod_price >= 10;
IN
操作符
select prod_id,prod_price from products where vend_id in (1002,1003) ;//实际上`IN`操作符完成的功能与`OR`相同。 那为什么要使用`IN`操作符呢?主要是以下几个方面。
在使用长的合法选项清单时,in操作符的语法更清楚且更直观。
在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。
in操作符一般比OR操作符执行的更快。
IN最大的优点是可以包含其他的SELECT语句,使得能够更动态地建立WHERE子句。
NOT
操作符
select prod_id,prod_price from products where vend_id not in(1002,1003)
PS:MySQL支持使用NOT对IN、BETWEEN和EXISTS子句取反。
用通配符进行过滤
百分号(%)通配符
%
表示任何字符出现任意次数。示例如下:
select prod_id, prod_name from products where prod_name like 'jet%'; //根据MySQL的配置方式,搜索可以是区分大小写的。
PS: 通配符可在搜索模式中任意位置使用,并且可以使用多个通配符。
下划线(-)通配符
-
只匹配单个字符而不是多个字符。
select prod_id, prod_name from products where prod_name like 'jet_';
通配符使用技巧
- 不过过渡使用通配符,如果其他的操作符能达到相同的目的,应该使用其他的操作符。
- 在确实需要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处。把通配符置于搜索模式的开始出,搜索起来是最慢的。
- 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。