数据库系统理论——关系数据库标准语言SQL

文章目录

  • 一、数据定义
    • 1、基本表的定义、删除与修改
    • 2、索引的建立于删除(了解)
  • 二、数据查询(会其中一种)
    • 1、单表查询
      • (1)这里出现重复元组,怎么处理??
      • (2)between。。。。and
      • (3)语法IN
      • (4) 拓展
      • (5)字符
        • like
        • 姓氏 % _ p95
      • (6)关于空值的讨论
      • (7)多重查询
      • (8) order by子句
      • (9)聚集函数
      • (10)group by子句
    • 2、连接查询
    • 3、嵌套查询(exist不考)
  • 三、数据更新
    • 1、插入数据
    • 2、修改数据
    • 3、删除数据
  • 四、空值的处理
  • 五、视图
    • 1、视图的定义

前言:本章正式学习sql语言的语法,学习完本章之后,要能够对基本表进行增删改查,定义视图。

一、数据定义

1、基本表的定义、删除与修改

在这里插入图片描述
在这里插入图片描述
这里需要注意的是列级完整型约束条件与表级完整性约束。
看几个例子:
1、建立student基本表

CREATE TABLE STUDENT
(
SNO CHAR(9) PRIMARY KEY,   //这里是列级完整性约束,说明sno是主码
SNAME CHAR(20) UNIQUE,  //表示SNAME是唯一值
SSEX CHAR(2),
SAGE SMALLINT,
SDEPT CHAR(20)
);

2、建立课程表

CREATE TABLE COURSE
(
CNO CHAR(4) PRIMARY KEY,
CNAME CHAR(40) NOT NULL,
CPNO CHAR(4), 
CCREDIT SMALLINT,
FOREIGN KEY(CPNO) REFERENCES COUESE(CNO)
/*表级完整性约束,CPNO是外码,被参照表是course,被参照列是cno*/ 
);

本例子说明参照表与被参照表可以是一样的。
3、建立学生选课表

CREATE TABLE SC
(
SNO CHAR(10),
CON CHAR(4),
GRADE SMALLINT,
PRIMARY KEY (SNO,CNO),/*主码是由属性组构成,两个属性共同构成主码*/
FOREIGN KEY (SNO) REFERENCES STUDENT(SNO), 
/*sno为外码,student为被参照表*/
FOREIGN KEY (CNO) REFERENCES COURSE (CNO),
/*cno为外码,course是被参照表*/
CHECK(GRADE BETWEEN 0 AND 100)
);

基本表的修改:
定义格式:
在这里插入图片描述
(1)增加基本表的属性

/*ALTER TABLE (表名) ADD (属性名) (属性类型);*/
ALTER TABLE STU ADD BIRTHDAY DATE;

(2)修改基本表某些属性类型

/*ALTER TABLE (表名) ALTER COLUMN (属性名) (属性类型);*/
ALTER TABLE STU ALTER COLUMN SNO INT;

(3)增加基本表某些属性约束条件

/*ALTER TABLE (属性名) ADD (约束条件)(属性名)*/
ALTER TABLE STU ADD UNIQUE(SNO);

基本的删除

DROP TABLE <表名> [RESTRICT|CASCADE];
/*
当用restrict时,视图不会一起删除
当用cascade时,视图会一起被删除
*/

2、索引的建立于删除(了解)

索引是内模式的范畴,而基本表是模式(逻辑模式,概念模式),视图时外模式或子模式的范畴。
书上p88;

二、数据查询(会其中一种)

在这里插入图片描述

1、单表查询

在这里插入图片描述
说明:别名起在原属性后面;
在这里插入图片描述

(1)这里出现重复元组,怎么处理??

SELECT DISTINCT SNO FROM SC;
/*这里在sno属性前面加上了约束项,distinct即为去重重复元组,否则就默认all,显示所有*/

在这里插入图片描述

(2)between。。。。and

在这里插入图片描述
注意:这里查询的where语句,不要和基本表的定义中的cheak()子句搞混!!!
如果要查找不在20~23岁的学生,则按照下面写:

