6_6_SQL

//名词
Candidate key:若表中记录的某一字段或字段组合能够唯一标志记录,则称该字段或字段组合为候选关键字
Primary key:若一个表有多个候选关键字,则选定其中一个为主关键字,也称为主键
Foreignkey:若某字段或字段组合不是数据库中A表的关键字,但它是数据库中另外一个表B表的关键字,则称该字段或字段组合为A表的外关键字

//语法,数据查询
SELECT 子旬指出查询结果中显示的字段名,以及字段名和函数组成的表达式等。
WHERE 子句定义了查询条件。WHERE子句必须紧跟FROM子句之后,其基本格式为。
OGROUPBY 子旬和ORDERBY子分别对查询结果分组和排序

//举例
下面用示例说明使用SOL语句对Student数据库进行的各种查询。
(1)查询Student数据库。查询students表中各个同学的姓名和总学分。

	USE Student SELECT name,totalscore FROM students

(2)查询表中所有记录。查询students表中各个同学的所有信息。

	SELECT *FROM students

(3)条件查询。查询students表中总学分大于等于120的同学的情况。

	SELECT *FROM students WHERE totalscore>120

(4)多重条件查询。查询students表中所在系为“计算机”且总学分大于等于120的同学的情况。

	SELECT *FROM students WHERE department='计算机'AND totalscore >= 120

(5)使用LIKE谓词进行模式匹配。查询students 表中姓“王”且单名的学生
情况。

	SELECT *FROM students WHERE name LIKE '王_'

(6)用BETWEEN…AND指定查询范围。查询students表中不在1997年出生的学生情况。

	SELECT *FROM studentsWHERE birthday NOT BETWEEN 1997-1-1'and 1997-12-31

(7)空值比较。查询总学分尚不确定的学生情况。

	SELECT *FROM studentsWHERE totalscore IS NUL

(8)自然连接查询。查找计算机系学生姓名及其“C程序设计”课程的考试分数情况。

	SLELCT name,gradeFROM students,courses,gradesWHERE department=计算机'ANDcoursename=C程设计'ANDstudents.studentid=grades.studentid ANDcourses.courseid=grades.coursesid

