一、笛卡尔积:
(毫无关系的两张表)行的总数=第一个表行数*第二行表行数:
表1:
a | b |
c | d |
表2:
1 | 2 |
3 | 4 |
通过笛卡尔积计算得到的表:(2*2)
a | b | 1 | 2 |
a | b | 3 | 4 |
c | d | 1 | 2 |
c | d | 3 | 4 |
select * from vendors,products; #将vendors表与products表作笛卡尔积计算
二、创建联结
1、等值联结
❤
select vendors.vend_id,products.vend_id,vend_name,prod_name,prod_price
from vendors,products
where vendors.vend_id=products.vend_id
order by vend_name asc,prod_name asc;
关联表会消耗性能
2、内连接——等值联结
❤
select vend_name,prod_price,prod_name
from vendors inner join products
on vendors.vend_id =products.vend_id;
#将数量少的表放在前面,数量多的表放在后面(表的顺序不同,但执行结果相同时)
给表起表名
❤
select cust_name,cust_contact
from customers c,orders o,orderitems oi
where c.cust_id=o.cust_id and oi.order_num=o.order_num and prod_id='TNT2';
#不能用customers等原表名——先执行from后面的语句
3、自联结
自联结执行效率高于子查询
❤
select p2.prod_name
from products p1,products p2
where p1.vend_id=p2.vend_id
and p1.prod_id='DTNTR'; #等值联结
select prod_name from products
where vend_id=(select vend_id from products where prod_id='DTNTR'); #子联结
4、外联结
主表全显示,非主表只显示满足条件的项(没有则为null)
a. 左联结-左表为主表
b. 右联结-右表为主表
三、数据库的特点:
1.关系型数据库(将数据放在不同表中,而不是大仓库中——提高速度和灵活性)
(约束:主键和外键进行表的连接——不可随便删除)
2.SQL语言是访问数据库的最常用标准化语言
3.体积小,速度快,总体成本低,开放源代码——实用性强
MySQL——基于C/S的数据库管理软件