选择数据库
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_';
通配符使用技巧
- 不过过渡使用通配符,如果其他的操作符能达到相同的目的,应该使用其他的操作符。
- 在确实需要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处。把通配符置于搜索模式的开始出,搜索起来是最慢的。
- 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。