博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql常用命令详解
阅读量:6269 次
发布时间:2019-06-22

本文共 13650 字,大约阅读时间需要 45 分钟。

Msql常用命令详解

1、列的约束

primary key(理解成人的身份证号) 主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束, 那么这些列都不允许为空值,并且组合的值不允许重复。 每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL的主键名总是PRIMARY, 当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

AUTO_INCREMENT(自增长)

DEFAULT(默认)

unique代表唯一约束。唯一约束是指定table的列或列组合不能重复,保证数据的唯一性

not null为非空约束,指定某一行的值不能为null。

2、查询操作

A:查询所有学生

注意 ; 不能用* 即使要查询所有列 也需要将列名一一列举

查询所有的学生 mysql> select * from t_people; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade  | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 5 | 马超   | 24 | 二年级 | 18298912898 | 1   | | 6 | 关羽   | 26 | 二年级 | 18388883333 | 1   | | 7 | 赵云   | 25 | 二年级 | 12839819238 | 1   | | 8 | 张飞   | 23 | 二年级 | 18918823784 | 1   | | 9 | 盖伦   | 30 | 三年级 | 18281237812 | 1   | | 10 | 拉克丝 | 28 | 三年级 | 12381239918 | 0   | | 11 | 嘉文   | 32 | 三年级 | 12313212312 | 1   | | 12 | 赵信   | 31 | 三年级 | 12312480384 | 1   | | 13 | 卡尔   | 40 | 四年级 | 12389489324 | 1   | | 14 | 蓝猫   | 43 | 四年级 | 12345823573 | 1   | +----+--------+-----+--------+-------------+-----+ 14 rows in set

B:查询当前学校有哪些班级(去重-----distinct)

mysql> select distinct grade from t_people; +--------+ | grade  | +--------+ | 一年级 | | 二年级 | | 三年级 | | 四年级 | +--------+ 4 rows in set

C:查询每个人三年后的年龄

mysql> select name,age+3 from t_people; +--------+-------+ | name   | age+3 | +--------+-------+ | 张三   |    21 | | 李四   |   22 | | 凯瑟琳 |   21 | | 安妮   |   21 | | 马超   |   27 | | 关羽   |   29 | | 赵云   |   28 | | 张飞   |   26 | | 盖伦   |   33 | | 拉克丝 |   31 | | 嘉文   |   35 | | 赵信   |   34 | | 卡尔   |   43 | | 蓝猫   |   46 | +--------+-------+ 14 rows in set

列是支持运算。(所以在设计某些数据库表的时候有的数据可以通过某几列算出来我们就不去他添加这一列)

D:条件查询 where (大于> 小于< 等于 = )

查询年龄大于25的学生 mysql> select * from t_people where age >25; |  6 | 关羽   |  26 | 二年级 | 18388883333 | 1   | |  9 | 盖伦   |  30 | 三年级 | 18281237812 | 1   | | 10 | 拉克丝 |  28 | 三年级 | 12381239918 | 0   | | 11 | 嘉文   | 32 | 三年级 | 12313212312 | 1   | | 12 | 赵信   | 31 | 三年级 | 12312480384 | 1   | | 13 | 卡尔   | 40 | 四年级 | 12389489324 | 1   | | 14 | 蓝猫   | 43 | 四年级 | 12345823573 | 1   | +----+--------+-----+--------+-------------+-----+ 7 rows in set 查询年龄小于25的学生 mysql> select * from t_people where age <25; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 5 | 马超   | 24 | 二年级 | 18298912898 | 1   | | 8 | 张飞   | 23 | 二年级 | 18918823784 | 1   | +----+--------+-----+--------+-------------+-----+ 6 rows in set 查询年龄等于25的学生 mysql> select * from t_people where age = 25; +----+------+-----+--------+-------------+-----+ | id | name | age | grade | tel         | sex | +----+------+-----+--------+-------------+-----+ | 7 | 赵云 | 25 | 二年级 | 12839819238 | 1   | +----+------+-----+--------+-------------+-----+ 1 row in set

支持大于> 小于< 大于等于>= 小于等于<= 等于 = 不等于 != <>

