文章目录

  • MySQL语句最全详解
    • 一、常见sql语句用法与演示
      • 前置条件
      • 连接命令
    • 1.常用数据库类型
    • 2.数据约束(数据表中)
    • 3.数据库的备份和还原
    • 二、操作数据库(操作数据库之前要通过命令行工具连接到数据库)
      • 1.常见数据库操作命令
      • 2.操作数据表
      • 3.删除数据库表
      • 4.在数据表中添加一行/多行数据
      • 5.简单查询
      • 6.修改数据
      • 7.删除数据
      • 8.数据查询
      • 9.起别名
      • 10.去重
      • 11.条件查询
        • 比较运算
        • 逻辑运算
        • 模糊查询
        • 范围查询
        • 空判断
      • 12.排序
      • 13.分组和聚合
      • 14.分组查询
      • 15.分页查询
      • 16.连接查询
    • 三、SQL语句书写顺序和执行顺序
      • 1.书写顺序
      • 2.执行顺序
    • 四、后续在更新进阶

MySQL语句最全详解

一、常见sql语句用法与演示

前置条件

 注释:--注释说明快捷注释键:ctrl +/
1、确定mysql数据库的ip地址:ifgonfig
2、确认mysql数据库服务是否开启:netstat -anptu | grep 端口号

连接命令

mysql -h数据库ip -P端口号 -u数据库登录用户 -p数据库登录密码
注:连本机无需写-h和-P

1.常用数据库类型

整型:int    --有符号(有负数)无符号(整数)
小数:decimal
例:decimal(5,2)--表示该字段可存5位数,2位小数
字符串:varchar  字母/中文/点
例:varchar(3)varchar('数学')

2.数据约束(数据表中)

主键(primary key):物理上存储的顺序
非空(not null):此字段不允许填写空值
唯一(unique):此字段的值不允许重复
默认值(default):当不填写此值时会使用默认值,填写时以填写为准
外键(foreign key):维护两个表之间的联系

3.数据库的备份和还原

备份:选中数据库  右键  转储SQL文件  结构和数据  存入电脑
还原:选中数据库  右键  执行SQL文件  选择电脑中的备份sql文件  开始  选中表  刷新

二、操作数据库(操作数据库之前要通过命令行工具连接到数据库)

1.常见数据库操作命令

查看所有数据库:show databases;(少写了可以后面补)
使用数据库:use数据库名;
查看当前使用的数据库:select database();
创建数据库:creat database 数据库名 charset=utf8;
删除数据库:drop database 数据库名;

2.操作数据表

(操作数据表之前要先通过use打开对应的数据库)
常见数据表操作命令:查看当前数据库所有的表:show tables;
查看表结构:desc表名;
查看表的创建语句:show creat table 表名;
创建数据库表:格式:creat table 表名(
字段名1 类型 约束,
字段名2 类型 约束,
...            ...      ...
);例:
创建学生表,要求:年龄姓名(长度为10),年龄,身高(保留2位小数)
creat table students(
id int unsigned primary key auto_increment,
name varchar(20),
age int unsigned,
height decimal(5,2)
);

3.删除数据库表

drop table 表名;                                           注释:--注释说明
drop table if exists 表名;                                快捷注释键:ctrl +/

4.在数据表中添加一行/多行数据

格式如下: --英文逗号
insert into 表名 values (...),(...) 例:(0,'小明',22,168)
insert into 表名 (字段1,字段2,...)values(值1,值2,...)(值1,值2,...)

5.简单查询

select *from 表名;--(查询所有字段)

6.修改数据

格式:
update 表名 set 字段名1=值1,字段名2=值2 ...where 条件
例:
修改id为5的学生数据,姓名改为小红,年龄改为20岁
update students set name ='小红',age=20 where id =5

7.删除数据

delete from 表名 where 条件(物理删除,不用)
例:delete from students where id=1; --删除第一行
常用逻辑删除:通过设定一个字段来标识当前记录已经删除
truncate table 表名--(只删数据)
drop table 表名 --(删除所有数据和表结构)
说明:
delete --删除数据时,若新增数据,新增数据的id是删除的id号的后一个
truncate --删除数据后,若新增数据,是从id=1开始的

8.数据查询

查询部分字段数据  格式:
select 字段1,字段2,...from 表名;

9.起别名

select 别名.字段1,别名.字段2,...from 表名 as 别名  --(表起别名)
select 字段1 as 别名1,字段2 as 别名2,...from 表名   --(字段起别名)

10.去重

格式:
select distinct 字段1,...from 表名

11.条件查询

