MySQL数据库常用命令

706 查看

选择数据库

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的产品

ANDOR的优先级

 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_';

通配符使用技巧

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