数据库Mysql的学习(六)-子查询和多表操作

 

UPDATE readerinfo SET balance = balance-(SELECT price FROM bookinfo WHERE book_id=20150301)*0.05 WHERE card_id ='20121xxxxxx';
//子查询就是一个嵌套先计算子查询SELECT * FROM borrow WHERE book_id =(SELECT book_id FROM bookinfo book_name ='xxxxxx')SELECT * FROM bookinfo WHERE price <(SELECT ROUND(AVG(price),2) FROM bookinfo);//显示小于平均图书价格的图书信息SELECT * FROM bookinfo WHERE book_category_id <> (SELECT category_id FROM boiokcategory WHERE category='数据库');//显示不是数据库的图书信息SELECT * FROM bookinfo WHERE book_category_id = ANY(SELECT category_id FROM bookcategory WHERE parent_id =1);//        SELECT * FROM bookinfo WHERE price > ANY (SELECT price FROM bookinfo WHERE book_category_id=4);//any为大于他的最小值SELECT * FROM bookinfo WHERE price > SOME (SELECT price FROM bookinfo WHERE book_category_id=4);//some为大于他的最大值SELECT * FROM bookinfo WHERE book_category_id  IN (SELECT category_id FROM bookcategory WHERE parent_id=2)//这时SELECT * FROM bookinfo WHERE book_category_id = ANY (SELECT category_id FROM bookcategory WHERE parent_id=2)//两句等效内层查询语句返回的是一个数据列,供外层查询语句比较操作SELECT * FROM table1 WHERE EXISTS(子查询)//exist判断是否存在,存在就执行外查询CREATE TABLE readerfee(book_id INT,card_id CHAR(18),actul_return_date DATE,book_fee DECIMAL(7,3),PRIMARY KEY(book_id,card_id)
);
SELECT book_id ,card_id,return_id FROM borrowinfo WHERE DATEDIFF(SYSDATE(),return_date) >0 AND statue='';SELECT INTO readerfee(book_id,card_id,return_date) SELECT book_id ,card_id,return_id FROM borrowinfo WHERE DATEDIFF(SYSDATE(),return_date) >0 AND statue='';
//将一个表中的记录插入到另一个表中//练习
UPDATE borrowinfo SET STATUS ='' WHERE book_id =20151101 AND card_id ='20120xxxxx';UPDATE readerfee SET actual_return_date=SYSDATE(),book_fee=DATEDIFF(SYSDATE(),return_date)*0.2 WHERE book_id =20151101 AND card_id='3213100.0xxxx';//多表查询
SELECT book_id ,book_name,category FROM bookinfo INNER JOIN bookcategory ON bookinfo.book_category_id=bookcategory.category_id;
//有内链接  外连接和自连接//内链接
内链接为两个表都满足条件的
SELECT borrowinfo.book_id,book_name,borrowinfo.card_id ,NAME,tel,return_date,STATUS FROM borrowinfo
INNER JOIN bookinfo ON borrowinfo.book_id = bookinfo.book_id
INNER JOIN readerinfo ON borrowinfo.card_id=readerinfo.card_id
WHERE borrowinfo.status=''SELECT t1.book_id,book_namet1.card_id ,NAME,tel,return_date,STATUS FROM borrowinfo t1
JOIN bookinfo t2 ON t1.book_id = t2.book_id
JOIN readerinfo t3 ON t1.card_id=t3.card_id
WHERE t1.status=''//起个别名这样也是可以的,inner可以省略。
//ON 后面为内连接的条件//外连接 有左连接和右连接
左连接 显示左表的全部记录  右表满足条件的记录,右连接同理SELECT book_id ,book_name,category FROM bookcategory
LEFT JOIN bookinfo ON bookcategory.category_id =bookinfo.book_category_id;
WHERE parent_id<>0;SELECT book_id ,book_name,category FROM bookcategory
RIGHT JOIN bookinfo ON bookcategory.category_id =bookinfo.book_category_id;
WHERE parent_id<>0;//自连接
SELECT * FROM bookcategorySELECT s.category_id AS '图书类别编号' ,s.category AS '图书类别名称' ,p.category AS '图书上级分类名称' FROM bookcategory s
LEFT JOIN bookcategory p ON s.parent_id =p.category_id;//多表更新
首先需要把表连接起来
UPDATE readerfee t1 JOIN readerinfo t2 ON t1.card_id=t2.card_id
SET actual_return_date =SYSDATE() , bookfee=DATEDIFF(SYSDATE(),return_date)*0.2 , balance=balance-book_fee
WHERE t1.book_id =20151101 AND t1.card_id='2002xxxxxxxx';
//表的复制
CREATE TABLE bookcategory_bak
AS
SELECT * FROM bookcategory;
//多表删除
多表删除的话要用到多表连接
DELETE xx,xx,FROM (多表连接的东西)

 

