zoukankan      html  css  js  c++  java
  • 数据库入门知识点总结

    个人总结不足的请多多指教!!! 
    一、基本查询结构
    • select * from 表名
     
    二、判断和逻辑查询
    • >, <, >=, <= , =,  !=/<>
    • and , or , not
    • 结合where使用
    • 判断为空使用: is null
    • 判断非空使用: is not null
     
    三、模糊查询
    • like是模糊查询关键字
    • %表示任意多个任意字符
    • _表示一个任意字符
     
    四、范围查询
    • between .. and .. 表示在一个连续的范围内查询
    • in 表示在一个非连续的范围内查询
     
    五、排序
    • 排序使用 order by 关键字
    • asc 表示升序
    • desc 表示降序
     
    六、聚合函数
    • count(col): 表示求指定列的总行数
    • max(col): 表示求指定列的最大值
    • min(col): 表示求指定列的最小值
    • sum(col): 表示求指定列的和
    • avg(col): 表示求指定列的平均值
    • round():表示四舍五入
    • 注意:聚合函数默认忽略字段为null的记录 要想列值为null的记录也参与计算,必须使用ifnull函数对null值做替换。
     
    七、分组
    • select 分组字段  from 表名 group by 分组字段 having分组条件;
    • group_concat(字段名): 统计每个分组指定字段的信息集合,每个信息之间使用逗号进行分割
    • distinct 字段 可用来消重
    • with rollup在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果
     
    八、分页
    • limit 起始的位置,个数     start = (页数-1)*每页的个数
    • 作用:大数据量特别多的时候,提升用户的体验
     
    九、两表查询
    • 容易产生笛卡尔积问题
    • 解决:select * from 表1 inner join 表2 on 条件;
     
    十、条件
    • 过滤使用where
    • 分组使用having
    • 两表使用on生成虚拟表
     
    十一、子查询,左连接
    • 子查询
      • 子查询是嵌入到主查询中
      • 子查询是辅助主查询的,要么充当条件,要么充当数据源
      • 子查询是可以独立存在的语句,是一条完整的 select 语句
    例:查询大于平均年龄的学生:
    select * from students where age > (select avg(age) from students);
     
     
    • 左连接
      • 左连接使用left join .. on .. , on 表示两个表的连接查询条件
      • 左连接以左表为主根据条件查询右表数据,右表数据不存在使用null值填充。
    select 字段 from 表1 left join 表2 on 表1.字段1 = 表2.字段2
    • 右连接则是right join.. on.. 
     
    十二、事务
    • 事务的特性:
      • 原子性: 强调事务中的多个操作时一个整体
      • 一致性: 强调数据库中不会保存不一致状态
      • 隔离性: 强调数据库中事务之间相互不可见
      • 持久性: 强调数据库能永久保存数据,一旦提交就不可撤销
    • MySQL数据库默认采用自动提交(autocommit)模式, 也就是说修改数据(insert、update、delete)的操作会自动的触发事务,完成事务的提交或者回滚
    • 开启事务使用 begin 或者 start transaction;
    • 回滚事务使用 rollback;
    • pymysql 里面的 conn.commit() 操作就是提交事务
    • pymysql 里面的 conn.rollback() 操作就是回滚事务
     
    十三、批量插入、批量更新
    批量插入数据
    --insert into goods (name) values('123');
     
    insert into goods_cates(name) (select cate_name from goods group by cate_name);
     
    通过特殊的update 进行更新
     
    这个有一个注意点select * from 这个去掉
     
    update (goods inner join goods_cates on goods.cate_name = goods_cates.name) set goods.cate_name = goods_cates.id;
    十四、python程序操作mysql
    • 导包
      import pymysql
    • 创建连接对象
    conn=connect(参数列表)
     
    * 参数host:连接的mysql主机,如果本机是'localhost'
    * 参数port:连接的mysql主机的端口,默认是3306
    * 参数user:连接的用户名
    * 参数password:连接的密码 
    * 参数database:数据库的名称 
    * 参数charset:通信采用的编码方式,推荐使用utf8
     
    • 获取游标对象
      cursor =conn.cursor()
    • 执行SQL语句
      row_count = cursor.execute(sql)
    • 获取查询结果集
      result = cursor.fetchall() fetchall()获取全部 fetchone()获取一个
    • 将修改操作提交到数据库
    • 回滚数据
      conn.rollback()
    • 关闭游标
      cursor.close()
    • 关闭连接
      conn.close()


     
    小结部分
     
    一、数据类型和约束
    • 常用的数据类型:
      • 整数:int,bit
      • 小数:decimal
      • 字符串:varchar,char
      • 日期时间: date, time, datetime
      • 枚举类型(enum)
    • 常见的约束:
      • 主键约束 primary key
      • 非空约束 not null
      • 惟一约束 unique
      • 默认约束 default  配合枚举类型使用时,需要在枚举内加上默认值
      • 外键约束 foreign key
    • 数据类型和约束保证了表中数据的准确性和完整性
     
     
    二、命令行
    • 登录数据库: mysql -uroot -pmysql / mysql -uroot -p
    • 退出数据库: quit 或者 exit 或者 ctr + d
    • 创建数据库: create database 数据库名 charset=utf8;
    • 使用数据库: use 数据库名;
    • 删除数据库: drop database 数据库名;
    • 创建表: create table 表名(字段名 字段类型 约束, ...);
    • 修改表-添加字段: alter table 表名 add 字段名 字段类型 约束
    • 修改表-修改字段类型: alter table 表名 modify 字段名 字段类型 约束
    • 修改表-修改字段名和字段类型: alter table 表名 change 原字段名 新字段名 字段类型 约束
    • 修改表-删除字段: alter table 表名 drop 字段名;
    • 删除表: drop table 表名;
    • 查询数据: select * from 表名; 或者 select 列1,列2,... from 表名;
    • 插入数据: insert into 表名 values (...) 或者 insert into 表名 (列1,...) values(值1,...)
    • 修改数据: update 表名 set 列1=值1,列2=值2... where 条件
    • 删除数据: delete from 表名 where 条件
    • distinct 关键字可以去除重复数据行。
    • 导入数据:source 文件路径
     
    三、扩展部分
    • SQL语言主要分为:
      • DQL:数据查询语言,用于对数据进行查询,如select
      • DML:数据操作语言,对数据进行增加、修改、删除,如insert、update、delete
      • TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
      • DCL:数据控制语言,进行授权与权限回收,如grant、revoke
      • DDL:数据定义语言,进行数据库、表的管理等,如create、drop
    • E-R模型

      • 实体: 用矩形表示,并标注实体名称
      • 属性: 用椭圆表示,并标注属性名称,
      • 关系: 用菱形表示,并标注关系名称 
  • 相关阅读:
    show()的几种方法
    sql的交叉连接,内连接,左外连接,右外连接,全外连接总结
    MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
    RedHat9通过Host-only配置网络连接
    解决Struts2.2.20版本的标签不支持style属性的问题
    SQL查询数据库中所有含有某一列的所有表
    简单工厂模式
    vc常用类总结(转载)
    嵌入式程序员应知道的0x10个C语言Tips
    C语言位操作
  • 原文地址:https://www.cnblogs.com/leisunny/p/11383206.html
Copyright © 2011-2022 走看看