1.多表之间的建表原则

  一对多:商品和分类

    建表原则:在多的一方添加一个外键,指向一的一方的主键

  多对多:老师和学生,学生和课程

    建表原则:建立一张中间表,将多对多的关系,拆分成一对多的关系,中间表至少要有两个外键,分别指向原来的两张表

  一对一:班级和班长,公民和身份证,国家和国旗

    建表原则:  

      将一对一的情况,当做是一对多的情况处理,在任意一张表添加一个外键,并且这个外键要唯一指向另外一张表

      直接将两张表合并成一张表

      将两张表的主键建立起连接,让两张表里面的主键相等

    多表之间的关系如何维护:外键约束:foreign key

      添加一个外键:alter table 表名 add foreign key(列名) references 表名(列名);

        创建时添加:foreign key(列名) reference 表名(列名)

        删除的时候,先删除外键关联的所有数据,再才能删除分类的数据

    主键约束:默认就是不能为空,唯一

      外键都是指向另外一张表的主键

      主键一张表只能有一个

    唯一约束:列里面的内容,必须是唯一,不能出现重复的情况,可以为空

      唯一约束不可以作为其他表的外键

      可以有多个唯一约束

2.多表查询内链接

  内连接查询:

    隐式内链接:

      select * from 表名 p,表名 c where p.cno=c.cid;

    显示内链接:

      select * from 表名 p inner join 表名 c on p.cno=c.cid;

    区别:

      隐式内链接:在查询出结果的基础上去做的where条件过滤

      显示内链接:带着条件去查询结果,执行效率要高

3.多表外连接查询;

    左外连接;  

      会将左表中的所有元素都查询出来,如果右表中没有对应的数据,用NULL代替

      select * from 表名 p left outer join 表名 c on p.列名(外键约束)=c.列名;

    右外连接:

      会将右表所有的数据都查询出来,如果左表中没有对应的数据的话,用NULL代替

      select * from 表名 p right outer join 表名 c on p.列名(外键约束)=c.列名;

4.分页查询

  每页数据3

  起始索引从0

  第1页:0

  第2页:3

    起始索引;index代表显示第几页

    每页显示3条数据

    starindex=(index-1)*3

  第一个参数是索引

  第二个参数每页是显示的个数

  eg:select * from 表名 limit 0.3;

    select * from 表名 limit 3,3;

5.子查询

  select * from product where

  

SQL多表操作的更多相关文章

  1. My Sql多表操作(转载)

    DELETE 在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录. 假定我们有两张表:Pr ...

  2. SQL复制表操作

    select * into tb1 from tb2 insert into tb1 (fld1, fld2)  select fld1, 0 from tb2 where fld0='x' 以上两句 ...

  3. SQL server 表操作语句(原创)

    CREATE TABLE [dbo].[test] ([id11] int NOT NULL ,[as] varchar(1) COLLATE Chinese_PRC_CI_AS NULL ,[asd ...

  4. sql 单表操作

    前戏 --创建表 create table xxx( id int unsigned not null auto_increment primary key, name varchar(20) not ...

  5. 数据库_7_SQL基本操作——表操作

    SQL基本操作——表操作 建表的过程就是声明列的过程. 表与字段是密不可分的. 一.新增数据表 create table [if not exists] 表名( 字段名字 数据类型, 字段名字 数据类 ...

  6. (转)Hibernate中的多表操作

    http://blog.csdn.net/yerenyuan_pku/article/details/70556208 Hibernate中的多表操作 在实际开发中,我们不可能只是简简单单地去操作单表 ...

  7. Django ORM 多表操作

    目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对 ...

  8. Sql Server系列:数据表操作

    表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...

  9. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

随机推荐

  1. Python入门 (一)

    本文是个人python学习笔记,学习资料为廖雪峰python教程,如需更多内容,请移步廖老师官方网站. 一 安装 官网下载安装包安装,安装好之后,在命令提示符输入python进入Python交互模式: ...

  2. 三大前端框架(react、vue、angular2+)父子组件通信总结

    公司业务需要,react.vue.angular都有接触[\无奈脸].虽然说可以拓展知识广度,但是在深度上很让人头疼.最近没事的时候回忆各框架父子组件通信,发现很模糊,于是乎稍微做了一下功课,记录于此 ...

  3. SQL Server中的连接查询(内连接、外连接、交叉连接)

    在数据库查询中,经常会用到两个有关联的表进行查询,需要把两个表中的数据按照某些条件查出来,这时就可以使用连接查询 连接查询分为三种:内连接.外连接和交叉连接 1. 内连接 内连接inner join ...

  4. Qt学习2---信号与槽

    connect(&b1,&QPushButton::pressed,this,&MainWidget::close); &b1:信号发出者,指针类型 &QPus ...

  5. Bellman-Ford算法(在边权可正可负时求最短路)

    使用FIFO队列实现: bool bellman_ford(int s){ queue<int > Q; memset(inq,0,sizeof(inq)); memset(cnt,0,s ...

  6. laravel session使用 转自http://blog.csdn.net/angle_hearts/article/details/53923782

    use Symfony\Component\HttpFoundation\Session\Session;//存储session $session = new Session;$session-> ...

  7. poj 3641 快速幂

    Description Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a ...

  8. 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

    1.用python实现K均值算法 import numpy as np x = np.random.randint(1,100,20)#产生的20个一到一百的随机整数 y = np.zeros(20) ...

  9. Android Studio删除依赖

    遇到报错 就是要删 ①在build.gradle中删除对应依赖代码(注释了,但是没用??) ②检查工程中的依赖 点击"file">>“project structure ...

  10. 上手d3js

    0---什么是d3js: d3js是一个开源的,基于对svg操作的数据可视化框架,简单的说他提供了数据提供了一系列的数据可视化工具,可以用他很方便的创造出关于svg的动画:svg动画具有可伸缩,不失真 ...