UPDATE readerinfo SET balance = balance-(SELECT price FROM bookinfo WHERE book_id=20150301)*0.05 WHERE card_id ='20121xxxxxx';
//子查询就是一个嵌套先计算子查询

SELECT * FROM borrow WHERE book_id =(SELECT book_id FROM bookinfo book_name ='xxxxxx')

SELECT * FROM bookinfo WHERE price <(SELECT ROUND(AVG(price),2) FROM bookinfo);//显示小于平均图书价格的图书信息

SELECT * FROM bookinfo WHERE book_category_id <> (SELECT category_id FROM boiokcategory WHERE category='数据库');//显示不是数据库的图书信息

SELECT * FROM bookinfo WHERE book_category_id = ANY(SELECT category_id FROM bookcategory WHERE parent_id =1);//

SELECT * FROM bookinfo WHERE price > ANY (SELECT price FROM bookinfo WHERE book_category_id=4);//any为大于他的最小值

SELECT * FROM bookinfo WHERE price > SOME (SELECT price FROM bookinfo WHERE book_category_id=4);//some为大于他的最大值

SELECT * FROM bookinfo WHERE book_category_id IN (SELECT category_id FROM bookcategory WHERE parent_id=2)//这时

SELECT * FROM bookinfo WHERE book_category_id = ANY (SELECT category_id FROM bookcategory WHERE parent_id=2)//两句等效内层查询语句返回的是一个数据列,供外层查询语句比较操作

SELECT * FROM table1 WHERE EXISTS(子查询)//exist判断是否存在,存在就执行外查询


CREATE TABLE readerfee(
book_id INT,
card_id CHAR(18),
actul_return_date DATE,
book_fee DECIMAL(7,3),
PRIMARY KEY(book_id,card_id)
);
SELECT book_id ,card_id,return_id FROM borrowinfo WHERE DATEDIFF(SYSDATE(),return_date) >0 AND statue='否';

SELECT INTO readerfee(book_id,card_id,return_date) SELECT book_id ,card_id,return_id FROM borrowinfo WHERE DATEDIFF(SYSDATE(),return_date) >0 AND statue='否';
//将一个表中的记录插入到另一个表中


//练习
UPDATE borrowinfo SET STATUS ='是' WHERE book_id =20151101 AND card_id ='20120xxxxx';

UPDATE readerfee SET actual_return_date=SYSDATE(),book_fee=DATEDIFF(SYSDATE(),return_date)*0.2 WHERE book_id =20151101 AND card_id='3213100.0xxxx';




//多表查询
SELECT book_id ,book_name,category FROM bookinfo INNER JOIN bookcategory ON bookinfo.book_category_id=bookcategory.category_id;
//有内链接 外连接和自连接

//内链接
内链接为两个表都满足条件的
SELECT borrowinfo.book_id,book_name,borrowinfo.card_id ,NAME,tel,return_date,STATUS FROM borrowinfo
INNER JOIN bookinfo ON borrowinfo.book_id = bookinfo.book_id
INNER JOIN readerinfo ON borrowinfo.card_id=readerinfo.card_id
WHERE borrowinfo.status='否';


