MYSQL基础6

CREATE TABLE publisher(

P_ID BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '出版社编号',

P_NAME VARCHAR(20) UNIQUE NOT NULL COMMENT '出版社名',

P_LINKMAN VARCHAR(20) NOT NULL COMMENT '出版社联系人',

P_TEL VARCHAR(20) COMMENT '电话',

P_ADDRESS VARCHAR(50) COMMENT '地址'

)

CREATE TABLE book(

B_ID BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '图书编号',

B_NAME VARCHAR(20) UNIQUE NOT NULL COMMENT '图书名',

P_ID BIGINT(20) COMMENT '出版社编号',

B_AUTHOR VARCHAR(20) COMMENT '图书作者',

B_PRICE FLOAT COMMENT '价格'

)

#查询出版社的所有信息

SELECT * FROM `publisher`

#查询B_NAME='计算机基础'的所有信息,包括出版社的信息

SELECT p.P_NAME,p.P_LINKMAN,b.B_NAME,b.B_PRICE,b.B_AUTHOR

FROM book b INNER JOIN `publisher` p ON b.P_ID=p.P_ID

WHERE b.B_NAME='计算机基础';

#查询所有清华大学出版社出版的所有书籍

SELECT p.P_NAME,p.P_LINKMAN,b.B_NAME,b.B_PRICE,b.B_AUTHOR

FROM book b INNER JOIN `publisher` p ON b.P_ID=p.P_ID

WHERE p.`P_NAME`='清华大学出版社';

#将出版社P_LINKMAN=王伟的手机号修改

UPDATE `publisher` SET P_TEL='11111111111' WHERE P_LINKMAN='王伟';

 

#查询book表中B_AUTHOR以王**开头的所有书籍

SELECT * FROM book WHERE B_AUTHOR='王五';

SELECT * FROM book WHERE B_AUTHOR LIKE '王%';

 

#查询book表中B_AUDHOR以 a 结尾的素有书籍

SELECT * FROM book WHERE B_NAME LIKE '%A';

 

#查询book表中B_AUDHOR包含 C 结尾的素有书籍

SELECT * FROM book WHERE B_NAME LIKE '%C%';

 

#内连接 inner join

SELECT 字段名1,字段名2,,,,字段n FROM 表1 别名1 INNER JOIN 表2 别名2 ON 条件 WHERE 条件

SELECT p.P_NAME,p.P_LINKMAN,b.B_NAME,b.B_PRICE,b.B_AUTHOR

FROM book b INNER JOIN `publisher` p ON b.P_ID=p.P_ID

#-------------------------外连接----------------------------

#左外连接:left join

#左连接当条件不满足的时候,以左边的表为主

SELECT p.P_NAME,p.P_LINKMAN,b.B_NAME,b.B_PRICE,b.B_AUTHOR

FROM book b LEFT JOIN `publisher` p ON b.P_ID=p.P_ID

#右外连接:right join

#右连接当条件不满足的时候,以右边的表为主

SELECT p.P_NAME,p.P_LINKMAN,b.B_NAME,b.B_PRICE,b.B_AUTHOR

FROM book b RIGHT JOIN `publisher` p ON b.P_ID=p.P_ID

 

 

#-------------------3表查询--------------------------------

#求出teacherId=4的平均得分

#得到总分数

SELECT SUM(score) AS total FROM `teacher_question` WHERE teacherId=3;

SELECT COUNT(*) AS num FROM `teacher_question`WHERE teacherId=3 AND questionId=3;

 

SELECT

temp1.total / temp2.num AS 平均分

FROM

(SELECT SUM(score) AS total FROM `teacher_question` WHERE teacherId = 3) temp1,

(SELECT COUNT(*) AS num FROM`teacher_question` WHERE teacherId = 3 AND questionId = 3) temp2

 

#需求:想知道1号顾客具体买了哪些商品(商品名,价格,客户名,手机号)

SELECT g.goodName,g.price,c.customerName,c.phone

FROM goods g INNER JOIN goods_customer gc INNER JOIN customer c

ON g.id = gc.goodId AND gc.customerId = c.id

WHERE c.customerName = '张三'

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值