Skip to content

数据库基础知识

Posted on:January 5, 2018 at 07:43 PM

数据库基础知识

  1. 需要掌握一定的商业知识

  2. 建模:程序流程图、数据流程图DFD、时序图、状态图

  3. 软件开发阶段:系统规划、系统分析、系统实施、运行维护、测试阶段

  4. E-R图:由实体、属性、关系组成

  5. 实体间的关系:基数、元、关联

  6. 使用关联的情况:

    • 两个实体间的关系存在自身的属性
    • 实体间存在多元关系
  7. 表的主键:不能重复而且不能为空。例如 学号、身份证号,如果不能从已有字段中提取出一个字段、可以自己设置一个没有实际意义的字段

  8. 外键 的使用

  9. 约束条件:主键(primary key)约束、外键(foreign key)约束、唯一性(unique)约束、 默认值(default)约束、非空(not NULL)约束、检查(check)约束

  10. 创建表时,先创建父表,再创建字表; 字表的外键字段与父表的主键字段的 数据类型相同

  11. 选数据类型:数据类型越简单越好 尽量用整数代替字符串 所以主键用整数插询效 率较高 存储IP地址时也可以用整数

  12. 为了支持中文简体 字符集设置为gbk 为了支持外键约束 存储引擎设置为InnoDB

  13. 复制表格:

    • create table 新表名 like 原表;
    • create table 新表名 select *from 原表
  14. 修改字段信息:

    • 删除字段:alter table 表名 drop 字段名
    • 添加字段名:alter table 表名 新字段名数据类型【约束条件】【first|after 就字段名】
    • 修改字段名:alter table 表名 change 旧字段名 新字段名 数据 类型
    • 修改数据类型:alter table 表名 modify 字段名 数据类型
  15. 插入新纪录:insert into 表名【(字段列表)】 values(值列表)注意:向char varchar text 以及日期型的字段插入数据时,字段值要用单引号括起来

  16. 批量插入多条记录:insert into 表名【(字段列表)】 values(值列表1)、(值列表2)、…;

  17. 修改表记录:update 表名;Set 字段名 1=值1,字段名2=值2…【where条件表达式】(while子句指定了表中的哪些记录需要修改,若省略了where子句,则表示 修改表中的所有记录)

  18. 删除表:delete from 表名【where 条件表达式】Select语句:

  19. Select字段列表(“,分隔” 用“as”关键字分隔)From 数据源【where 条件表达式】【group by 分组字段【having 条件表达式】】【order by 排序字段【asc|desc】】(数据源可以是表也可以是视图)(asc升序 desc降序)(多表查询的时候,同名字字段前必须加表名前缀,中间用“.”)

  20. 过滤记录:

    • distinct 过滤结果集中的重复记录;Distinct 字段名 from 数据源
    • limit查询某几行记录。Select 字段列表 From 数据源 Limit 【start,】length;(limit接受一个或两个整数参数,start表示从第几行记录开始检索,length表示检索多少行记录。表中第一行记录的start值为0(不是1))
  21. 使用from子句指定数据源(两种)

    • 其中一种语法:From 表名1 【连接类型】 join 表名2 on 表1和表2之间的连接条件
      • 内连接
      • 外链接(左连接,右连接)。例如:左连接 意味着查询结果集中包含表1的全部记录 ,然后表1按指定的连接条件与表2进行连接。若表2中没有满足连接条件的记录,则结果集中表2相应的字段填入NULL
  22. 多表连接:from 表1 【连接类型】 join 表1 on 表1和表2之间的连接条件,【连接类型】 join 表3 on 表2和表3的连接条件

  23. NULL与NULL不能使用等比较运算符比较。可以用 is not 或者not

  24. 逻辑运算符:“and” “or” “!” “【not】..and..” “【not】in 数学集合”

  25. 字符串表达式 【not】 like 模式 (可以理解为一个正则表达式)字符集设置为gbk_chinese_ci或者 gbk2312_chinese_ci 模式匹配时英文字母不区分大小写,而设置为gbk_bin或者gbk_2312_bin时要区分(模式是一个字符串,包括普通字符和通配符)通配符:“%” 匹配零个或多个字符组成的任意字符串_(下划线) 匹配任意一个字符

  26. order by 字段名1 【asc|desc】 【…,字段名n 【asc|desc】

  27. Group by子句对记录分组统计Group by 字段列表【 - having 条件表达式】 【with rollup】单独用group by意义不大 一般与聚合函数集合 (看例子)

  28. group by子句与having

    • Having用于设置分组或聚合函数的过滤筛选条件
    • 在select语句 先对where进行筛选 接着group by子句对where的输出分组,最后having子句从分组的结果中再进行筛选。语法:Select 字段列表 From 数据源 Where 条件表达式 Group by 分组字段 having 条件表达式
  29. group by子句与group_concat()

    • group_concat()与concat()有一个功能相同,另外还可以用逗号将字段的值连接起来(看例子)
  30. group by

    • With rollup函数 在分组最后添加一条汇总信息