MySQL 多表操作
创建多表及多表的关系
问: 分类表和商品表之间是不是有关系? 如果有关系,在数据库中如何表示这种关系?
create table category(cid int primary key auto_increment,cname varchar(10),cdesc varchar(31)
);insert into category values(null,'手机数码','电子产品,黑马生产');
insert into category values(null,'鞋靴箱包','江南皮鞋厂倾情打造');
insert into category values(null,'香烟酒水','黄鹤楼,茅台,二锅头');
insert into category values(null,'酸奶饼干','娃哈哈,蒙牛酸酸乳');
insert into category values(null,'馋嘴零食','瓜子花生,八宝粥,辣条');select * from category;
select cname,cdesc from category;--所有商品
1.商品ID
2.商品名称
3.商品的价格
4.生产日期
5.商品分类ID商品和商品分类 : 所属关系
create table product(pid int primary key auto_increment,pname varchar(10),price double,pdate timestamp,cno int
);insert into product values(null,'小米mix4',998,null,1);
insert into product values(null,'锤子',2888,null,1);
insert into product values(null,'阿迪王',99,null,2);
insert into product values(null,'老村长',88,null,3);
insert into product values(null,'劲酒',35,null,3);
insert into product values(null,'小熊饼干',1,null,4);
insert into product values(null,'卫龙辣条',1,null,5);
insert into product values(null,'旺旺大饼',1,null,5);
- 多表之间的关系如何来维护
外键约束: foreign key-给product中的cno 添加一个外键约束alter table product add foreign key(cno) references category(cid);-从分类表中,删除分类为5信息delete from category where cid =5; //删除失败,首先得去product表, 删除所有分类ID5 商品delete from product where cno=5;
- 建数据库原则: 通常情况下,一个项目/应用建一个数据库
- 多表之间的建表原则
- 一对多 : 商品和分类建表原则: 在多的一方添加一个外键,指向一的一方的主键- 多对多: 老师和学生, 学生和课程建表原则: 建立一张中间表,将多对多的关系,拆分成一对多的关系,中间表至少要有两个外键,分别指向原来的那两张表。- 一对一: 班级和班长, 公民和身份证, 国家和国旗建表原则: - 将一对一的情况,当作是一对多情况处理,在任意一张表添加一个外键,并且这个外键要唯一,指向另外一张表- 直接将两张表合并成一张表- 将两张表的主键建立起连接,让两张表里面主键相等- 实际用途: 用的不是很多. (拆表操作 )- 相亲网站: - 个人信息 : 姓名,性别,年龄,身高,体重,三围,兴趣爱好,(年收入, 特长,学历, 职业, 择偶目标,要求)- 拆表操作 : 将个人的常用信息和不常用信息,减少表的臃肿,
网上商城表案例分析:用户购物流程
- 商品分类表(分类ID,分类名称,分类描述)
create table category(cid int primary key auto_increment,cname varchar(15),cdesc varchar(100));insert into category values(null,'手机数码','电子产品,黑马生产');insert into category values(null,'鞋靴箱包','江南皮鞋厂倾情打造');insert into category values(null,'香烟酒水','黄鹤楼,茅台,二锅头');insert into category values(null,'酸奶饼干','娃哈哈,蒙牛酸酸乳');insert into category values(null,'馋嘴零食','瓜子花生,八宝粥,辣条');
- 商品表 (商品ID, 商品名称,商品价格,外键cno)
create table product(pid int primary key auto_increment,pname varchar(10),price double,cno int,foreign key(cno) references category(cid));insert into product values(null,'小米mix4',998,1);insert into product values(null,'锤子',2888,1);insert into product values(null,'阿迪王',99,2);insert into product values(null,'老村长',88,3);insert into product values(null,'劲酒',35,3);insert into product values(null,'小熊饼干',1,4);insert into product values(null,'卫龙辣条',1,5);insert into product values(null,'旺旺大饼',1,5);
- 用户表
create table user(uid int primary key auto_increment,username varchar(31),password varchar(31),phone varchar(11));insert into user values(1,'zhangsan','123','13811118888');
- 订单表 (订单编号,总价,订单时间 ,地址,外键用户的ID)
create table orders(oid int primary key auto_increment,sum int not null,otime timestamp,address varchar(100),uno int,foreign key(uno) references user(uid));insert into orders values(1,200,null,'学校',1);insert into orders values(2,250,null,'家里',1);
- 订单项: 中间表(订单ID,商品ID,商品数量,订单项总价)
create table orderitem(ono int,pno int,foreign key(ono) references orders(oid),foreign key(pno) references product(pid),ocount int,subsum double);--给1号订单添加商品 200块钱的商品insert into orderitem values(1,7,100,100);insert into orderitem values(1,8,101,100);--给2号订单添加商品 250块钱的商品 ()insert into orderitem values(2,5,1,35);insert into orderitem values(2,3,3,99);
- 内连接查询
-隐式内连接select * from product p,category c where p.cno=c.cid;
-显式内连接select * from product p inner join category c on p.cno=c.cid;
-区别:隐式内连接:在查询出结果的基础上去做where 条件过滤显式内连接:带着条件去查询结果,执行效率高。
- 连接查询
左外连接:会将左表中的所有数据都查询出来,如果右表中没有对应的数据,用NULL代替。
右外连接:会将右表中的所有数据查询出来如果左表没有对应数据的话 - 分页查询
每页数据数据3,起始索引从0 ,第1页: 0,第2页: 3。
起始索引: index 代表显示第几页 页数从1开始,每页显示3条数据
startIndex = (index-1)*3
- 第一个参数是索引
第二个参数显示的个数
select * from product limit 0,3;
select * from product limit 3,3;
- 子查询
sql的嵌套:查询语句里面嵌套查询语句
MySQL 多表操作相关推荐
- 关于MySQL分表操作的研究
关于MySQL分表操作的研究 一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法.首先,我们需要想好到底分多少个表,前提当然是满足应用.这里 ...
- MYSQL数据库表操作pdf
<MYSQL数据库表操作pdf> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731023.html
- 数据库 MySQL 之 表操作、存储引擎
数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名( 字段名1 ...
- 【MySQL多表操作练习】
多表操作练习 > > > MySQL基础 > > > MySQL的多表操作查询 > > > MySQL多表操作练习 > > > ...
- qt mysql怎么选表_Qt的Mysql数据库表操作(1)
Qt中的QSqlDatabase.QSqlQueryModel.QSqlRecord.QSqlTableModel等类为我们提供了快速开发数据库的方式,支持多种数据库连接,例如oracle,db2,M ...
- mysql怎么多表备份_学习MySQL多表操作和备份处理
[IT168 服务器学院]前面我们熟悉了数据库和数据库表的基本操作,现在我们再来看看如何操作多个表. 多表操作 在一个数据库中,可能存在多个表,这些表都是相互关联的.我们继续使用前面的例子.前面建立的 ...
- 【MySQL】表操作和库操作
文章目录 概念 库操作 1.创建数据库 2.删除数据库 3.选择数据库 4.显示数据库列表 表操作 1.创建数据表CREATE 2.删除数据表DROP 3.插入数据INSERT 4.更新数据UPDAT ...
- mysql数据表操作_MySQL数据表基本操作实例详解
本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...
- mysql多表操作语句_MYSQL数据库语句之多表操作(三)
多表操作 join查询(join按照功能分可以分为3类): cross join(交叉连接):获取多个表中的交叉关系. inner join(内连接):获取2个表中字段匹配关系的记录. 外连接 lef ...
- MySQL多表操作的外键约束
目录 一.多表关系 一对一关系 一对多/多对一关系 多对多关系 二.外键约束 特点 创建外键约束 方式1-在创建表时设置外键约束 方式2-在创建表时设置外键约束 在外键约束下的操作 1.数据插入 2. ...
最新文章
- 服务器端linux发行版的选择
- java拦截到登陆界面,JavaWeb 使用Filter实现自动登录
- fedora20开机启动配置:systemctl
- 弹性架构_实践中的弹性基础架构
- 如何使用NodeManager来控制WebLogic Server
- TWiki 语法格式(TWiki语法教程及TWiki使用技巧)
- Objectove-c单例模式
- Android studio错误:module not specified
- 解决办法:对‘operator delete(void*)’未定义的引用
- js检测浏览器支持的字体
- 如何修改hosts文件?几种修改hosts文件的方法
- D3D11 法线贴图(凹凸贴图)
- 网络协议篇之CWMP协议(三)—— RPC方法
- python3实现base64编码
- 雷蛇灵刃触摸按压反馈失灵解决方法
- 安装SQL Server 2008 及 VS 2008
- Chatbot 聊天机器人页面交互设计
- 我博士科研经历中的经验和教训——朱亮
- RabbitMQ消息队列工作原理及集成使用
- NYOJ:458-小光棍数