查询年龄小于等于25的学生 mysql> select * from t_people where age <= 25; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade  | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 5 | 马超   | 24 | 二年级 | 18298912898 | 1   | | 7 | 赵云   | 25 | 二年级 | 12839819238 | 1   | | 8 | 张飞   | 23 | 二年级 | 18918823784 | 1   | +----+--------+-----+--------+-------------+-----+ 7 rows in set 查询年龄不等于25的学生 mysql> select * from t_people where age != 25; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 5 | 马超   | 24 | 二年级 | 18298912898 | 1   | | 6 | 关羽   | 26 | 二年级 | 18388883333 | 1   | | 8 | 张飞   | 23 | 二年级 | 18918823784 | 1   | | 9 | 盖伦   | 30 | 三年级 | 18281237812 | 1   | | 10 | 拉克丝 | 28 | 三年级 | 12381239918 | 0   | | 11 | 嘉文   | 32 | 三年级 | 12313212312 | 1   | | 12 | 赵信   | 31 | 三年级 | 12312480384 | 1   | | 13 | 卡尔   | 40 | 四年级 | 12389489324 | 1   | | 14 | 蓝猫   | 43 | 四年级 | 12345823573 | 1   | +----+--------+-----+--------+-------------+-----+ 13 rows in set 查询年龄不等于25的学生 mysql> select * from t_people where age <>25; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 5 | 马超   | 24 | 二年级 | 18298912898 | 1   | | 6 | 关羽   | 26 | 二年级 | 18388883333 | 1   | | 8 | 张飞   | 23 | 二年级 | 18918823784 | 1   | | 9 | 盖伦   | 30 | 三年级 | 18281237812 | 1   | | 10 | 拉克丝 | 28 | 三年级 | 12381239918 | 0   | | 11 | 嘉文   | 32 | 三年级 | 12313212312 | 1   | | 12 | 赵信   | 31 | 三年级 | 12312480384 | 1   | | 13 | 卡尔   | 40 | 四年级 | 12389489324 | 1   | | 14 | 蓝猫   | 43 | 四年级 | 12345823573 | 1   | +----+--------+-----+--------+-------------+-----+ 13 rows in set

E:E 多条件查询 ( and 并且 or或者 )

查询年龄大于25并且性别是女的学生 mysql> select * from t_people where age > 25 and sex = 0; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade  | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 10 | 拉克丝 | 28 | 三年级 | 12381239918 | 0   | +----+--------+-----+--------+-------------+-----+ 1 row in set 查询年龄大于25或者性别是女的学生 mysql> select * from t_people where age > 25 or sex = 0; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 6 | 关羽   | 26 | 二年级 | 18388883333 | 1   | | 9 | 盖伦   | 30 | 三年级 | 18281237812 | 1   | | 10 | 拉克丝 | 28 | 三年级 | 12381239918 | 0   | | 11 | 嘉文   | 32 | 三年级 | 12313212312 | 1   | | 12 | 赵信   | 31 | 三年级 | 12312480384 | 1   | | 13 | 卡尔   | 40 | 四年级 | 12389489324 | 1   | | 14 | 蓝猫   | 43 | 四年级 | 12345823573 | 1   | +----+--------+-----+--------+-------------+-----+ 9 rows in set

注意:如果条件过于复杂需要添加 ();

F:查询年龄是18|19|35|33的学生

mysql> select * from t_people where age in (18,19,35,33 ); +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade  | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | +----+--------+-----+--------+-------------+-----+ 4 rows in set

G:年龄从小到大排列 order by (升序 asc,降序 desc)

