文章目录

  • 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. 巧妙启用Windows 2003的远程桌面
  2. Markdown 编辑器的使用记录 (Typora)
  3. 【RAC】 RAC For W2K8R2 安装--共享磁盘的配置(三)
  4. html如何呈现在显示器,lcd显示器采用什么显示方式
  5. 学习笔记-Redis设计与实现-跳跃表
  6. 在springmvc中controller的一个方法处理多个不同请求
  7. 蚂蚁面试:字符串在JVM中如何存放?
  8. Python数值类型:小数与百分数的转换
  9. 使用视觉信息,为什么能把移动机器人的空间位置信息记录下来
  10. ElasticSearch 文档的添加、获取、更新、删除_05
  11. tomcat安装apr报错解决
  12. MongoDB 我的学习笔记
  13. 我在看着你呢——shiro学习
  14. 如何使用sendEmail发送邮件
  15. 计算机专业学习课程推荐
  16. 【Music】Never took the time
  17. 加速度传感器检测物体倾角的原理
  18. Omise携手i2c促进东南亚发卡现代化和加速发卡能力提升
  19. LeetCode 771. 宝石与石头(java)
  20. CODA数据集 -- 出租车存MySQL源码

热门文章

  1. DNS是什么意思?DNS有什么用?(中科三方)
  2. 如何判断一段程序是否是裸机程序?
  3. 讲师加油站 | 003 | 关于讲师PPT课件的7条忠告
  4. mysql 错误2002_mysql中异常错误ERROR:2002的解决方法
  5. mysql后一项减去前一项_sql语句优化及后一条减前一条
  6. python公历转农历_python 阳历转阴历代码(2)
  7. 大牛的博客,跟大牛学习
  8. 大明龙权登陆服务器信息解析失败,为什么我玩CF老是对不起你的登录信息有误...
  9. win2003配置java_WinPE 下安装 Windows Server 2003 服务器
  10. 九江义犬舍身尝剧毒狗肉,百人送葬(zz)