数据库MYSQL学习总结24—多表联查的操作
2019-04-19 21:18
330 查看
版权声明:. https://blog.csdn.net/WildestDeram/article/details/89403524
先创建一个新user
[code]CREATE TABLE IF NOT EXISTS user( id TINYINT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号', username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名', email VARCHAR(50) NOT NULL DEFAULT '134679258@qq.com' COMMENT '邮箱', proName VARCHAR(10) NOT NULL DEFAULT '北京' COMMENT '用户所在省份' ); -- 插入数据 INSERT user(username,proName) VALUES('a','北京'), ('b','哈尔滨'), ('c','上海'), ('d','深圳'), ('e','广州'), ('f','重庆');
如果要把上海删除,而会把上海这个用户删除。如果需要把上海修改成江苏,万一有几万条数据则修改起来麻烦。所以我们需要重新修改表的结构。也就是说把省份作为一个单独的表
[code]-- 创建省份表 CREATE TABLE provinces( id TINYINT UNSIGNED AUTO_INCREMENT KEY COMMENT'编号', proName VARCHAR(10) NOT NULL UNIQUE COMMENT '省份' );
[code]INSERT provinces(proName) VALUES('北京'), ('上海'), ('深圳');
[code]CREATE TABLE IF NOT EXISTS user( id TINYINT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号', username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名', email VARCHAR(50) NOT NULL DEFAULT '134679258@qq.com' COMMENT '邮箱', proid TINYINT UNSIGNED NOT NULL COMMENT '用户所在省份' ); -- 插入数据 INSERT user(username,proid) VALUES('a',1), ('b',1), ('c',1), ('d',2), ('e',3), ('f',1), ('g',1);
proid是用户省份的值,通过内连接就可以查询出来
[code]SELECT u.id,u.username,p.proName FROM user AS u JOIN provinces AS p ON u.proid=p.id;
如果要将'北京'修改成'首都',只需要修改省份表中的数据
[code]UPDATE provinces SET proName='首都' WHERE id=1;
[code]SELECT u.id,u.username,p.proName FROM user AS u JOIN provinces AS p ON u.proid=p.id;
比起直接去修改user中的值,显然修改省份表比较节省性能
[code]CREATE TABLE shopName( id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT KEY COMMENT '编号', cateName VARCHAR(50) NOT NULL UNIQUE COMMENT '商品分类名称', cateDesc VARCHAR(100) NOT NULL DEFAULT 'XX' COMMENT '商品分类描述' ); INSERT shopName(cateName) VALUES('母婴'), ('服装'), ('电子'); CREATE TABLE thing( id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT KEY COMMENT '编号', productName VARCHAR(50) NOT NULL UNIQUE COMMENT '商品名称', price FLOAT(8,2) COMMENT '价格', cateId TINYINT UNSIGNED NOT NULL COMMENT '商品所在分类的编号', adminId TINYINT UNSIGNED NOT NULL COMMENT '管理员编号' ); INSERT thing(productName,price,cateId,adminId) VALUES('iphone9',9888,3,1), ('adidas',1088,2,2), ('nike',888,2,2), ('奶瓶',288,1,1);
[code]-- 查询商品id、商品名称、商品价格 --- 商品分类 SELECT t.id,t.productName,t.price,s.cateName FROM thing AS t JOIN shopName AS s ON t.cateId=s.id;
[code]-- 查询管理员 id username email --- provinces proName SELECT a.id,a.username,a.email,p.proName FROM admin AS a JOIN provinces AS p ON a.proId=p.id;
[code]-- 查询 thing id,productName,price -- shopName cateName -- admin username email SELECT t.id,t.productName,t.price,c.cateName,a.username,a.email FROM thing AS t JOIN admin AS a ON t.adminId=a.id JOIN shopName AS c ON t.cateId=c.Id;
相关文章推荐
- MySQL学习总结----数据库相关操作
- MySQL学习总结(二)数据库以及表的基本操作
- Mysql学习点滴记录(1)--》数据库和表的操作
- Zend Framework 第九节数据库操作学习总结
- 数据库 之 mysql学习总结
- Mysql 数据库基本操作总结
- Mysql学习总结(16)——Mysql之数据库设计规范
- MySQL学习整理之数据库基本操作
- 数据库MYSQL学习总结32—日期时间常用函数的使用
- [MySQL学习]MySQL学习之路(一)131028:数据库的基本操作和数据表的基本操作
- MYSQL入门学习之八:数据库及表的基本操作
- Mysql学习总结(24)——MySQL多表查询合并结果和内连接查询
- 深入学习之mysql(一)数据库操作
- MySQL 数据库 简单操作命令 (部分总结)
- 数据库MYSQL学习总结28—带有ANY、SOME、ALL关键词
- 数据库MYSQL学习总结26—子查询的使用
- MySQL学习笔记2:数据库的基本操作
- mySql-数据库之存储过程学习总结
- PHP基础----PHP 与 MySQL----php操作数据库标准思路(自己总结的,没有标号)
- Mysql学习总结(16)——Mysql之数据库设计规范