SELECT SNAME,SDEPT,SAGE
FROM STUDENT
WHERE SAGE NOT BETWEEN 20 AND 23;

在前面加上not即可;

(3)语法IN

在这里插入图片描述

SELECT SNAME,SSEX
FROM STUDENT
WHERE SDEPT IN('CS','MA','IS');
/*
要是这里题目是不在这些系里面的学生,只需要把最后一个where子句改了即可
WHERE SDEPT NOT IN('CS','MA','IS');
*/

(4) 拓展

这里说一下,有两个语句的区别,效率哪一高,大家判断一下?

SELECT *
FROM STU;SELECT SNAME,SAGE
FROM STU;

这里我们认为时第二种效率高一些,无需知道原因,了解即可!

(5)字符

like
/*like与“=”是一样的作用*/
SELECT *
FROM STU
WHERE SNO='21230202';
WHERE SNO LIKE '21230202';
姓氏 % _ p95

(6)关于空值的讨论

在这里插入图片描述

(7)多重查询

在这里插入图片描述

SELECT SNAM
FROM STUDENT
WHERE SDEPT='CS' AND SAGE<20;

在这里插入图片描述
在这里插入图片描述
解释:这里用的是“or”,是指,“或者”的意思,三个系别的学生全部投影出来!

(8) order by子句

在这里插入图片描述
在这里插入图片描述

SELECT SNO,GRADE
FROM SC
WHERE CNO=3ORDER BY GRADE DESC;/*降序:desc,升序:asc,这里升序可不写,因为默认就是升序*/

在这里插入图片描述
在这里插入图片描述

SELECT *
FROM STUDENT
ORDER BY SDEPT,SAGE DESC;
/*
说明:这里出现sdept是升序,sgae是降序,那么他们内部逻辑是什么,是同时起作用还是有先后???
【分析】
当sdept一直时,此时才会看sage
即为,sdept一致的前提下,sage再按照降序来排序。
*/

(9)聚集函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(10)group by子句

group by (属性);

将属性分组,即将相同的属性值放在一起,即一个组;
在这里插入图片描述
说明:按照学号分组,并且having后面加上聚集函数,来约束,寻找选修课程大于等于三的学号。聚集函数是作用在已经分好组的上面!!
在这里插入图片描述
在这里插入图片描述
特别注意:这里需要说明一下,select后面跟着的属性要与group by后面的一致。

2、连接查询

(1)

SELECT <>
FROM<>
WHERE <表名1>.<属性名1>==<表名2>.<属性名2>

这里的where通过如上格式将两个表连接起来,等于号左右是两个表的公共属性;
在这里插入图片描述
(2)
在where子句中也可以连接和查询一起加约束。
在这里插入图片描述

3、嵌套查询(exist不考)

在这里插入图片描述
此查询可以分为两步:
第一步查询刘晨的系名
第二步来用IN
合并为:

SELECT SNAME,SNO,SDEPT
FROM STUDENT
WHERE SDEPT IN(
SELECT SDEPT
FROM STUDENT
WHERE SNAME='刘晨'
);

在这里插入图片描述
这里也可以用连接查询:

select student.sno,sname
from student,course,sc
where student.sno=sc.sno and sc.sno=course.sno and cname='信息系统';

三、数据更新

1、插入数据

INSERT 
INTO()
VALUES()

stu(sname,ssex,sno)
例子:
(1)在stu表里面加入一个学生,姓名,韩,性别,男,学号2123

INSERT 
INTO STU(sname,ssex,sno)/*括号里面可写可不写,因为这里插入的数据与原关系模式属性一致*/
VALUES (‘韩’,‘男’,2123)

(2)在stu表里面加入一个学生,姓名,韩,性别,男

INSERT 
INTO STU(sname,ssex)
VALUES (‘韩’,‘男’)/*这里再第三个属性显示时,会自动补上null*/INSERT 
INTO STU(sname,ssex,sno)/*如果这里是关系里面全部属性,而学号还不知道,则在插入时加上null*/
VALUES (‘韩’,‘男’,null)

2、修改数据

update <table>
set 
where

例子1:修改一个名为张三的学生的学号

UPDATE STU
SET SNO='2222'
WHERE SNAME=张三;