格式:select 字段1,字段2,...from 表名 where 条件;
说明:where 支持多种运算符进行条件处理
比较运算:=、>、>=、<、<=、!=
逻辑运算:and、or、not
模糊查询:关键字like、匹配任意多个字符%、 匹配一个任意字符:-
范围查询:连续范围内between、非连续范围in
空判断:判断为空is null、为非空is not null

比较运算

例:
1、查询小豪年龄:
select age from 表名 where name ='小豪';
2、查询20岁以下学生:
select *from 表名 where age <20;
3、查询家乡不在新疆的学生:
select * from 表名 where hometown !='新疆';

逻辑运算

 例 :1、查询年龄小于20的女同学:select * from 表名 where age <20 and sex ='女';
2、查询女学生或1班的学生:
select * from 表名 where class=‘1班’ or sex ='女';
3、查询非新疆的学生:
select * from 表名 where not hometown='新疆';

模糊查询

例:
1、查询姓孙的学生:
select * from 表名 where name like '孙%';
2、查询姓孙且名字是一个字的学生:
select * from 表名 where name like '孙_';
3、查询姓名以乔结尾的学生:
select * from 表名 where name like '%乔';
4、查询姓名中包含白的学生:
select * from 表名 where name like '%白%';

范围查询

例:
1、查询家乡是北京/南京/新疆的学生:
select * from 表名 where hometown in ('北京','南京','新疆');
2、查询年龄为18-20岁的学生:
select * from 表名 where age between 18 and 20;

空判断

例:
1、查询没有填写身份证的学生:
select * from 表名 where cad is null;
2、查询填写了身份证的学生:
select * from 表名 where cad is not null;

12.排序

格式:
select * from 表名 order by 字段名1 ase/desc,字段名2 ase/desc,...;
说明:ase:升序(默认可以不写)  desc:降序
例:查询所有学生信息,按年龄从小到大排序,年龄相同时,再按学号从小到大排:
select * from 表名 order by age,studentsNo;

13.分组和聚合

聚合函数作用:方便进行数据统计       --注!不能在where中使用!!!
count()--查询总记录数
例:
1、查询学生总数:
select count(*)from students;
2、查询1班年龄小于18岁的同学有几个:
select count(*)from students where class='1班' and age<18;
max(字段名):--查询最大值
例:
查询女生的最大年龄:
select max(age)from st where sex='女';
min(字段名):--查询最小值
sum(字段名):--求和
avg(字段名):--求平均值
例:
1、查询所有学生的最大年龄、最小年龄、平均年龄:
select max(age),min(age),avg(age)from students;
2、查询1班年龄小于18岁的同学有几个:
select count(*)from st where class='1班' and age<18;

14.分组查询

作用:按照字段分组,此字段相同的数据会放到同一个组中
目的:使用聚合函数,对每一组的数据进行统计
格式:
select 字段1,字段2,聚合函数...from 表名 group by 字段1,字段2,...;
例:
1、查询各种性别的人数:
select sex,count(*)from st group by sex;
2、查询每个班级中各种性别的人数:
select class,sex,count(*)from st group by class,sex;
3、查询各个性别中的总人数、最大年龄、平均年龄:
select sex,count(*),max(age),avg(age)from st group by class,sex;
注!分组后再过滤不能用where,要用having
区别:
1、where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
2、having是对group by的结果进行筛选
3、having后面的条件可以用聚合函数,where不能
例:
1、查询每个班级男生的总数:
select class,sex,count(*)from st group by class,sex having sex='男';
2、查询所有班级中不同性别的记录数大于1的信息:
select class,sex,count(*)from st group by class,sex having count(*)>1;

15.分页查询

作用:用来获取一部分的数据/用来分页
格式:select * from 表名 limit start,count;
说明:
1、从start开始,获取count条数据
2、start索引从0开始
例:
1、select * from 表名 limit 0,5;--从第1条到第5条
2、select * from 表名 limit 1,5;--从第2条到第6条(若总共4条,则从第2条到第4条)
如何实现分页:
select * from st limit(n-1)*m,m; (分页公式)
n:表示显示第几页的数据    m:表示每页显示多少条数据

16.连接查询

内连接:连接两个表时,取得是两个表中都存在的数据
格式:
select * from 表1 inner join 表2 on 表1.例1=表2.例2;
或
select * from 表1 ,表2 where 表1.例1=表2.例2;
补充:写表名时可以改名,如students可以写成:
students as stu,之后就可用stu代替表名(as可省略)
例:
1、查询学生信息及学生的课程对应的成绩:
select * from students inner join scores on stu.studentNo=sco.studentsNo
inner join courses on sco.courseNo=courses.courseNo;
2、查询小豪的数据库成绩,要求显示姓名、课程号、成绩:
select students.name,courses.name,scores.score
from studentsstu
inner join scoressco
on stu.studentNo=sco.studentsN
inner join courses
on sco.courseNo=courses.courseNo
where students.name='小豪';
3、查询所有学生的数据库成绩,要求显示姓名、课程号、成绩:
select students.name,courses.name,scores.score
from students stu
inner join scoressco
on stu.studentNo=sco.studentsN
inner join courses
on sco.courseNo=courses.courseNo;
4、查询男生中最高成绩,要求显示姓名、课程号、成绩:
select students.name,courses.name,scores.score
from students stu
inner join scoressco
on stu.studentNo=sco.studentsN
inner join courses
on sco.courseNo=courses.courseNo
where students .sex='男'
order by scores.score
desc limit 0,1;

