1、笛卡尔积:(毫无关系的两张表)
行的总数=第一个表行数*第二行表行数
表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 |
#将vendors表与products表作笛卡尔积计算
select * from vendors,products;
2、创建联结
a. 等值联结
❤
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;
注:关联表会消耗性能
b. 内连接——等值联结
❤
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后面的语句
c. 自联结
自联结执行效率高于子查询
❤
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'); #自联结
d. 外联结
主表全显示,非主表只显示满足条件的项(没有则为null)
i. 左联结-左表为主表
ii. 右联结-右表为主表
3、数据库的特点:
a. 关系型数据库(将数据放在不同表中,而不是大仓库中——提高速度和灵活性)
(约束:主键和外键进行表的连接——不可随便删除)
b. SQL语言是访问数据库的最常用标准化语言
c. 体积小,速度快,总体成本低,开放源代码——实用性强
MySQL——基于C/S的数据库管理软件