MySQL数据库有一些SQL语句的高级使用方法,其对数据库相关的工作可以可提供不少帮助。
这里先建立一个数据库信息表用于后面的例子:
mysql -uroot -p123123(进入数据库,并且将密码直接在后面输入好,这样可以省事)
show databases; (查看现有的数据库)
create database school;(创建一个名为school的数据库)
use school;(进入名为school的数据库)
show tables;(在当前数据库中查看现有的数据表)
create table info (id int(4) not null primary key auto_increment,name varchar(10) not null ,score decimal(5,2),hobby int(4) not null);(创建一个名为info的数据表,定义字段id为整型4个字节不为空,设置为主键,自增;定义字段name为长字符型10个字节,不为空;定义字段score为浮点型长度为5,小数点末尾2位并且小数点不算在长度内;定义字段为hobby为整型4个字节,不为空)
desc info;(查看info的表结构)
insert into info (name,score,hobby) values (‘zhangsan’,88,1),(‘lisi’,77,2),(‘wangwu’,66,1),(‘zhaoliu’,66,3),(‘tianqi’,90,2);(在info表中插入数据,分别在字段name,score,hobby中插入这些数据,要插入的数据与前面的字段位置对应即可)
select * from info;(查看info表中的数据)
这样一个名为school数据库下的名为info数据表就创建好了,并且在里面添加了数据。
常用查询
1.按关键字排序
·使用ORDER BY语句实现
·排序可针对一个或多个字段
·ASC (升序排序,也是mysql默认的排序方式)
·DESC(降序排序)
·ORDER BY的语法结构:
SELECT column1,column2,… FROM table_name ORDER BY column1,column2,… ASC/DESC;
解释:select 字段 from 表名 order by 字段 asc或者desc;
例:
查询info表中按照score字段降序排序的结果:
select * from info order by score desc;
注:mysql中的默认排序方式是ASC升序排序,不加DESC的话会按照升序排序的结果输出。
查询info表中id,hobby字段,按照hobby降序排序后,再按照id降序排序:
select id,hobby from info order by hobby desc,id desc;
注:当第一个字段出现相同时,第二个字段才有意义,否则第二个字段是没有意义的。
2.对结果进行分组
·使用GROUP BY实现分组
·通常结合聚合函数一起使用
·可以按一个或多个字段对结果进行分组
·GROUP BY的语法结构:
SELECT aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
解释:
select 聚合函数(字段名) from 表名 where(条件) 字段名 条件句 group by 字段名
例:
统计info表中字段名为name的个数按照字段名为hobby进行分组(默认是升序排序,在后面加上desc会变成降序排序):
select count(name),hobby from info group by hobby;
现在插入一条记录:
insert into info (name,score,hobby) values (‘wangba’,50,2);
将group by 与 order by 结合使用:
例:
统计info表中字段名为name的个数按照字段名为hobby进行分组,并且将统计的结果按照统计name的数量进行降序排序:
select count(name),hobby from info group by hobby order by count(name) desc;
3.限制结果条目
·只返回SELECT查询结果的第一行或前几行
·使用LIMIT语句限制条目
·LIMIT的语法结构:
SELECT column1,column2,… FROM table_name LIMIT [offset,] number;
解释:
select 字段 from 表名 limit [位置偏移量,从0开始] 返回记录行的最大数目
例:
查询info表中按照score降序排序的前三行,并且输出id、name、score记录:
select id,name,score from info order by score desc limit 3;
查询info表中按照score降序排序,输出id、name、score记录,从第三个开始的三行记录:
select id,name,score from info order by score desc limit 2,3;
(下图中作了对比)
4.设置别名
·当表的名字较长或者表内某些字段较长时,为了省事以便多次使用相同的表时,可以给字段列或表设置别名,使其简洁明了。
·AS的语法结构:
SELECT column_