CREATE TABLE A
创新互联建站服务项目包括立山网站建设、立山网站制作、立山网页制作以及立山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,立山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到立山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
(`id` int, `title` varchar(2));
INSERT INTO A
(`id`, `title`)
VALUES
(1, 'ab'),
(2, 'cd') ;
CREATE TABLE B
(`id` int, `author` varchar(5));
INSERT INTO B
(`id`, `author`)
VALUES
(1, 'zhang'),
(2, 'rui'),
(3, 'gang');
查询下面的语句:
select * from A ,B where A.ID=B.ID;
要点:left
join,right
join,inner
join
首先有如下两个表:
student:
id(int)
name(nvarchar)
1
a
2
b
3
c
4
d
5
e
6
f
quiz:
id(int)
score(int)
1
60
2
70
4
80
6
90
8
100
9
30
内连接:(inner
join)包括连接表的匹配行
select
student.name,quiz.score
from
quiz
inner
join
student
on
student.id=quiz.id
name
score
a
60
b
70
d
80
f
90
左连接:(left
join)包括连接表匹配行以及左连接表的所有行
select
student.name,quiz.score
from
student
left
join
quiz
on
student.id=quiz.id
name
score
a
60
b
70
c
null
d
80
e
null
f
90
右连接:(right
join)结果包括连接表的匹配行以及右连接表的所有行
select
student.name,quiz.score
from
student
right
join
quiz
on
student.id=quiz.id
name
score
a
60
b
70
d
80
f
90
null
100
null
30
当然,也可以看出左连接也可以写成右连接的形式:
select
student.name,quiz.score
from
student
right
join
quiz
on
student.id=quiz.id等价于
select
student.name,quiz.score
from
quiz
left
join
student
on
student.id=quiz.id
MySQL在多个数据表上创建视图
在MySQL中,使用CREATE VIEW语句也可以在两个或两个以上的数据表上创建视图。
实例
在department表和worker表上创建一个名为worker_view1的视图。
1. 创建视图的代码如下:
CREATE ALGORITHM=MERGE VIEW
worker_view1(name,department,sex,age,location)
AS SELECT name,department.d_name,sex,birthday,address
FROM worker,department WHERE worker.d_id=department.d_id
WITH LOCAL CHECK OPTION;
在DOS提示符窗口中查看MySQL在多个数据表上创建视图的操作效果。如下图所示:
在DOS提示符窗口中查看MySQL在多个数据表上创建视图的操作效果
从上图中可以看出,代码的执行结果显示视图创建成功。
2. 使用DESC语句查询虚拟表的结构。如下图所示:
使用DESC语句查询虚拟表的结构
从上图中可以看出,视图worker_view1的属性分别为name、department、sex、age和location。
视图指定的属性列表对应着两个不同的表的属性列(字段)。
视图的属性名与属性列表中的属性名相同。
该实例中的SELECT语句查询出了department表的d_name字段,还有worker表的name、sex、birthday和address。其中,department表的d_name字段对应视图的department字段;worker表的birthday字段对应视图的age字段。
同时,视图worker_view1的ALGORITHM的值指定为MERGE。还增加了WITH LOCAL CHECK OPTION约束。
本示例说明,视图可以将多个表上的操作简洁的表示出来。
提示
同时在多个表上创建视图是非常有用的。比如,系统中有student表、department表、score表和grade表,分别存储学生的信息、院系信息、课程信息和成绩信息。可以在这4个表上创建一个视图,用来显示学生姓名、学号、班级、院系、所选课程和课程成绩。
写存储过程函数(如function cleanTable),在函数中写50条delete语句,或者在函数中弄个循环都可以。然后在客户端执行call cleanTable()就可以了。