文档章节

数据库入门知识点总结

o
 osc_g8254g7s
发布于 2019/08/20 15:31
字数 1573
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

个人总结不足的请多多指教!!! 
一、基本查询结构
  • 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模型

    • 实体: 用矩形表示,并标注实体名称
    • 属性: 用椭圆表示,并标注属性名称,
    • 关系: 用菱形表示,并标注关系名称 
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

OSChina 周一乱弹 —— 毛巾又怎么样?!我在乎的是大姐姐温柔的怀抱!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《雨 因你而下,于你而止》- Seto 手机党少年们想听歌,请使劲儿戳(这里) @Dan...

小小编辑
11分钟前
27
0
MySQL 常用操作

1 创建/打开/删除数据库 create database db;create database db character set utf8mb4;use db;drop database db;alter database db character set utf8mb4; 2 修复表 mysqlcheck --a......

氷泠
15分钟前
5
0
Node.js中的module.exports与export - module.exports vs exports in Node.js

问题: I've found the following contract in a Node.js module: 我在Node.js模块中找到了以下合同: module.exports = exports = nano = function database_module(cfg) {...} I wonder ......

javail
21分钟前
13
0
如何防止单击按钮时对话框关闭 - How to prevent a dialog from closing when a button is clicked

问题: I have a dialog with EditText for input. 我有一个使用EditText输入的对话框。 When I click the "yes" button on dialog, it will validate the input and then close the dialog.......

富含淀粉
51分钟前
17
0
访问者模式Visitor

一 概述 场景:通常来说,用于封装数据所用到的pojo类,其只包含get、set,对应的业务逻辑是在Service上完成的;但如果出现多个pojo类都共用一套逻辑时,则应该考虑将逻辑进行抽象,不同类型...

小明不觉小
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部