MySQL

#MYSQL

  • 约束
    • 约束保证数据的完整性和一致性
    • 约束分为表级约束和列级约束
    • 约束类型包括:
      • NOT NULL
      • PRIMARY KEY
      • UNIQUE KEY
      • DEFAULT
      • FOREIGN KEY
        • 保持数据一致性,完整性
        • 实现一对一或一对多关系
        • 要求:
          • 父表和子表必须使用相同的存储引擎,而且禁止使用临时表
          • 数据表的存储引擎只能为InnoDB
          • 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
          • 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引
      • MySQL配置文件
        - default-storage-engine=INNODB //编辑数据表的默认存储引擎
    • 外键约束
      • 外键约束的参照操作(仅引擎InooDB支持,所以不常用):
        • CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
        • SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
        • RESTRICT:拒绝对父表的删除或更新操作
        • NO ACTION:标准SQL的关键字,在MySQL与RESTRICT相同
    • 表级约束与列级约束
      • 对一个数据列建立的约束,称为列级约束
      • 对多个数据列建立的约束,称为表级约束
      • 列级约束既可以在列定义时声明,也可以在列定义后声明。
  • 表达式
    • 查找表达式:
      • 每一个表达式表示想要的一列,必须有至少一个。
      • 多个列之间以英文逗号分隔。
      • 星号(*)表示所有列。tbl_name.*可以表示命名表的所有列。
      • 查询表达式可以使用【AS】 alias_name为其赋予别名。
      • 别名可用于GROUP BY,ORDER BY 或HAVING子句。
        在这里插入图片描述
    • 条件表达式
      • 对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。
      • 在WHERE表达式中,可以使用MySQL支持的函数或运算符。
    • 查询结果分组
      • [GROUP BY {col_name | position} [ASC | DESC], …]
    • 分组条件
      • [HAVING where_condition]
    • 对查询结果进行排序
      • [ORDER BY {col_name | expr | position} [ASC | DESC], …]
    • 限制查询结果返回的数量
      • [LIMIT {[offset,] row_count | row_count OFFSET offset}]
  • 子查询
    • 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句
    • 子查询指嵌套在查询内部,且必须始终出现在圆括号内
    • 子查询可以包含多个关键字或条件,如DISTINCE、GROUP、ORDER BY、LIMIT,函数等。
    • 子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET或DO。
    • 子查询可以返回标量、一行、一列或子查询。
    • 使用比较运算符的子查询:=、>、<、>=、<=、<>、!=、<=>
    • 语法结构:
      • operand comparison_operator ANY (subquery)
      • operand comparison_operator SOME (subquery)
      • operand comparison_operator ALL (subquery)
  • 连接
    • 类型
      • INNER JOIN,内连接
        • 在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的
        • 显示左表及右表符合连接条件的记录
      • LEFT [OUTER] JOIN,左外连接
        • 显示左表的全部记录及右表符合连接条件的记录
        • 数据表B的结果集依赖数据表A
        • 数据表A的结果集根据左连接条件依赖所有数据表(B表除外)。
        • 左外连接条件决定如何检索数据表B(在没有指定WHERE条件的情况下)。
        • 如果数据表A的某条记录符合WHERE条件,但是在数据表B不存在符合连接条件的记录,则将生成一个所有列为空的额外的B行。
        • 如果使用内连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试以下操作:col_named IS NULL时,如果col_name被定义为NOT NULL,MySQL将在找到符合连执着条件的记录后停止搜索更多的行。
      • RIGHT [OUTER] JOIN,右外连接
        • 显示右表的全部记录及左表符合连接条件的记录
      • 多表连接
      • 自身连接
        • 同一个数据表对其自身进行连接
    • 条件
      • 使用ON关键字来设定连接条件,也可以使用WHERE来代替
      • 通常使用ON关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值