SELECT t1.book_id,book_namet1.card_id ,NAME,tel,return_date,STATUS FROM borrowinfo t1
JOIN bookinfo t2 ON t1.book_id = t2.book_id
JOIN readerinfo t3 ON t1.card_id=t3.card_id
WHERE t1.status='否'; //起个别名这样也是可以的,inner可以省略。
//ON 后面为内连接的条件

//外连接 有左连接和右连接
左连接 显示左表的全部记录 右表满足条件的记录,右连接同理

SELECT book_id ,book_name,category FROM bookcategory
LEFT JOIN bookinfo ON bookcategory.category_id =bookinfo.book_category_id;
WHERE parent_id<>0;


SELECT book_id ,book_name,category FROM bookcategory
RIGHT JOIN bookinfo ON bookcategory.category_id =bookinfo.book_category_id;
WHERE parent_id<>0;

//自连接
SELECT * FROM bookcategory

SELECT s.category_id AS '图书类别编号' ,s.category AS '图书类别名称' ,p.category AS '图书上级分类名称' FROM bookcategory s
LEFT JOIN bookcategory p ON s.parent_id =p.category_id;

//多表更新
首先需要把表连接起来
UPDATE readerfee t1 JOIN readerinfo t2 ON t1.card_id=t2.card_id
SET actual_return_date =SYSDATE() , bookfee=DATEDIFF(SYSDATE(),return_date)*0.2 , balance=balance-book_fee
WHERE t1.book_id =20151101 AND t1.card_id='2002xxxxxxxx';
//表的复制
CREATE TABLE bookcategory_bak
AS
SELECT * FROM bookcategory;
//多表删除
多表删除的话要用到多表连接
DELETE xx,xx,FROM (多表连接的东西)

 

转载于:https://www.cnblogs.com/wpbing/p/9204782.html

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

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

相关文章

有关算法方面的经典书籍推荐

如果计算机系只开三门课&#xff0c;那么这三门课就一定是&#xff1a;离散数学&#xff0c;数据结构与算法&#xff0c;编译原理。如果只开一门课&#xff0c;那剩下的就一定是&#xff1a;数据结构与算法。Niklaus Wirth说&#xff1a;算法&#xff0b;数据结构&#xff1d;程…

idea资源包下创建资源包_资源包技巧和最佳实践

idea资源包下创建资源包今天是资源捆绑日。 通常&#xff0c;这是Java中最著名的国际化机制&#xff08;i18n&#xff09;。 使用它应该很容易。 但是&#xff0c;弄污双手时会出现许多小问题。 如果您有相同的想法&#xff0c;则此文章适合您。 基本 java.util.ResourceBundl…

MATLAB字符串输出

print();%最基本的字符串输出error();%主要用于报错

将JINQ与JPA和H2一起使用

几天前&#xff0c;我读了Iu Ming-Yee关于JINQ的有趣采访 。 顾名思义&#xff0c;JINQ是一种尝试提供类似于LINQ for Java的尝试。 基本思想是缩小在关系数据模型上执行查询的面向对象代码之间的语义鸿沟。 关系数据库模型的查询应轻松集成到代码中&#xff0c;以使其感觉更自…

蓝桥杯 2011年第二届C语言初赛试题(1)

轮换 串“abcd”每个字符都向右移位&#xff0c;最右的移动到第一个字符的位置&#xff0c;就变为“dabc”。这称为对串进行位移1的轮换。同理&#xff0c;“abcd”变为&#xff1a;“cdab”则称为位移2的轮换。 下面的代码实现了对串s进行位移为n的轮换。请补全缺失的代码。…

MATLAB读写mat文件

1. 保存mat文件&#xff1a;save %将工作区间中所有的变量都储存为MATLAB.mat文件中save filename %将工作区间中所有的变量都储存为filename.mat文件中save filename x1 x2 x3 ⋯⋯ xn %将工作区间中变量名位 x1 x2 x3 ⋯⋯ xn的变量都储存在filen…

奇偶换行颜色变化