查询所有的学生按年龄升序排序 mysql> select * from t_people order by age asc; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade  | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 8 | 张飞   | 23 | 二年级 | 18918823784 | 1   | | 5 | 马超   | 24 | 二年级 | 18298912898 | 1   | | 7 | 赵云   | 25 | 二年级 | 12839819238 | 1   | | 6 | 关羽   | 26 | 二年级 | 18388883333 | 1   | | 10 | 拉克丝 | 28 | 三年级 | 12381239918 | 0   | | 9 | 盖伦   | 30 | 三年级 | 18281237812 | 1   | | 12 | 赵信   | 31 | 三年级 | 12312480384 | 1   | | 11 | 嘉文   | 32 | 三年级 | 12313212312 | 1   | | 13 | 卡尔   | 40 | 四年级 | 12389489324 | 1   | | 14 | 蓝猫   | 43 | 四年级 | 12345823573 | 1   | +----+--------+-----+--------+-------------+-----+ 14 rows in set 查询所有的学生按年龄降序排序 mysql> select * from t_people order by age desc ; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 14 | 蓝猫   | 43 | 四年级 | 12345823573 | 1   | | 13 | 卡尔   | 40 | 四年级 | 12389489324 | 1   | | 11 | 嘉文   | 32 | 三年级 | 12313212312 | 1   | | 12 | 赵信   | 31 | 三年级 | 12312480384 | 1   | | 9 | 盖伦   | 30 | 三年级 | 18281237812 | 1   | | 10 | 拉克丝 | 28 | 三年级 | 12381239918 | 0   | | 6 | 关羽   | 26 | 二年级 | 18388883333 | 1   | | 7 | 赵云   | 25 | 二年级 | 12839819238 | 1   | | 5 | 马超   | 24 | 二年级 | 18298912898 | 1   | | 8 | 张飞   | 23 | 二年级 | 18918823784 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 4 | 安妮   | 18 | 一年级 | 17766665555 | 0   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | +----+--------+-----+--------+-------------+-----+ 14 rows in set

H :分组查询和聚合函数

聚合函数(max最大,min最小,avg平均,sum求和,count数量)

查询年龄最大的学生 mysql> select id,name,max(age),grade,tel,sex from t_people; +----+------+----------+--------+-------------+-----+ | id | name | max(age) | grade  | tel         | sex | +----+------+----------+--------+-------------+-----+ | 1 | 张三 |       43 | 一年级 | 18989898899 | 1   | +----+------+----------+--------+-------------+-----+ 1 row in set 查询年龄最小的学生 mysql> select id,name,min(age),grade,tel,sex from t_people; +----+------+----------+--------+-------------+-----+ | id | name | min(age) | grade | tel         | sex | +----+------+----------+--------+-------------+-----+ | 1 | 张三 |       18 | 一年级 | 18989898899 | 1   | +----+------+----------+--------+-------------+-----+ 1 row in set 查询所有学生的平均年龄 mysql> select avg(age) from t_people; +----------+ | avg(age) | +----------+ | 26.7857 | +----------+ 1 row in set 求所有学生年龄的总和 mysql> select sum(age) from t_people; +----------+ | sum(age) | +----------+ | 375     | +----------+ 1 row in set 查询每个班的有几个人 mysql> select grade,count(*) from t_people group  by grade; +--------+----------+ | grade | count(*) | +--------+----------+ | 一年级 |       4 | | 三年级 |       4 | | 二年级 |       4 | | 四年级 |       2 | +--------+----------+ 4 rows in set 查询每个性别的平均年龄 mysql> select sex,avg(age) from t_people group by sex; +-----+----------+ | sex | avg(age) | +-----+----------+ | 0   | 21.3333 | | 1   | 28.2727 | +-----+----------+ 2 rows in set 查询每个年级的平均年龄 mysql> select grade,avg(age) from t_people group by       grade; +--------+----------+ | grade | avg(age) | +--------+----------+ | 一年级 | 18.2500 | | 三年级 | 30.2500 | | 二年级 | 24.5000 | | 四年级 | 41.5000 | +--------+----------+ 4 rows in set 查询平均年龄大于20的班级平均年龄 mysql> select grade,avg(age) from t_people group by grade having avg(age)>20; +--------+----------+ | grade | avg(age) | +--------+----------+ | 三年级 | 30.2500 | | 二年级 | 24.5000 | | 四年级 | 41.5000 | +--------+----------+ 3 rows in set having 相当于给分组查询加限定条件 注意 和聚合一起使用

注意:分组查询( groupby )一般与聚合函数一起使用。

I:模糊查询

查询名字是张开头的学生信息 mysql> select * from t_people where name like '张%'; +----+------+-----+--------+-------------+-----+ | id | name | age | grade  | tel         | sex | +----+------+-----+--------+-------------+-----+ | 1 | 张三 | 18 | 一年级 | 18989898899 | 1   | | 8 | 张飞 | 23 | 二年级 | 18918823784 | 1   | +----+------+-----+--------+-------------+-----+ 2 rows in set 查询名字中带三的学生的信息 mysql> select * from t_people where name like '%三 %'; +----+------+-----+--------+-------------+-----+ | id | name | age | grade | tel         | sex | +----+------+-----+--------+-------------+-----+ | 1 | 张三 | 18 | 一年级 | 18989898899 | 1   | +----+------+-----+--------+-------------+-----+ 1 row in set 查询名字有两个字,其中一个是张的学生的信息 mysql> select * from t_people where name like '张_ '; +----+------+-----+--------+-------------+-----+ | id | name | age | grade | tel         | sex | +----+------+-----+--------+-------------+-----+ | 1 | 张三 | 18 | 一年级 | 18989898899 | 1   | | 8 | 张飞 | 23 | 二年级 | 18918823784 | 1   | +----+------+-----+--------+-------------+-----+ 2 rows in set

