SQL那些事儿(三)----和小伙伴们做武大游
一、数据库创建注意事项
1、在数据库概念模型设计转换到数据库逻辑模型设计过程中,中有一对一,一对多,多对多的关系:
如(1)用户与mac地址,(2)用户与添加事件,(3)用户与景点,
这时要将他们合理的拆分成多个表,(1)其中一个表设置外键,关联另一个表的主键;(2)事件表中添加外键,关联用户表的主键;(3)用户与景点之间存在评论表,这时用户表与景点表分别单独存储,评论表中设置两个外键,分别关联用户表的主键和景点表的主键;
捎带插一句,进行连接查询的时候也经常会根据上述三种情况分别查询(1)一对一和一对多的情况类似,参考一对多使用;(2)一对多select * from student cross join course wherestudent.ID=course.ID(3)多对多select s.Name,C.Cname from student_course as scleft join student as s on s.Sno=sc.Sno left join course as c on c.Cno=sc.Cno。
2、数据库逻辑模型设计
每个表的结构要与程序中的model一致,但是这样做的话在使用webAPI返回数据需要数据库联合查询时就会不方便(如果返回的数据涉及到两个表中的数据,事件内容和用户名字,因为事件表中只存储了用户ID用来关联事件表)。这里注意一下概念模型(实体关系模型)-逻辑模型-类图-接受数据类与返数据类的关系,实体关系与类关系的区别。
解决方案:(1)自定义返回类,对应返回数据结构,返回数据类同时能够接受提交数据;(2)用类拼接,接受返回都有冗余
3、索引、外键、触发器
在指定外键时改表字段默认会创建索引,其中索引会有normal、unique、fulltext,normal为正常索引,unique不能重复,fulltext一般为文本设置;
外键删除更新时有如下设置:(1)cascade方式在父表上update/delete记录时,同步update/delete掉子表的匹配记录;(2)set null方式在父表上update/delete记录时,将子表上匹配记录的列设为null,要注意子表的外键列不能为not null;(3)No action方式如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作;(4)Restrict方式同no action, 都是立即检查外键约束。
触发器,当插入表中一条记录,更新另外一张表中记录改表的数量时会用到。有before和after设置,还有插入、删除、更新设置。
4、数据库事务
用来将数据库操作原子化,防止出现意外,错误后回滚。
5、mysql中那些乱七八糟的字段
Float、double、decimal、numerical总长度和小数长度;tinyint1、smallint2、mediumint、int4、bigint8大小不同,定了总长度只是为了补齐,对实际大小没影响;numeric与decimal区别,貌似差不多,但是其他数据库中的numeric是个整数decimal是小数,sql标准型。什么时候用blob与binary还不太清楚。
武大游下载链接点击打开链接
SQL那些事儿(三)----和小伙伴们做武大游相关推荐
- SQL查询优化《三》:少做重复的工作
1.控制同一语句的多次执行 2.减少多次的数据转换 3.杜绝不必要的子查询和连接表,子查询在执行计划一般解释成外连接,多余的连接表带来额外的开销. 4.合并对同一表同一条件的多次UPDATE,比如 U ...
- App上演魔法 三个杭州小伙做手游吸金千万
在苹果或安卓移动应用商店里,新闻.音乐.社交.游戏等应用软件(APP)组成了一个完善的生态系统.小小的应用软件背后,蕴藏着巨大的财富. 今年1月7日,苹果公司发布公告称,苹果商店里的APP数量已经超过 ...
- SQL总结(三)其他查询
SQL总结(三)其他查询 其他常用的SQL,在这里集合. 1.SELECT INTO 从一个表中选取数据,然后把数据插入另一个表中.常用于创建表的备份或者用于对记录进行存档. 语法: SELECT c ...
- pdo_fetch执行mysql_PDO中执行SQL语句的三种方法
在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO ...
- sql服务器系统时间格式,SQL Server 日期格式和日期操做
SQL Server发展至今,关于日期的格式的控制方法,有传统的方法,好比CONVERT(),也有比较便利的新方法,好比FORMAT():一样,关于日期的操做函数,也分为传统方法:DATEADD()等 ...
- java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合
java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合 1.引入pom <dependency><groupId>org.codehaus.groovy& ...
- 非常实用的,使用SQL查询连续号码段。(做计费系统或SP的兄弟经常会用到)...
非常实用的,使用SQL查询连续号码段.(做计费系统或SP的兄弟经常会用到) 数据库中如何使用SQL查询连续号码段 在[Database吧]上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问 ...
- 三个指标怎么做分层图_分层性能指标以及在哪里找到它们
三个指标怎么做分层图 Hierarchical machine learning models are one top-notch trick. As discussed in previous po ...
- SQL系列(三)SQL使用的旁枝末节
SQL系列(三)SQL使用的旁枝末节 首先,来揭晓上期的答案.方法不唯一,符合结果即可- -- 常规方法 with temp as (select 2 as st,5 as enunion allse ...
最新文章
- 拥抱 Java 8 并行流吧,让执行速度飞起!
- “service httpd does not support chkconfig” 問題
- 【Java】 剑指offer(40) 最小的k个数
- android studio annotations,AndroidAnnotations在Android Studio中的配置
- 川崎焊接机器人编程实例_机器人现场编程-川崎机器人示教-综合命令.pptx
- android studio table居中代码_五个方法实例代码详解教你在CSS中实现垂直居中
- 看你知道不知道之-制作数据字典
- uboot启动流程概述_Alibaba Cloud Linux 2 LTS OS 启动优化实践
- myeclipse怎么运行c语言,windows下MyEclipse安装配置C/C++开发环境
- Linux解压tar.gz、zip、tar.bz2 文件与对应的命令
- 视频 | 为何我对小鹏NGP“半信半疑”
- 25岁做什么,可在5年后受益匪浅?
- 【面试】JavaEE基础
- JNA (Java 本地访问)理论概述与入门
- java视频教程下载
- 6163. 给定条件下构造矩阵——每日一难(phase2_day1)
- 数值计算(四)——插值法(3)Hermite插值法(补充)
- 结构仿真实验,Midas多跨超静定连续梁手算电算分析
- 黑掉php网站,如何黑掉一个网站
- scratch实现弹跳小球2
热门文章
- 服务器导流板的作用,前保险杠下导流板的作用是什么?
- 济源一中2021高考成绩查询,济源一中2019高考成绩喜报、一本二本上线人数情况...
- android 面向对象,android 面向对象六大原则
- 华为当个pl怎么样_华为员工吐槽:画饼、忽悠、洗脑,有些pl、pm怎么可以那么坏?...
- THREEJS - 获取场景中模型数据
- html标签acronym没用,acronym_废弃 | Obsolete_HTML_参考手册_非常教程
- js - 预加载+监听图片资源加载制作进度条
- Linux 任务计划、周期性任务计划
- 201612-1-中间数
- docker中不能读取带.环境变量的问题