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 = '张三'

猜你喜欢

转载自blog.csdn.net/qq_41579634/article/details/86717156
今日推荐