0

0

恒大威武!关于SQL的一些基础知识整理回顾_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:27:20

|

1080人浏览过

|

来源于php中文网

原创

bitsCN.com

首先的首先,恒大威武!

开始正题。

关系代数:

目前主流的关系型数据库,是建立在关系代数的基础上的,即他的数学支撑是关系代数。

关系代数主要包括如下几个二目运算:并运算union、交运算intersection、差运算difference、笛卡尔积Cartesian Product.

这里需要留意的是,笛卡尔积严格的说是广义的笛卡尔积,因为在关系型数据库中的笛卡尔积的元素是元组,所谓元组,直白的解释就是数据库中的一行,每一行是一个元组。

数据库中专门的关系运算有如下几个:选择selection、投影projection、链接join、除运算pision。

SQL:

SQL,即结构化查询语言,书关系型数据库的标准语言,但是每个厂商基于这个标准会有一套自己的实现。比如oracle的和mysql的。

SQL主要有三大块:DDL和DML和DQL。

    • DDL:数据定义语言,包括create、drop等
    • DML:数据操作语言,包括insert、update、delete等
    • DQL:数据查询语言,包括select、where、order by等

DDL:

创建数据库:create database 数据库名

撤销数据库:drop database 数据库名 [cascade|restrict]

    • cascade模式:直接删除数据库及其所有的表、视图、索引等元素
    • restrict模式:只有当数据库中没有任何元素的时才会删除,否则拒绝执行

创建数据表:create table 表名 列名

修改数据表:alter table 表名 [add 新列名][drop 完整性约束][alter column 列名]

删除表:drop table 表名 [cascade|restrict]

删除表时,不仅表的数据和定义被删除,相关的视图索引触发器也都被删除

  DQL:

笔目鱼英文论文写作器
笔目鱼英文论文写作器

写高质量英文论文,就用笔目鱼

下载

select语句:

  select 列 from 表 where 条件表达式 group by 列名 having 条件表达式 order by 列名 asc|desc

  and和or可以连接多个查询条件,and的优先级比or高,但是可以用括号改变优先级

聚集函数:

  count([distinct|all] *|列名) 统计个数

  sum([distinct|all] 列名) 求和

  avg([distinct|all] 列名) 求平均

  max([distinct|all] 列名) 求最大值

  min([distinct|all] 列名) 求最小值

  如果指定distinct短语,则在计算时会取消列中的重复值,如果不指定distinct或者指定all(默认是all),则表示不取消重复值。

分组语句:

  分组语句主要是group by子句和having子句。

  例如:查询选修了三门课以上课程的学生学号:

    select sno from sc group by sno having count(*)>3

  group by子句将查询结果按照指定列或多列分组,值相等的为一组。

  需要注意的是,数据分组后,聚集函数将作用于每一个组,即每个组都有一个函数值。上例中的count是对每一个group后的组做count。

  having子句都是跟groupby子句连用,按照自定的条件对组进行筛选,得到满足条件的组。

having子句和where子句的区别是作用对象不同,where子句的作用对象是表中的记录,即元组,筛选满足条件的元组,而having子句的作用对象是groupby后的组,筛选满足条件的组。

多表连接查询:

  两表连接:

    select * from s,sc where s.no=sc.no

  自身连接:一个表与其自己进行连接,称为表的自身连接

    查询每一门课程的间接先修课,即先修课的先修课。

    select first.cno,second.cpno from c first, c second where first.cpno=second.cno

  外连接:

正常的连接操作,只会把满足条件的元组输出,如果想把连接的左表右表中不满足条件的元组也作为结果输出,在无值属性上填空值null,这种连接就叫外连接。关键字join|out join

  左外连接:列出左边表的所有元组,叫做左外连接,关键字left join|left out join

  右外连接:列出右边表的所有元组,叫做右外连接,关键字right join|right out join

  例子:

  select * from s left out join sc on(s.sno=sc.sno)

  select * from s left out join sc using(sno)

嵌套连接查询:

  写几个嵌套查询的例子,看了应该就懂了。

      • select name from s where sno in (select sno from sc where cno='2')
      • select sno,cno from sc x where grade>=(select avg(grade) from sc y where y.sno=x.sno)

  ANY(SOME) ALL关键字:

子查询返回单值时可以用比较运算符,如上面的>=,如果返回的是多值就没法用比较运算符,得用ANY(有的系统是some)或者all关键字,这两个关键字必须跟比较运算符连用来表达语义,any表示某个,all表示所有,主要的语义如下:

>any    大于子查询结果中的某个值

>all     大于子查询结果中的所有值

写几个例子:

  查询其他系中比计算机系某一学生年龄小的学生姓名和年龄

  select name,age from s where age'cs'

  查询其他系中比计算机系所有学生年龄小的学生姓名和年龄

      select name,age from s where age'cs'

  exists谓词的子查询

    exists谓词的子查询不返回任何数据,只是产生逻辑真true和逻辑假false。

    例如:查询所有选修了1号课程的学生姓名:

    select name from s where exists (select * from sc where sno=s.sno and cno='1')

    只要子查询结果非空,则where子句就是true,否则就是false.

集合操作:

  select语句的结果是元组集合,所以多个select语句可以进行集合操作,集合操作主要有求并union、求交intersect、求差except

  写几个例子:

  select from s where dept='cs' union select from s where age

  select from s where dept='cs' intersect select from s where age

DML:

  insert:

    普通插入:insert into s(a,b,c) values(1,2,3)

    子查询插入:insert into s(a,b) select a,b from y.把子查询嵌套在insert语句中,生成需要插入的批量数据

  delete:

    普通删除:delete from s where a='1111'

    在查询删除:delete from sc where 'cs' = (select dept from s where s.sno=sc.sno) 删除计算机系所有学生的选课记录

  update:

    普通修改:update s set age=22 where sno='12345'

    子查询修改:update sc set grade=0 where 'cs' = (select dept from s where s.sno=sc.sno) 设置计算机系学生成绩为0

 

周天宅家码了一些SQL方面的基础知识和细节,有用请点赞,哈哈。

最后的最后,还是恒大威武!

bitsCN.com

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

463

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

135

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

64

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

26

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

14

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

524

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

53

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3万人学习

JavaScript
JavaScript

共185课时 | 27.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号