例子2:将所有同学分数加10分

UPDATE SC
SET SGRADE=SGRADE + 10;

3、删除数据

DELETE FROM <TABLE>
WHERE

例子:删除张三的信息

DELETE FROM STU
WHERE SNAME=ZHANGSAN;DELETE FROM STU;/*删除所有学生*/

四、空值的处理

在这里插入图片描述

五、视图

1、视图的定义

CREATE VIEW
AS  <子查询>

注意:子查询一般用于连接查询,因为只要from后面跟着两个或两个以上的表,就要用连接查询,把他们的公共属性连接起来。

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

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

相关文章

渗透测试-信息收集

网络安全信息收集是网络安全领域中至关重要的一环&#xff0c;它涉及到对目标系统、网络或应用进行全面而细致的信息搜集和分析。这一过程不仅有助于理解目标网络的结构、配置和潜在的安全风险&#xff0c;还能为后续的渗透测试、风险评估和安全加固提供有力的支持。 在网络安…

单调栈问题

原理 单调栈的核心原理是&#xff1a;在栈内保持元素的单调性&#xff08;递增或递减&#xff09; 单调递增栈&#xff1a; 用于处理“下一个更小的元素”问题。当新元素比栈顶元素小或等于时&#xff0c;直接入栈&#xff1b;否则&#xff0c;一直从栈顶弹出元素&#xff0c…

信息系统项目管理师0102:可行性研究的内容(7项目立项管理—7.2项目可行性研究—7.2.1可行性研究的内容)

点击查看专栏目录 文章目录 7.2项目可行性研究7.2.1可行性研究的内容1.技术可行性分析2.经济可行性分析3.社会效益可行性分析4.运行环境可行性分析5.其他方面的可行性分析记忆要点总结7.2项目可行性研究 可行性研究是在项目建议书被批准后,从技术、经济、社会和人员等方面的条…

在STM32中用寄存器方式点亮流水灯

文章目录 实验资料一、对寄存器的理解1.通俗认识寄存器2.深入了解寄存器&#xff08;1&#xff09;端口配置低寄存器&#xff08;配置0到7引脚的寄存器&#xff09;&#xff08;2&#xff09;端口配置高寄存器&#xff08;配置8到15引脚&#xff09; 3.GPIO口的功能描述 二、配…

【网络】网络基础

目录 一、前言 1.计算机网络背景 2.认识协议 二、网络协议初识 1.OSI七层模型 2.TCP/IP五层(或四层)模型 3.网络传输基本流程 4.数据包封装和分用 5.网络中的地址管理 1.IP地址 2.MAC地址 一、前言 1.计算机网络背景 网络之前&#xff0c;我们所有在电脑上的操作都是…

LeetCode题练习与总结:二叉树的中序遍历--94

一、题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;roo…

Github学习

1.Git与Github 区别: Git是一个分布式版本控制系统&#xff0c;简单的说就是一个软件&#xff0c;用于记录一个或若干个文件内容变化&#xff0c;以便将来查阅特点版本修订情况的软件。 Github是一个为用户提高Git服务的网站&#xff0c;简单说就是一个可以放代码的地方。Gi…

韩顺平0基础学Java——第10天

p202-233 类与对象&#xff08;第七章&#xff09; 成员方法 person类中的speak方法&#xff1a; 1.public表示方法是公开的 2.void表示方法没有返回值 3.speak&#xff08;&#xff09;中&#xff0c;speak表示方法名&#xff0c;括号是形参列表。 4.大括号为方法体&am…

重塑数据架构:云器Lakehouse如何简化组装式架构实现性能与成本的精益平衡

导读本文将介绍云器科技自研的 Lakehouse 产品。通过本次分享&#xff0c;您将了解云器 Lakehouse 产品特性&#xff0c;了解一体化数据平台如何提升数据处理和数据分析的效率&#xff0c;使之更轻松、更简洁、更高效&#xff0c;了解增量计算如何做到平衡数据新鲜度、查询性能…

DE2-115串口通信

