接着说昨天语法中提到的drop,delete和truncate的区别

drop用于删除库和表,不能用于删除表记录

delete和truncate都可以用于删除表记录,不能用于删除库和表

  而delete和truncate之间的区别在:

  delete可以删除表中的某一部分记录,也可以删除表中的所有记录,而且是一条一条的删除

  truncate只能一次删除所有的表记录,删除时不是一条一条的删,而是删除表,再重新创建表

查询时mysql中常见的函数

  ifnull(列,值)

对指定列的值判断是否为null,如果为null,就用括号后面的值进行参数替换,查询不会修改表中的值

  count(列或者*)

count函数是对指定的列或者所有列统计行数,*代表所有列

  max/min(列名)

max(列名)--对指定的列求最大值

min(列名)--对指定的列求最小值

  sum(列)

对指定的列求和

  avg(列)

对指定的列求平均值

  curdate()

获取当前时间  格式:年月日

  curtime()

获取当前时间  格式:时分秒

  sysdate()/now()

获取当前时间 格式:年月日 时分秒

  其它函数

ceil(数值)--向上取整     floor(数值)--向下取整    round(数值)--向下取整    rand(数值)--随机数

外键和表的关系

外键约束

  现实生活中有很多数据间往往是有关系,比如员工和部门之间存在一定的关系,学生和老师之间也存在一定的关系,而这些关系需要我们保存起来,那么:

  如何在数据库中才能保存两张表数据之间的对应关系?

  通常我们可以在其中一张表中添加一个列,用来保存另外一张表的主键,从而来保存两张表的对应关系,而这个列就是这张表的外键

  什么是外键

  所谓的外键就是用于通知数据库两张表数据之间对应关系的一个列,数据库会通过外键来维护两张表的对应关系

  指定某一列外键和不指定外键有什么区别

  如果不指定外键,只是在其中一张表中添加了一个列用于保存另外一张表的主键,同样可以保存两张表之间的对应关系,只不过这段关系只有我们开发人员知道,数据库不知道两张表之间是有关系的,因此数据库不会帮我们来维护这段关系

  如果指定外键,通过外键通知数据库两张表之间有对应关系,数据库就会帮我们维护这段关系,比如在指定外键后,如果想删除一个部门,数据库会在删除之前检查该部门下是否还有员工,如果有数据库就会阻止删除

  添加外键的方法

  创建表时添加外键

  

  创建表过后指定外键

  删除外键

  表关系

  一对一

  比如学生在固定教室上课,那么这个教室就只对应这一个班,而这一个班也只对应这一个教室,对于一对一的两张表,可以在任意一张表中添加列,保存另外一张表的主键,从而保存两张表之间的关系

  一对多或多对一

  比如你对应的父亲只有一个,而你的父亲对应的孩子有几个,对于一对多或多对一的两张表,可以在多的一方添加列,保存另一方的主键,从而保存两张表之间的关系

  多对多

  比如上课,教你的老师有多个,而一个老师也教多个学生,对于多对多的关系,可以拆分成多张一对多的关系,无法在两张表中添加列保存关系,但我们可以添加一张第三方表(专门保存两张表的关系)保存两张表的主键,从而保存两张表的关系.

  关联查询和外连接查询

  笛卡尔积查询

  同时查询两张表,其中一张表的记录是m条,另一张表的记录是n条,笛卡尔积查询的结果是m*n条,语法:select * from 表名,表名;

  由于笛卡尔积查询的结果中包含大量错误数据,因此我们一般不会直接使用这种查询,我们可以从笛卡尔积查询的结果中通过where条件剔除错误的激励,保留正确的记录,就是我们最终想要的结果

  关联查询

  将两张或两张以上的表按照指定条件查询,将结果显示在一张表中

语法:select  列 from 表名,表名.....  where......;

  左外连接查询

  显示左侧表中的所有记录,如果右侧表中没有对应的记录就显示null

语法:select 列 from a left join b on(a.id=b.id) ;   on(a.id=b.id)是条件语句

  右外连接查询

  显示右侧表中的所有记录,如果左侧表中没有对应的记录就显示null

语法:select 列 from a right join b on(a.id=b.id) ;   on(a.id=b.id)是条件语句

  子查询

  所谓的子查询其实就是将一个查询得出的结果,作为另外一个查询的条件

语法:select  .....    from ......  where  .....(select ......  from  .......);

最新文章

  1. c#编程基础之枚举
  2. ORACLE RETURNING 用法总结
  3. Android下安装应用不成功解决
  4. JPA SQL 的复杂查询createNamedQuery
  5. OC的类的构造方法
  6. java验证码Captcha
  7. Linq入门演练---(1)基本用法-分组,排序,内连接
  8. javaweb之session过期验证
  9. java8 去掉 perm 用 Metaspace 来替代
  10. call_user_func 与call_user_func_array 的使用与区别
  11. Windows 10 IoT Core 17127 for Insider 版本更新
  12. vmWare 虚机文件不能启动的事故处理
  13. Java连接MySQL数据库详细教程(附网盘下载地址)
  14. spring对事务的配置
  15. 【代码审计】XYHCMS V3.5URL重定向漏洞分析
  16. 创建型模式之Builder(建造者)模式
  17. 关联与下钻:快速定位MySQL性能瓶颈的制胜手段
  18. JS浮点计算问题
  19. 如何正确实现 IDisposable 接口
  20. django之路由分组,反向解析,有名,无名分组

热门文章

  1. Java NIO 学习笔记(六)----异步文件通道 AsynchronousFileChannel
  2. raft算法解析
  3. app兼容测试选择哪些机型才够全面呢?
  4. 下一代工业通信—TSN(时间敏感网络),工业物联网的助推器
  5. POJ 2679:Adventurous Driving(SPFA+DFS)
  6. django基础知识之GET属性:
  7. 在FPS游戏中,玩家对音画同步感知的量化与评估
  8. Disruptor 详解 二
  9. C++学习书籍推荐《C++ Primer 第五版 (英文)》下载
  10. 管Q某犇借的对拍