mysql练习(二)

多表查询

数据准备

drop table if exists students;

CREATE table students(
	studentNo VARCHAR(10) PRIMARY key,		/*学号,主键*/
	name VARCHAR(10),				/*名字*/
	sex VARCHAR(2),					/*性别*/
	hometown varchar(20),  	/*家乡*/
	age tinyint,						/*年龄*/
	class VARCHAR(10),			/*班级*/
	card VARCHAR(20)    /*身份证*/
)

insert into students values
('001','林一','女','北京','25','1班','111111111111111111'),
('002','林二','男','北京','30','2班','111111111111111112'),
('003','黄三','女','武汉','15','3班','111111111111111113'),
('004','无名','男','长沙','25','2班','111111111111111114'),
('005','林檎杰','女','北京','35','2班','111111111111111115'),
('006','黄檎','男','长沙','25','1班',null),
('007','张杰','女','武汉','15','3班','');

create table courses (
	courseNo int UNSIGNED PRIMARY key auto_increment,/*课程号,主键,自增长*/
	coursename varchar(10)	/*课程名称*/
)

insert into courses (coursename) values 
('数据库'),
('html'),
('linux'),
('系统测试'),
('单元测试'),
('测试过程'),
('python');

create table scores (
	id int UNSIGNED primary key auto_increment,/*id,主键自增长*/
	courseNo int UNSIGNED ,/*课程号,与courses表中的courseNO相关联*/
	studentNo varchar(10),/*学号。与students表中的studentNo相关联*/
	score tinyint /*成绩*/
)

insert into scores (courseNo,studentNo,score) values
(1,'001',90),
(1,'002',75),
(2,'002',98),
(3,'001',86),
(3,'003',80),
(4,'004',79),
(5,'005',96),
(6,'006',80);


create table areas (
	id int primary key,
	name varchar(20),
	pid int
);

insert into areas values
('130100','石家庄市',NULL),
('130400','邯郸市','130000'),
('130600','保定市','130000'),
('130700','张家口市','130000'),
('130800','承德市','130000'),
('440000','广东省',NULL),
('440300','深圳市','440000'),
('440100','广州市','440000'),
('440500','汕头市','440000'),
('440600','佛山市','440000'),
('440200','韶关市','440000');

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

连接概念

当查询结果来源于多张表时,需要将多张表连接成一个大的数据集,在选择合适的结果返回。
连接查询可以通过连接运算符(连接条件)可以实现多个表查询。
内连接:查询的结果只显示两个表中满足连接条件的部分。
左连接:查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据使用null填充。
右连接:查询的结果为两个表匹配到的数据加右表特有的数据,对于左表中不存在的数据使用null填充。

内连接

双表内连接

语法一、标准语法

select * from 表1 inner join 表2 on 表1.字段=表2.字段
找两个表中相同的部分

students表和scores表关联查询

select * from students 
inner join score
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值