目录 一、 内容概要二、 Hello Nios-II2.1 Nios-II编程2.1.1 硬件Ⅰ 搭建环境Ⅱ 编写代码 2.1.2 软件2.1.3 烧录Ⅰ硬件Ⅱ 软件 2.2 verilog编程 三、 心得体会 一、 内容概要 分别用Verilog和Nios软件编程, 实现DE2-115开发板串口输出“Hello Nios-II”字符到笔记本电脑串口助…

【Shell】shell编程之循环语句

目录 1.for循环 例题 2.while循环 例题 3.until循环 1.for循环 读取不同的变量值&#xff0c;用来逐个执行同一组命令 for 变量 in 取值列表 do 命令序列 done [rootlocalhost ~]# for i in 1 2 3 > do > echo "第 $i 次跳舞" > done 第 1 次跳舞 第 …

使用Pycharm编写Python程序时对基本类结构中方法的重写的两种初步操作方式

使用Pycharm编写Python程序时对基本类结构中方法的重写的两种初步操作方式 Python和其他一些高级面向对象的编程语言中&#xff0c;子类可继承父类中的方法&#xff0c;而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法&#xff0c;而是想作一定的修改&…

闲来装个虚拟机Ubuntu24.04和硬盘分区及挂载

简述 最近ubuntu出新版本了&#xff0c;ubuntu24.04&#xff0c; 俗称高贵食蚁兽。5年前进行Android或者linux开发基本是在windows下的虚拟机中进行。目前&#xff0c;虽然物质基础提高了&#xff0c;功能有独立进行编译、代码管理的服务器了。可以通过ssh登录&#xff0c;但是…

【C++11】C++11类与模板语法的完善

目录 一&#xff0c;新的类功能 1-1&#xff0c;默认成员函数 1-2&#xff0c;强制生成关键字 二&#xff0c;可变参数模板 2-1&#xff0c;模板参数包 2-2&#xff0c;STL容器empalce的相关接口 一&#xff0c;新的类功能 1-1&#xff0c;默认成员函数 C11之前的类中有…

Tomcat添加服务以及设置开机自启

下载地址连接 Index of /dist/tomcat&#x1f453; 注意点&#xff1a;不要出现中文路径 #环境变量 CATALINA_HOMED:\apache-tomcat-7.0.62 TOMCAT_HOMED:\apache-tomcat-7.0.62 JAVA_HOMED:\tool\jdk1.8.0_111 PATH%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\…

对称加密介绍

一、什么是对称加密 对称密钥算法(Symmetric-key algorithm)&#xff0c;又称为对称加密、私钥加密、共享密钥加密&#xff0c;是密码学中的一类加密算法。 对称加密的特点是&#xff0c;在加密和解密时使用相同的密钥&#xff0c;或是使用两个可以简单地相互推算的密钥。 这…

超越传统游戏:生成式人工智能对游戏的变革性影响

人工智能&#xff08;AI&#xff09;在游戏中的应用 游戏产业是一个充满活力、不断发展的领域&#xff0c;人工智能&#xff08;AI&#xff09;的融入对其产生了重大影响。这一技术进步彻底改变了游戏的开发、玩法和体验方式。本文分析的重点是传统人工智能和生成式人工智能在游…

网络安全之弱口令与命令爆破(下篇)(技术进阶)

目录 一&#xff0c;什么是弱口令&#xff1f; 二&#xff0c;为什么会产生弱口令呢&#xff1f; 三&#xff0c;字典的生成 四&#xff0c;九头蛇&#xff08;hydra&#xff09;弱口令爆破工具 1&#xff0c;破解ssh登录密码 2&#xff0c;破解windows登录密码 3&#xf…

java项目之相亲网站的设计与实现源码(springboot+mysql+vue)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的相亲网站的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 相亲网站的设计与实…

Excel办公技巧之下拉菜单

在日常办工中&#xff0c;经常需在单元格中输入特定的值&#xff0c;此时我们可以使用下拉菜单解决&#xff0c;输入错误和错误值&#xff0c;可以一劳永逸的解决固定数据输入问题。 使用Excel下拉菜单时&#xff0c;它在数据输入和验证方面发挥着重要作用通过点击单元格的下拉…