J:分页查询

App中 数据量过大 无法一次展示完 都进行分页展示

分页一般有两种模式

A 方案:前台控制分页(js) 将数据全部查询出来 返回值前台网页,但是展示的时候 通过js 控制只展示某一页的内容

B 方法:数据库控制分页(SQL) 在数据查询阶段 就根据需要展示的页数将数据从数据库中(部分查询只查询其中一页的数据)查询出来 ,展示到前端网页。

思考: 哪种方案好?

A 查询次数少 效率高 但是 一次性查询的数据不能过大否则内存不够。

B 查询次数多 效率一般 但是没有内容不够

需求 例如: 查询班级信息、查询2019年淘宝全年销售记录。

查询三条数据 mysql> select * from t_people limit 3; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade  | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | +----+--------+-----+--------+-------------+-----+ 3 rows in set 从索引为0开始查询,查询三条数据 mysql> select * from t_people limit 0,3; +----+--------+-----+--------+-------------+-----+ | id | name   | age | grade | tel         | sex | +----+--------+-----+--------+-------------+-----+ | 1 | 张三   | 18 | 一年级 | 18989898899 | 1   | | 2 | 李四   | 19 | 一年级 | 18899998888 | 1   | | 3 | 凯瑟琳 | 18 | 一年级 | 18877776666 | 0   | +----+--------+-----+--------+-------------+-----+ 3 rows in set 从索引为3开始查询,查询三条数据 mysql> select * from t_people limit 3,3; +----+------+-----+--------+-------------+-----+ | id | name | age | grade | tel         | sex | +----+------+-----+--------+-------------+-----+ | 4 | 安妮 | 18 | 一年级 | 17766665555 | 0   | | 5 | 马超 | 24 | 二年级 | 18298912898 | 1   | | 6 | 关羽 | 26 | 二年级 | 18388883333 | 1   | +----+------+-----+--------+-------------+-----+ 3 rows in set limit   索引,数量

我们一般都是查询第几页 而limit 是 从索引开始查询。

请问 :

第一页 每页5 limit 0,5

第2页 每页5 limit 5,5

第3页 每页5 limit 10,5

第4页 每页5 limit 15,5

第n页 每页x limit (n-1)x , x

一共有103条数据 每页显示6条 请问 一共多少页? 18页

一共有count条数据 每页显示x条 请问 一共多少页?

(count+x-1)/x

转载于:https://www.cnblogs.com/dmdy/p/11005955.html

你可能感兴趣的文章
Hadoop学习笔记——WordCount
查看>>
Unity应用架构设计(4)——设计可复用的SubView和SubViewModel(Part 1)
查看>>
Java-Spring-获取Request,Response对象
查看>>
opencv项目报错_pFirstBlock==pHead解决办法
查看>>
MySQL日志
查看>>
Oracle性能优化之Oracle里的执行计划
查看>>
电脑如何连接远程服务器?听语音
查看>>
使用Xcode 查看objective-C的汇编代码
查看>>
Vue.js——60分钟快速入门
查看>>
设计模式 - 模板方法模式(template method pattern) 具体解释
查看>>
mysql判断一个字符串是否包含某子串 【转】
查看>>
a bad dream
查看>>
FD_CLOEXEC用法及原因_转
查看>>
element UI 的学习一,路由跳转
查看>>
RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
查看>>
Spring JavaBean属性值的注入方式( 属性注入, 特殊字符注入 <![CDATA[ 带有特殊字符的值 ]]> , 构造器注入 )...
查看>>
【Linux】Linux下统计当前文件夹下的文件个数、目录个数
查看>>
Hibernate_14_数据连接池的使用
查看>>
Codeforces Round #271 (Div. 2) D. Flowers (递推 预处理)
查看>>
jacky自问自答-java并发编程
查看>>