一、创建数据库,创建表结构

CREATE DATABASE Test_sub DEFAULT CHARACTER SET utf8;

USE Test_sub;

CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT, -- 学号 id
NAME VARCHAR(10) -- 姓名 name
); CREATE TABLE course(
id INT PRIMARY KEY AUTO_INCREMENT, -- 课程号 id
NAME VARCHAR(10) -- 课程名 name
); CREATE TABLE sc(
student_id INT,
course_id INT,
PRIMARY KEY(student_id, course_id),
CONSTRAINT student_fk FOREIGN KEY(student_id) REFERENCES student(id) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT course_fk FOREIGN KEY(course_id) REFERENCES course(id) ON UPDATE CASCADE ON DELETE CASCADE
);

二、插入数据

INSERT INTO student(NAME) VALUES
('aaa'), ('bbb'), ('ccc'), ('ddd'); INSERT INTO course(NAME) VALUES
('课程_1'), ('课程_2'), ('课程_3'), ('课程_4'); INSERT INTO sc VALUES
(1, 1), (1, 2), (1, 3), (1, 4),
(2, 1), (2, 2), (2, 3),
(3, 1), (3, 2),
(4, 1);

三、操作

查询学生ddd未选的课程:使用左外连接,并查询为空的

SELECT course.name
-- select *
FROM
course LEFT JOIN
(
SELECT *
FROM sc
WHERE sc.student_id =
(
SELECT id
FROM student
WHERE NAME = 'ddd'
-- limit 0,1
)
) AS sc_1
ON course.id = sc_1.course_id
WHERE sc_1.student_id IS NULL;

补:课本案例,实现左外、右外:

1.创建表结构:

CREATE TABLE R(
A CHAR(2),
B CHAR(2),
C CHAR(2)
); CREATE TABLE S(
B CHAR(2),
E CHAR(2)
);

2.插入值:

INSERT INTO R VALUES
('a1', 'b1', '5'),
('a1', 'b2', '6'),
('a2', 'b3', '8'),
('a2', 'b4', '12'); INSERT INTO S VALUES
('b1', '3'),
('b2', '7'),
('b3', '10'),
('b3', '2'),
('b5', '2');

3.测试左外:

SELECT *
FROM r
LEFT JOIN s ON r.b = s.b;

4.测试右外:

SELECT *
FROM r
RIGHT JOIN s ON r.b = s.b;

我对数据库关系代数中减法sql实现的思考:mysql脚本的更多相关文章

  1. IDEA 中Spark SQL通过JDBC连接mysql数据库

    一.IDEA装驱动: 1.下载一个MySQL的JDBC驱动:mysql-connector-java-5.1.44.tar.gz2.在idea Open Moudle Settings 在 Moudl ...

  2. 有两个数据库A和B,数据库A中有表a,如何把表a映射到数据库B中,sql 2005

    select * into B.dbo.a from A.dbo.a 就把表同步过去如果只同步表结构select * into B.dbo.a from A.dbo.a where 1<> ...

  3. 关于Mac系统中my sql 和navicat for mysql 的连接问题。

    我这个完完全全的技术小小白,经过数个小时的网搜,navicat for mysql和mysql终于可以可以正常连接了,好开森啊!,我把我遇到的问题,以及解决方法记录下来,希望也可以对遇到同样问题的能够 ...

  4. mysql 把文件中的sql语句导入到mysql中

    mysql -uroot -proot -Dcollege</home/wwwroot/default/data/xlxxb_2014-10-16.txt;

  5. MySQL注释中的sql也可能执行

    MySql支持三种注释形式:# 和–属于单行注释,注释范围为该行的结尾:/* */注释属于多行注释,此外该种注释还可以实现行内注释.具体的使用情况如下图中所示(四种使用情形): 除此之外,/* */这 ...

  6. Oracle中动态SQL详解(EXECUTE IMMEDIATE)

    Oracle中动态SQL详解(EXECUTE IMMEDIATE) 2017年05月02日 18:35:48 悠悠倾我心 阅读数:744 标签: oracle动态sqloracle 更多 个人分类:  ...

  7. 通过SQL Server 2008 访问MySQL(转)

    在公司中经常会遇到部署多种数据库环境的情况,对于开发人员来说经常在不同数据库之间转换确实有些繁琐,本篇将介绍从SQL Server 操作MySQL 数据库的方法. 数据库测试环境 1. SQL Ser ...

  8. SQL Azure (14) 将云端SQL Azure中的数据库备份到本地SQL Server

    <Windows Azure Platform 系列文章目录> 注意: 1.只有SQL Server 2012 CU4及以上版本才支持本章内容 2.当你的数据库文件很大时,建议优化以下内容 ...

  9. 在Oracle中使用sql获取数据库名称

    在Oracle中使用sql获取当前数据库名称 select name from v$database;

随机推荐

  1. 测试笔记01-Git

    Git工具 Git 一个分布式版本管理工具, 学习资料: https://www.liaoxuefeng.com/wiki/896043488029600/1317161920364578 其中:解决 ...

  2. 解决proto文件转换时提示“Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. ”

    前言: 想将.proto文件转换成.pb文件时一直报错,一开始以为是文件编码格式的问题,后来将文件改成windows下的utf-8格式后,又出现了新的报错(见下图).百度了很久,才找到解决方法. &q ...

  3. intouch 10.1出现暂停读取PLC数据问题及其解决

    问题描述 雨水泵站经过3年运行,突发dasmbtcp驱动与施耐德M580系列PLC时断时连问题 原因分析 在经过现场软件重装修复,授权重装,网络通讯状态监视(一直ping PLC IP地址方式)重装d ...

  4. SQL SERVER 作业问题(SET 选项的设置不正确: 'QUOTED_IDENTIFIER'。),以及其它定时sql执行方式探索

    在实时曲线测试平台中,需要用到实时测试数据作为依据,评估程序的可靠性.在编写sql server作业时,出现了一些问题,经过研究给予解决,供大家参考. 1.编写脚本如下: declare @i int ...

  5. js学习笔记之在数组中删除重复的元素自保留一个

    遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 <script type="text/javascript"> ...

  6. 论文笔记:(CVPR2017)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    目录 一. 存在的问题 二. 解决的方案 1.点云特征 2.解决方法 三. 网络结构 四. 理论证明 五.实验效果 1.应用 (1)分类: ModelNet40数据集 (2)部件分割:ShapeNet ...

  7. anyRTC SDK 5月迭代:优化自定义加密功能,让通信更安全

    anyRTC SDK 5月上新,新增多种加密类型,让实时音视频通信更安全:新增移动端推流支持1080P分辨率的支持:此外还对事件上报.日志详情.数据统计.网络传输等多项功能进行了优化改进. 以下为更新 ...

  8. 京东购物小程序 | Taro3 项目分包实践

    背景 京东购物小程序作为京东小程序业务流量的主要入口,承载着许多的活动和页面,而很多的活动在小程序开展的同时,也会在京东 APP 端进行同步的 H5 端页面的投放.这时候,一个相同的活动,需要同时开发 ...

  9. 一文读懂Spring动态配置多数据源---源码详细分析

    Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 ​ 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式 ...

  10. 【NLP学习其四】如何构建自己用于训练的数据集?什么是词性标注?

    数据集与词性标注 数据集是NLP中的重要一环. 但是提到数据集,很多人的第一个想法可能是:"这玩意从网上下载就好了,不用管". 真的不用管?最开始我也是这么认为的 于是我直奔CoN ...