<!DOCTYPE html><html> <head> <meta name"viewport" content"widthdevice-width"> <title>js</title> <style type"text/css"> td{ border: 1px solid red; } /* * 方法一 * tr:nth-child(odd):hove…

楼天城 楼教主

楼天城 求助编辑百科名片 楼天城楼天城是杭州人&#xff0c;姚期智教授的得意门生&#xff0c;正是姚教授发现他的才能后把他引上了现在的研究方向&#xff0c;并大力举荐他参加国际学术会议和比赛。在网络上他被称为“楼教主”&#xff0c;清华同学则简称他“教主”。中文名&a…

MATLAB读写Excel数据

读&#xff1a;[num,txt] xlsread(FileName.xls,n,basic);%num保存的是数据矩阵&#xff0c;txt保存的是文本矩阵&#xff0c;n是标签数从1开始计数,basic是区间&#xff0c;如A1:B3写&#xff1a;xlswrite(filename.xls,num,n,range);%:文件名&#xff0c;变量名&#xff0c;…

很多文章是在下转载贴在此处,是为了自己以后遇到类似问题一时想不起来

有转载有原创,更多是为了记录一些解决方案,,毕竟好记性不如烂笔头.转载于:https://www.cnblogs.com/wuchenV/p/9209356.html

jpa 与非jpa 结合_EasyCriteria –使用JPA标准的简便方法

jpa 与非jpa 结合今天&#xff0c;我们将看到有关此工具的信息&#xff0c;该工具使使用JPA Criteria更加容易。 使用该库的应用程序将在JPA实现中更加简洁&#xff0c;易于使用和可移植。 在本文的结尾&#xff0c;您将找到要下载的源代码。 什么是标准&#xff1f; 当前是创…

在c++中qsort()排序函数的使用qsort函数应用大全

七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 二、对char类型数组排序&#xff08;同in…

Python排序算法之快速排序

转自&#xff1a;https://www.cnblogs.com/AlwinXu/p/5424905.html 快速排序&#xff08;quickSort&#xff09; 快排的思想&#xff1a;首先任意选取一个数据&#xff08;通常选用数组的第一个数&#xff09;作为关键数据&#xff0c;然后将所有比它小的数都放到它前面&#x…

Apache PDFBox 2

Apache PDFBox 2已于今年早些时候发布 &#xff0c; Apache PDFBox 2.0.1和Apache PDFBox 2.0.2已发布。 Apache PDFBox是开源的&#xff08; Apache许可证版本2 &#xff09;并且基于Java&#xff08;因此易于使用&#xff0c;包括Java &#xff0c; Groovy &#xff0c; Scal…

HDU题目分类啊!!!

分类一&#xff08;详细&#xff09;&#xff1a; 分类二&#xff1a; 基础题&#xff1a;1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095…

关于DP与背包

听说过动态规划&#xff08;DP&#xff09;的同学应该都知道有背包问题的存在。 首先我们来了解一下动态规划 基本思想&#xff1a; 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中&#xff0c; 可能会有很多可行解。没一个解都对应于一个值&#xff0c;我们希…

MATLAB图像中添加标记

指定坐标添加标记: text(x,y,str)手动指定位置添加标记: gtext(str)横纵坐标xlabel()%横ylabel()%纵tittle()%标题

QQ空间说说的表情添加的代码

QQ空间说说的表情添加的代码 [em]e100[/em] 微笑 [em]e101[/em] 撇嘴[em]e102[/em] 色[em]e103[/em] 发呆[em]e104[/em] 得意[em]e105[/em] 流泪[em]e106[/em] 害羞[em]e107[/em] 闭嘴[em]e108[/em] 睡[em]e109[/em] 大哭[em]e110[/em] 尴尬[em]e111[/…

使用Spring boot,Thymeleaf,AngularJS从零开始构建一个新的Web应用程序-第3部分

在之前的博客中&#xff0c;我们使用Thymeleaf&#xff0c;Bower和Bootstrap构建了登录页面&#xff0c;并将其部署到了Heroku。 在此博客中&#xff0c;我们将介绍用于前端的AngularJS和在后端的Spring Boot Web服务的一些功能。 我们将从“登录/注销”部分开始。 让我们开始…