MySQL查询

级联:
on delete casscade 删除级联
on update csacde 更新级联
删除数据时:需要先删除外键表,在删除主键表
录入数据时:先录入主键,再录入外键

当删除主表数据主表数据变化从表跟着变化,修改主表数据变化修改从表跟着修改

查询:

select 列名1,列名2
from 表名
where 条件表达式
group by 列名
having 条件表达式
order by 列名
limit ?,? 分页

查询表时可以指定查询某些列,顺序可以自定义(查询全部列用‘select *’)
例如:select name,age,address,sex from student;
列和表都可以起别名,查询中列支持运算

去重查询(尽量少用,影响性能)

select distinct 列名 from 表名

条件查询:
条件运算符:= > < >= <= 不等:<>和!=
算术运算符:+ - * / 不支持:++ – 符合赋值 += -=
逻辑运算符:
and(&&):并且:多个条件同时成立就true 否则返回false
not (!):非:取反
or(||):或,多个条件只有一个成立,结果true,都不成立false

范围查询:
and运算符连接条件:between a and b ;(根据a,b范围来查询数据)

select * from studentinfo where age between 19 and 21;

in(在…内);匹配某个字段的值是几个可能的选项值之一,不是范围是确定值

select * from student where age in(15,17,20);

模糊查询

通配符:
“.”匹配任意字符
“[ ]”匹配在[ ] 内的任意一个字符
“ [^]”匹配不在[ ] 内的任意一个字符
“*” 匹配零个或多个在它前面的字符
“+”匹配+前面的字符一次或多次
“{n}”匹配前面的字符至少n次
“^” 匹配文本的开始字符
“$”匹配文字结尾字符

例如://匹配名字以a开头 c结尾的名字

select * from student where name regexp '^a.c$';

模糊查询like关键字
使用通配符
‘ %a ’ 以a为结尾的数据
‘ a% ’ 以a开头的数据
‘ %a% ’ 含有a是数据,三位且中间是a的
‘_ a ’ 两位且结尾是a的
‘ a_ ’ 两位且开头是a的

%:表示任意0个或者过个字符,可匹配任意类型长度的字符,有情况下若是中文,请使用两个百分号(%%)表示
_ :表示任意单个字符。匹配单个任意字符,常用来限制表达式的字符长度的语句

例如:
– 查询张姓同学名字是两个字的

select * from student where `name` like '张_';

– 查询名字中带有王字的

select * from student where `name` like '%王%';

– 查询名字中间是中字的

select * from student where `name` like '_中_';

– 姓李的 地址里有周口的

select * from student where `name` like '李%' and address like '%周口%';

排序操作

order by 列名 asc 升序(默认)desc 降序

聚合函数

count(*)列名为空不计入总数
max(列名) 取列中最大值
min (列名)取列中最小值
sum(列名) 求和
avg(列名)取平均值

分组查询

group by 列名 是将某一列相同数据行当成一组

having :对分组后的数据过滤。 group by 列名 having 条件

分页查询 limit
防止数据过多产生爆炸,可以查询一部分数据
用法:select * from student limit(3,5);(索引 , 查询的个数)

常用查询语法:select 列名 from 表名
where 条件
group by 分组列名
having 过滤条件
order by 排序列名
limit start ,length;

where 等值连接:必须加条件,查询结果才有意义

select * from student,classInfo
where student.classId = classinfo.classId

inner join 内连接(等值连接)

select * from 表1 别名1
[inner] join 表2 别名2
on 别名1.对等数据列 = 别名2.对等数据列 # 必须加条件
where 条件
group by 列
having 条件
order by 列
limit 位置,记录数
limit 位置,记录数

左外连接:left outer join
以左表为主,左表数据全部出来,右表匹配上的数据显示,匹配不上的不显示

select s*,c*
from student s           # 写在前面的表称为左表
left outer join classInfo c      #写在后面的表称为右表
on s.classId = c.classId

#右外连接: right outer join
以右表为主,右表数据全部出来,左表匹配上的数据出来,匹配不上的不显示


select s.*,c.*
from student s # 写在前面的表称为左表
right outer join classInfo c #写在后面的表称为右表
on s.classId = c.classId

#前查询所有学生的:班级名字,学生姓名,性别,课程名字,分数并且按照每科目倒序排列

select
ci.className , s.name , s.sex , co.courseName , e.score
from student s , classInfo ci , course co , exam e
where s.classId = ci.classId
and s.studentId = e.studentId
and co.courseId = e.courseId
order by co.courseName asc,e.score desc

inner join连接

select ci.className,s.name,s.sex,co.courseName,e.score
from student s
join classInfo ci
on s.classId = ci.classId # 两表连接后变成一张表
join exam e
on s.studentId = e.studentId
join course co
on e.courseId = co.courseId

子查询
在查询中再嵌套另一个查询(套娃)

例如: 学生的班级编号等于A1的班级编号

select * from student
where cid = (select cid from classInfo where cname = 'A1' #主要用来获取符合条件的学生id然后用于查询student表
)


查询语文课程,并且分数大于78分的学生