三、SQL语句书写顺序和执行顺序

1.书写顺序

​ select->distinct->from->join->on->where->group by->having->order by->limit

2.执行顺序

from->on->join->where->group by(开始使用select中的别名,后面的语句中都可以使用别名)->sum、count、max、avg->having->select->distinct->order by->limit

四、后续在更新进阶

MySQL语句最全详解相关推荐

  1. mysql查询语句详解_基于mysql查询语句的使用详解

    1> 查询数据表除了前三条以外的数据. 起初我想到的是这条语句 SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ...

  2. mysql order by 语句_Mysql优化order by语句的方法详解

    本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...

  3. mysql数据库select语句用法_mysql学习笔记之完整的select语句用法实例详解

    本文实例讲述了mysql学习笔记之完整的select语句用法.分享给大家供大家参考,具体如下: 本文内容: 完整语法 去重选项 字段别名 数据源 where group by having order ...

  4. MySQL之SQL优化详解(二)

    目录 MySQL之SQL优化详解(二) 1. SQL的执行顺序 1.1 手写顺序 1.2 机读顺序 2. 七种join 3. 索引 3.1 索引初探 3.2 索引分类 3.3 建与不建 4. 性能分析 ...

  5. MySQL高级之explain详解

    MySQL高级之explain详解 文章目录 MySQL高级之explain详解 一.expalin命令详解 1.使用方式 2.结果显示 3.主要的字段信息 4.作用 二.id字段 三.select_ ...

  6. mysql查询优化explain命令详解

    转载自 mysql查询优化explain命令详解 mysql查询优化的方法有很多种,explain是工作当中用的比较多的一种检查方式.explain翻译即解释,就是看mysql语句的查询解释计划,从解 ...

  7. mysql多表查询详解_MySQL多表查询详解上

    时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...

  8. MySQL权限授权认证详解

    MySQL权限授权认证详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL权限系统介绍 1>.权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删 ...

  9. Mysql 多表查询详解

    Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

最新文章

  1. VS2010 SP1 Beta与VisualSVN的冲突引起VS2010关闭时重启
  2. BUUCTF 特殊的BASE64
  3. 【Android】SDDL刷机
  4. 【已解决】查看Python中已经安装的包
  5. nssl1468-V【状压,数学期望,dfs】
  6. 使用HDFS客户端java api读取hadoop集群上的信息
  7. redistemplate.opsforvalue 设置不过期_民法典即将实施!“离婚冷静期”倍受关注
  8. 《活法》中一个故事--令托尔斯泰也折服的人性寓言
  9. ROS小白——软件安装(1)
  10. Android 仿QQ消息界面
  11. SwitchHosts for Mac(mac hosts修改工具)
  12. termux安装mongodb
  13. 计算机考研各个学校专业课,【择校必看】十三所计算机专业课只考数据结构的985院校!...
  14. 第七章:项目成本管理 - (7.3 制定预算)
  15. 【Vue插件】一款很好用的vue日历插件——vue-sweet-calendar
  16. mysql主键约束(primary key)
  17. 波导缝隙天线仿真出现较大副瓣,添加波导端口吸收副瓣
  18. Ubuntu18.04安装灭霸SLAM:ORBSLAM3
  19. 前端程序员常用办公工具(持续更新)
  20. 线性代数拾遗(1)—— 行列式的三种公理化构造

热门文章

  1. iOS开发系列–音频播放、录音、视频播放、拍照、视频录制
  2. ctf密码学特殊的编码和解密
  3. 安卓rxjava开发pdf,一次哔哩哔哩面试经历,大厂面试题汇总
  4. 产品和技术没有形成商业闭环,也不是一个成熟的存在
  5. 一篇自己动手写操作系统(转贴)
  6. Altera 芯片代码实现远程更新
  7. appendChild 和insertBefore的区别
  8. swagger不显示接口的可能性
  9. 野牛NBIOT 环境监测项目---华为OceanConnect云平台配置(四)
  10. 强烈推荐 十多款2023年必备国内外王炸级AI工具 (免费 精品 好用) 让你秒变神一样的装逼佬、感受10倍生产力