数据库表操作整理

  • 表基本操作

    • 数据插入

      • insert into 表名(字段名) value(各个字段的值)

        • 字段名不写默认为该表中所有的字段,按照默认顺序排布

        • value值必须对应字段名

        • 字符和日期型数据应该包含在单引号中

      • 向表中插入空值

        • 隐式方式

          • 插入时只设置需要设置值的字段

          • insert into 表名(A,B,D) value(1,2,4)

        • 显示方式

          • insert into 表名(A,B,C,D) value(1,2,NULL,4)
      • 向其他表拷贝数据

        • insert into 表名 子查询
      • 查询的结果插入到另一张表注意点

        • 查询的字段数量应和插入表的字段数量相等

        • 查询的字段数据类型和插入表的字段数据类型匹配

    • 数据更新

      • update 表名 set 更新字段和数据 where 条件

      • 如果没有where,那么表中该字段会被全部更新为新的数据

    • 数据删除

      • delete from 表名 where条件

      • 没有where则删除整个表

    • 数据查找

      • 排序

        • asc升序,desc降序

        • 默认为asc

        • 排序时也可以按照字段的别名排序

        • 可以有多个排序字段

      • 过滤

        • where和having

          • 之后能否出现组函数

            • 不可
          • 出现在group by

            • 前后
      • 模糊查询

        • like '内容'

        • _ 任意一个字符

        • % 任意n个字符

      • 多表连接

        • 连接条件的分类:

          • 1.自连接 vs 非自连接

          • 一张表连接的是自身

          • 一张表连接的是其他表

          • 2.等值连接 vs 非等值连接

            • 连接条件是等号

            • 连接条件不是等号

              • 比如IN,between等等
          • 3.内连接 vs 外连接

            • 内连接:连接后表中内容只显示两表中匹配的内容(数学上的交集)

            • 外连接:看左/右连接,是谁则主要显示那张表,另一张只显示匹配的内容

        • union将两个查询的结果合并到一起

        • 笛卡尔乘积(所有数据合并成一个超级大表)

          • 产生条件

            • 缺省连接条件

            • 连接条件无效

            • 所有表中的所有行相互连接

      • 单行函数

        • 特点

          • 操作数据对象

          • 接收参数返回一个结果

          • 只对一行镜像数据变换

          • 每行返回一个结果

          • 可以嵌套

          • 参数可以是一列或一个值

        • 常用的函数

          • 大小写控制:

            • LOWER('SQL Course') :将所有内容变成小写

            • UPPER('SQL Course') :将所有内容变成大写

          • 字符控制

            • CONCAT('Hello', 'World') : 字符串拼接

            • SUBSTR('HelloWorld',1,5) : 截取子串。1指的是索引位置(从1开始)。5指的是长度

            • LENGTH('HelloWorld') :子符串长度

            • INSTR('HelloWorld', 'W') :W首次出现的位置

            • LPAD(salary,10,'*') : 向右对齐

              • 如果长度不够10用*补齐
            • RPAD(salary, 10, '*') :向左对齐

              • 如果长度不够10用*补齐
            • TRIM('H' FROM 'HelloWorld'):去除指定的字符

            • REPLACE('abcd','b','m') :将字符串中的指定的字符进行替换

          • 数字函数

            • ROUND: 四舍五入

            • TRUNCATE: 截断

              • TRUNCATE(45.926) 45
            • MOD: 求余

          • 日期函数

            • 函数NOW() 获取当前时间

            • ifnull(字段,默认值) :如果字段的内容为null那么就返回默认值

      • case

        • 格式一
          case 字段名
          when 值1 then 返回值1
          when 值2 then 返回值2
          when 值3 then 返回值3
          .......
          else 返回值n
          end

        • 格式二
          case
          when 判断式1 then 返回值1
          when 判断式2 then 返回值2
          when 判断式3 then 返回值3
          .......
          else 返回值n
          end

      • 组合函数(多行函数)

        • AVG() :平均值

        • SUM() :求和

        • 注意:数据只能是数值类型

        • MAX() :最大值

        • MIN() : 最小值

        • COUNT() :求数量

        • count(字段名):该字段数据不为null的有多少条。

        • count(*):该表中的数据有多少条

        • count(数值):该表中的数据有多少条,count(数值)效率高于count(*)

      • where和having的区别

        • 1.where后面不能出现组函数,having后面可以出现组函数

        • 2.where在group by的前面,having在group by的后面。

      • 子查询

        • 特点

          • 在主查询之前执行

          • 其结果被外查询(主查询)调用

        • 注意

          • 子查询要包含在括号内

          • 要将子查询放在比较条件的右侧

          • 如果子查询的结果只返回一条

            • 可以使用=、<、>、>=等等比较操作符
          • 如果子查询结果返回一片

            • 使用下列比较操作符

            • IN 等于列表中的任意一个

            • ANY 和查询返回的某一个比较

            • ALL 和返回的所有值比较

      • 部分常用函数

        • trim 去除指定字符

        • length 中开始坐标为1,(不同于数组的下标从0开始)

        • ifnull 如果字段的内容为null,那么就返回默认值

  • 事务

    • 开启事务

      • set autocommit=True/False 是否禁止自动提交#
    • 事务提交,提交后无法回滚

      • commit
    • 事务回滚

      • rollback
  • 清空表

    • truncate table和delete table区别
      • truncate table无法事务回滚,delete table可以事务回滚
  • 约束

    • 六种

      • 主键

        • PRIMARY KEY
      • 外键

        • FOREIGN KEY
      • 非空

        • NOT NULL
      • 唯一

        • UNIQUE
      • 检查

        • CHECK
      • 默认

        • DEFAULT
    • 列级约束

      • 只能约束一列数据

      • 跟在列的定义后面

    • 表级约束

      • 约束多列

      • 单独定义在最后

    • 主键约束

      • 唯一约束+非空约束的组合(简记为唯一且非空)

      • 可以使多列组合的主键约束,即表级约束,这样的话被约束的列都不允许为空,且组合值不能重复

      • 可以在列级也可以在表级约束

    • 外键约束

      • 保证一个或两个表之间的参照完整性,是两个表的两个字段之间的参照关系

      • 外键约束的参照列,在主表中引用的只能是主键或者唯一约束的列

    • 非空约束

      • 确保当前列部位空

      • 非空约束只能出现在表对象的列上

      • 主要特征

        • 所有类型的值都可以是null

        • 空字符串“”不等于null,0也不等于null

    • 唯一约束

      • 一个表中可以有多个唯一约束,多个组合的约束

      • 如果不设定唯一约束,则默认和列名相同。

    • 检查约束

      • MySQL没这玩意
  • limit

    • 语法

      • limit 索引位置, 条数

      • 公式

        • select * from 表名 limit(页数-1)*页码大小【换种说法页码容量】,页码大小
    • 其位置必须在整个查询语句最后

作者:Ya
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/1463490Ya/p/15293717.html