(9)IN子查询。查找选修了课程号为101的学生情况。

	SELECT *FROM studentsWHERE studentid IN(SELECT studentid FROM courses WHERE courseid=101')

在执行包含子查询的SELECT语句时,系统首先执行子查询,产生一个结果表再执行外查询。本例中,首先执行子查询:

	SELECT studentid FROM courses,students,grades WHERE courseid='101AND students.studentid= qrades.studentid ANDcourses.courseid=grades.coursesid

得到一个只含有studentid列的结果表,courses中courseid列值为101的行在该结果表中都有一行。再执行外查询,若students表中某行的stuentid 列值等于子查询结果表中的任意一个值,则该行就被选择到最终结果表中。
(10)比较子查询。这种子查询可以认为是IN子查询的扩展,它是表达式的值与子查询的结果进行比较运算。查找课程号206的成绩不低于课程号101的最低成绩的学生学号。

	SELECT studentid FROM gradesWHERE courseid=206'AND grade!<ANY(SELECT grade FROM grades WHERE courseid=101)

(11)EXISTS子查询。EXISTS谓词用于测试子查询的结果是否为空表,若子查询的结果集不为空,则EXISTS返回TRUE,否则返回FALSE。EXISTS还可与NOT结合使用,即NOTEXISTS,其返回值与EXISTS刚好相反。查找选修206号课程的学生姓名。

	SELECT name FROM studentsWHERE EXISTS(SELECT *FROM gradesWHERE studentid=students.studentid AND courseid ='206')

(12)查找选修了全部课程的同学姓名(即查找没有一门功课不选修的学生)。

	SELECT name FROM studentsWHERE NOT EXISTS(SELECT *FROMouses WHERE NOT EXISTS(SELECT *FROM grades WHERE studentid=students.studentid ANDcourseid=courses.courseid))

(13)查询结果分组。将各课程成绩按学号分组。

	SELECT studentid,grade FROM grades GROUP BY studentid

(14)查询结果排序。将计算机系的学生按出生时间先后排序。

	SELECT *FROM students WHERE department=计算机'ORDER BY birthday

//常用聚合函数
在这里插入图片描述

本例对Students数据库表执行查询,使用常用的聚合函数。
(1)求选修101课程学生的平均成绩。

	SELECT AVG(grade) AS '课程101平均成绩' FROM grades WHERE courseid=101

(2)求选修101课程学生的最高分和最低分

	SELECT MAX(grade) AS '课程101最高分'MIN(grade) AS '课程101最低分'FROM gradesWHERE courseid=101

(3)求学生的总人数。

	SELECTCOUNT(*) AS '学生总数' FROM students

// 数据操作
1.插入数据语句 INSERT
INSERT可添加一条或多条记录至一个表中。
INSERT有两种语法形式。
语法1:
INSERT INTO target IN externaldatabase{DEFAULT VALUES | VALUES(DEFAULTl expression_list)}
语法 2:
INSERT INTO target [IN externaldatabase]fields_list{SELECT…IEXECUTE…)
其中,
●target:欲追加记录的表(Table)或视图(View)的名称。
●externaldatabase:外部数据库的路径和名称。
●expression_list:需要插入的字段值表达式列表,其个数应与记录的字段个数一致,若指定要插入值的字段felds list,则应与fields list的字段个数相一致。
使用第1种形式将一个记录或记录的部分字段插入到表或视图中。第2种形式的INSERT语句插入来自SELECT语句或来自使用 EXECUTE语句执行的存储过程的结果集。

例如,用以下语句向students表添加一条记录:
INSERT INTO students
VALUES(‘130206"罗亮’,01/30/1994’,1,150)

2.删除数据语句 DELETE
DELETE用于从一个或多个表中删除记录。
DELETE语句的语法格式如下:

DELETE FROM table names
[WHERE...]

例如,用以下语句从students表中删除姓名为“罗亮”的记录:

DELETE FROM studentsWHERE name=罗亮

3.更新数据语句 UPDATE
UPDATE语用于更新表中的记录。
UPDATE语的语法格式如下:

UPDATE table name
SET Field_1=expression_l[,Field_2=expression_2...]
[FROM tablel_name|viewl_name[,table2_name|view2_name..] ]
[WHERE...]

其中,
●Field:需要更新的字段。
●expression:表示要更新字段的新值表达式。例如,以下语句将计算机系学生的总分增加10:

UPDATE students
SET totalscore=totalscore +10
WHERE department=计算机'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/599119.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鼠标灵敏度怎么调,鼠标灵敏度怎么调最稳

鼠标和键盘是操作计算机过程中使用最频繁的设备之一&#xff0c;用电脑的时&#xff0c;我敢说你一定离不开鼠标。有些用户发现鼠标不太好用&#xff0c;尤其是在游戏时&#xff0c;总觉得鼠标移动太慢了。另外&#xff0c;如果你感觉鼠标按键失灵、鼠标单击变双击以及反应迟钝…

MySQL的存储引擎、索引与事务

常见的端口号 MySQL–3306http–80https–443tcp–23fcp–21tomcat–8080ssh–22oracle–1521rockermq–9876 存储引擎 使用指令查看所有引擎&#xff1a; show engines;从图中可以看出MySQL默认的存储引擎是InnoDB&#xff1b;并且在5.7版本所有的存储引擎中只有 InnoDB 是…

SpringBoot3整合RabbitMQ之四_发布订阅模型中的fanout模型

SpringBoot3整合RabbitMQ之四_发布订阅模型中的fanout模型 文章目录 SpringBoot3整合RabbitMQ之四_发布订阅模型中的fanout模型3. 发布/订阅模型之fanout模型1. 说明1. 消息发布者1. 创建工作队列的配置类2. 发布消费Controller 2. 消息消费者One3. 消息消费者Two4. 消息消费者…

如何在 Node.js 中使用 bcrypt 对密码进行哈希处理

在网页开发领域中&#xff0c;安全性至关重要&#xff0c;特别是涉及到用户凭据如密码时。在网页开发中至关重要的一个安全程序是密码哈希处理。 密码哈希处理确保明文密码在数据库受到攻击时也难以被攻击者找到。但并非所有的哈希方法都是一样的&#xff0c;这就是 bcrypt 突…

MySQL操作DML

目录 1.概述 2.插入 3.更新 4.删除 5.查询 6.小结 1.概述 数据库DML是数据库操作语言&#xff08;Data Manipulation Language&#xff09;的简称&#xff0c;主要用于对数据库中的数据进行增加、修改、删除等操作。它是SQL语言的一部分&#xff0c;用于实现对数据库中数…

无尽加班何时休--状态模式

1.1 加班&#xff0c;又是加班&#xff01; 公司的项目很急&#xff0c;所以要求加班。经理把每个人每天的工作都排得满满的&#xff0c;说做完就可以回家&#xff0c;但是没有任何一个人可以在下班前完成的&#xff0c;基本都得加班&#xff0c;这就等于是自愿加班。我走时还有…

模块十 面向对象

模块十 重点 知道继承的好处会使用继承知道继承之后成员变量以及成员方法的访问特点会方法重写以及知道方法重写的使用场景会使用 this 关键字调用当前对象中的成员会使用super关键字调用父类中的成员会定义抽象类方法以及抽象类会重写抽象方法 第一章 继承 1.1 什么是继承 …

遥感影像处理利器:PyTorch框架下CNN-Transformer,地物分类、目标检测、语义分割和点云分类

目录 专题一 深度卷积网络知识详解 专题二 PyTorch应用与实践&#xff08;遥感图像场景分类&#xff09; 专题三 卷积神经网络实践与目标检测 专题四 卷积神经网络的遥感影像目标检测任务案例【FasterRCNN】 专题五 Transformer与遥感影像目标检测 专题六 Transformer的遥…

Qt:窗口、按钮类、行编辑器、标签类

作业&#xff1a;QQ登录界面 mywidget.h #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include<QMovie> #include <QLabel> #include <QPushButton> #include <QLineEdit> class MyWidget : public QWid…

系统监测工具-tcpdump的使用

一个简单的tcpdump抓包过程。主要抓包观察三次握手&#xff0c;四次挥手的数据包 有两个程序&#xff1a;客户端和服务器两个程序 服务器端的ip地址使用的是回环地址127.0.0.1 端口号使用的是6000 tcpdump -i 指定用哪个网卡等&#xff0c;dstip地址端口指定抓取目的地址…

如何在 iPhone 15/14/13/12/11/XS/XR 上恢复误删除的短信?

无论你的iPhone功能多么强大&#xff0c;数据丢失的情况仍然时有发生&#xff0c;所以当你发现一些重要的消息有一天丢失了。别担心&#xff0c;让自己冷静下来&#xff0c;然后按照本页的方法轻松从 iPhone 中检索已删除的短信。 在这里&#xff0c;您需要奇客数据恢复iPhone…

烤羊肉串引来的思考--命令模式

1.1 吃羊肉串&#xff01; 烧烤摊旁边等着拿肉串的人七嘴八舌地叫开了。场面有些混乱&#xff0c;由于人实在太多&#xff0c;烤羊肉串的老板已经分不清谁是谁&#xff0c;造成分发错误&#xff0c;收钱错误&#xff0c;烤肉质量不过关等。 外面打游击烤羊肉串和这种开门店做烤…