一、外键
  1.外键:链接两张表的字段,通过主表的主键和从表的外键来描述主外键关系,呈现的是一对多的关系。例如:商品类别(一)对商品(多),主表:商品类别表,从表:商品表。
  2.外键的特点:从表外键的值是对主表主键的引用、从表外键类型必须与主表主键类型一致
  3.声明外键约束
    语法:alter table (从表) add [constraint] (外键名称) foreign key (从表外键字段名) references 主表 (主表的主键)
    例如:(1).ALTER TABLE product(从表) ADD CONSTRAINT cid(外键名称) FOREIGN KEY (cid)(从表外键字段名) REFERENCES category(主表) (cid)(主表的主键);
          (2). ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid);
    [外键名称]用于删除外键约束,一般建议”_fk”结尾
    alter table 从表 drop foreign key 外键名称;
  3. 使用外键的目的:保证数据完整性
  4.注意事项:从表外键不能添加主表中不存在的记录、主表不能删除从表中已经引用的记录
二、表与表之间的关系
  表与表之间的关系,就是表与表数据之间的关系。
  1. 一对多关系:
    常见实例:客户和订单,分类和商品,部门和员工
    一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
    语法:ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid);
  2. 多对多关系:
    常见实例:学生和课程,商品和订单,人和角色
    多对多建表原则:需要创建第三张表,中间表至少要有两个字段,这两个字段分别作为外键指向各自一方的主键(就是将一个多对多拆分成两个一对多)
    两张表分别都是主表,第三张表为从表,提供两个字段,都是外键。
    语法:alter table 从表(stu_course) add foreign key(sno) references stu(sid);
    alter table 从表(stu_course) add foreign key(cno) references course(cid);
  3. 一对一关系:(了解)
    在实际开发中应用不多,因为一对一可以创建成一张表
    常见实例:公司和地址
    两种原则:外键唯一,外键是主键
三、操作
  1.多表查询
    (1).交叉连接查询(得到两个表的乘积,基本不使用)
      select * from A,B;
    (2).内连接查询(使用关键字:inner join -- inner可以省略)
      隐式内连接:select * from A,B where 条件;
      例如:select * from category c,product p where c.cid=p.cid;
      显式内连接:select * from A inner join B on 条件;
      例如:select * from category as c inner join product as p on p.cid=c.cid;
    (3).外连接查询(使用关键字outer join --outer可以省略)
      左外连接:left outer join
      select * from A left outer join B on 条件;
      例如:select * from category c left join product p on p.cid=c.cid;
      右外连接:right outer join
      select * from A right outer join B on 条件;
      例如:select * from category c right join product p on p.cid=c.cid;
    内连接和外连接的区别:
      左外连接:查询的是左表全部及两个表的交集
      内连接:查询的是两个表的交集
      右外连接:查询的是右表全部及两个表的交集
  2.子查询
    一条select语句结果作为另一条select语法的一部分(查询条件、查询结果、表等)
    例如:查询化妆品分类上架商品详情
    select * from product where cid =(select cid from category where cname='化妆品');

最新文章

  1. 详解:基于WEB API实现批量文件由一个服务器同步快速传输到其它多个服务器功能
  2. Linux下不同机器之间拷贝文件
  3. CentOS卸载OpenJDK并安装Sun JDK
  4. SAP系统更改小数点显示问题
  5. The index also can be used for LIKE comparisons if the argument to LIKE is a constant string that does not start with a wildcard character.
  6. git的忽略文件和删除文件操作
  7. js实现对数据库的增删查改
  8. MVC-Html.ActionLink的几种写法
  9. win7 64位 VS2010调试提示“ORA-12154: TNS: 无法解析指定的连接标识符”的解决方法
  10. ajax大数据排队导出+进度条
  11. linux服务之NFS和SAMBA服务
  12. NSIS:静默释放文件并运行 制作绿色单文件软件
  13. hdu_5044_Tree(树链剖分)
  14. Java 垃圾回收机制学习
  15. 我的Java开发学习之旅------>Base64的编码思想以及Java实现
  16. python正则实现简单计算器
  17. 用java理解程序逻辑小结
  18. sublime text 3 ,React,html元素自动补全方法(用Emmet写法写jsx中的html)
  19. Java类库和常用类库介绍
  20. 多用StringBuilder,少用字符串拼接

热门文章

  1. debug找到source lookup path以及,debug跑到另外的解决办法
  2. POJ 1927 Area in Triangle(计算几何)
  3. ASP.NET MVC 原理
  4. Google Gson使用简介
  5. Node.js 101(2): Promise and async
  6. [10.27_P2] 统计损失 (简单树形DP)
  7. 数据库sqlite3的使用-代码实例应用
  8. bzoj 4753 最佳团体 —— 01分数规划+树形背包
  9. 洛谷 P3952 时间复杂度【模拟】
  10. P2210 Haywire(A*)