这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记
登录命令及信息查询
登录选项
mysql -u root -p -h myserver -P 3306
P 是端口,h 是主机名,u 是用户名
了解数据库和表
展示数据库
show databases;
展示数据库中的表
show tables; 必须先选中数据库才能展示表格
选中某个数据库
use xxx;
展示表中的列
show columns from xxx;
得到的结果是每个字段的名字、数据类型、是否允许 NULL、键信息、默认值以及其他信息
等同方法: describe
也可以使用另一个方法来查看:
describe city;
其他 show 方法
show status;展示广泛的服务器状态信息show grants;展示授予用户的安全权限show errors;和show warnings;展示服务器错误或警告消息
检索数据
select 语句
检索单个列
select column_name from table_name;
从表中检索出一个特定名字的列所有数据。如果没有明确排序查询结果,则返回的顺序没有特殊意义
使用分号 ; 来结束一个命令最保险(有些DBMS 不强求,有些强制,因此最好保持一致)
mysql 不区分大小写,但是为了阅读性一般将命令都大写,而表名和列使用小写。
检索多个列
select co1, co2, co3 from table;
使用逗号来间隔开不同列,最后一个列不用加逗号。
SQL 语句返回的是原始的、没有格式的数据。数据的格式化是显示的问题,在应用程序中规定。一般很少使用实际检索出来的原始数据。
检索所有列
select * from table;
使用通配符 '*' 表示查找所有的列数据
检索值不同的行
select distinct col from table;
表示只返回值不一样的行,DISTINCT 关键字必须放在列名的前面。
DISTINCT 应用于所有列,即列的组合值,只有组合值相同的才会不被列出
限制结果
select col from table limit 5;
限制只返回前面的 5 行。必须放在 table 名后面,可以和 distinct 等组合。
如果参数是 5,5,代表是从第 5 行开始的后面 5 行数据,如果数据范围不存在,则不返回。
即有两个参数,第一个是起点的行,第二个是范围的大小。起点行缺省值为 0。
另一种写法 select col from table limit range offset start;
排序检索数据
排序数据
默认的检索数据,以它在底层表中的出现顺序显示。可能是数据最初添加到表中的顺序,但如果后面进行了数据的更新或删除,顺序会受到 mysql 重用回收存储空间影响。
SQL 语句由子句构成,有些子句是必须的,有些子句是可选的。
order by 子句取一个或多个列的名字,根据此对输出进行排序
select col from table order by col(其他行也行的);
按多个列排序
select prod_name,prod_price,prod_id from table order by prod_price,prod_id;
order by 后面有多个列名,则按照顺序进行比较,只有前面的列名大小相等才会参考后面的列。
指定排序方向
select col from table order by col desc;
默认的排序方式是升序的。为了使用降序排序,必须指定 DESC 关键字。(注意 order by 是子句,DESC 是关键字)。
每一个列都可以单独加上这个关键字,表示这一列排序时是按照 逆序 !
子句是有顺序之分的!order by 必须在 from 后面,limit 必须在 order by 后面。
即 子句可以组合使用达到想要的效果,但是必须注意它们的顺序。