select * from student
where studentId in ( #根据学生id查询到学生信息select studentId from examwhere courseId = ( #根据课程id查询到学生idselect courseId from course where courseName = '语文' #获取课程id) and score>78
)

多表关联:
小节:
多表之间有对等列才能连接
where等值连接:两表相互匹配的数据会显示,不匹配的不显示
inner join : 内连接(等值效果)
left outer join : 左外连接(以左表为主,左表数据全部出来)
right outer join:右外连接(右表为主,右表数据全部出来)
cross join:交叉连接,笛卡尔积,不需要条件的连接

MySQL 基础查询 ,连接查询,子查询相关推荐

  1. mysql多表连接 索引_MySQL多表查询之外键、表连接、子查询、索引

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, ...

  2. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  3. 三、MySQL子查询学习笔记(标量子查询、列子查询、行子查询、表子查询 详解)

    三.MySQL子查询学习笔记 7:子查询 含义: 一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询:在外面的查询语句,称为主查询或外查询 分类: 一 ...

  4. 第七周 Java语法总结之数据库大全_DDL_DML_DQL_约束_备份与还原_表的关系_三大范式_多表查询(内连接_外连接_子查询)_musql事务_隔离级别

    文章目录 数据库 DDL语句:数据库定义语句 1.库的增删查改 1.查询当前mysql下所有的数据库 2.创建数据库 3.查看创建数据库的默认的字符集(了解) 4.修改数据库的字符集(了解) 5.删除 ...

  5. t - sql的阶梯:超越基础水平2:写子查询

    t - sql的阶梯:超越基础水平2:写子查询 原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/104517/ 通过格雷戈里 ...

  6. 数据库学习笔记6--MySQL多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  7. server多笔记录拼接字符串 sql_第四章、SQL Server数据库查询大全(单表查询、多表连接查询、嵌套查询、关联子查询、拼sql字符串的查询、交叉查询)...

    4.1.查询的类型 declare @value as int set @value = 50 select  'age:'as age,2008 years,@valueas va --这种查询时跟 ...

  8. OceanBase SQL 执行计划解读(二)──── 表连接和子查询

    前文<OceanBase SQL 执行计划解读(一)>介绍了单表查询中基本的执行计划解读,本文主要介绍简单的表连接和子查询相关的执行计划. 本文假设你对常用的表连接算法已有了解,包括:嵌套 ...

  9. MySQL开发技巧 第二禅(子查询中匹配两个值、解决同属性多值过滤的问题、计算累进税的问题)

    一.如何在子查询中匹配两个值 mysql子查询的使用场景及其好处 1.什么是子查询?             当一个查询是另一个查询的条件时,称之为子查询(可以在curd中) 2.常见的子查询使用场景 ...

  10. mysql 同表子查询_MySQL 表子查询

    MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: aidtitlecontentu ...

最新文章

  1. 07年了,新的一年又开始了
  2. suse mysql ERROR1045_Suse发生了错误Access denied for user #39;#39;@#39;localhost#39; toamp;...
  3. socket绑定指定网卡发包
  4. 思考 | 人工智能时代:AI芯片能否实现弯道超越?
  5. springboot实现增量备份_SpringBoot canal数据同步解决方案
  6. Android学习总结(1)——好的 Android 开发习惯
  7. php为什么凉了_马蜂窝裁php换java,php又又又凉凉了吗
  8. BeanUtils工具类
  9. JSK-389 同因查找【入门】
  10. 《那些年啊,那些事——一个程序员的奋斗史》——81
  11. synchronized关键字,Lock接口以及可重入锁ReentrantLock
  12. SQL Server中数据库文件的存放方式,文件和文件组
  13. 华为手机解锁码计算工具_手机计算器全线阵亡?小编实测苹果、华为、三星……...
  14. mysql安装和基本操作
  15. 我认为到现在写的最好的一本小说 《紫川》
  16. 用ASP.NET创建网络相册
  17. 以太坊源码分析:fetcher模块和区块传播
  18. Windows 10 自带App无法使用,打开闪退
  19. 网上购车平台买车,购车门槛低!
  20. 优测免费开放自动化测试工具-鲸鸿,为低门槛软件测试技术解燃眉之急

热门文章

  1. 获取你的WIFI密码-fluxion(附操作视频)
  2. 使用HTML5和CSS3开发电子商务网站第一章HTLM5基础课后作业
  3. 重磅!阿里云时空数据库正式免费公测
  4. Android刷windows 10系统,有哪些手机可以刷win10系统?Android机上将可刷Win10?
  5. 【元宵节快乐】Apache ShardingSphere 企业行|走进陌陌
  6. 20170303找女朋友之路思考总结
  7. 感恩节Thanksgiving 让我们说些感谢的话
  8. JAVA毕设项目某服装店购物网站(java+VUE+Mybatis+Maven+Mysql)
  9. 学习资料:笔试必看——75道逻辑题答案
  10. 英雄联盟7月23日维修服务器,英雄联盟7月23日PBE版本更新 琴女技能小幅度重做...