数据库与优化
搬砖的乔布梭
这个作者很懒,什么都没留下…
展开
-
SQL经典40句
登陆数据库:mysql -uroot –ppasswd 查看库列表:show databases; 使用指定库use test; 查看表列表show tables; 查看表结构desc customer; 清除表数据truncate table customer; 创建数据库并设置字符集create databa原创 2016-08-02 15:56:28 · 500 阅读 · 0 评论 -
15.7数据库(7):MySQL创建校园数据库
@概述创建校园数据库,建立老师、学生、班级、课程四张表,为后续章节讲表关系准备数据;其中每班一个班主任,每班主任执鞭一个班级,因此班级和班主任是一对一的关系;每个班级有多名学生,而每个学生只属于一个班级,因此班级和学生是一对多的关系;每名学生可以选修多门课程,而每门课程可以有多名参与的学生,因此学生和课程是多对多的关系;下一节将讲述以上表关系的管理策略;@创建数据库和表-- 创建...原创 2018-03-28 22:35:58 · 3453 阅读 · 0 评论 -
15.8数据库(8):MySQL表关系管理
@概述关系型数据库中的表与表不是彼此独立,而是相互关联的;表与表之间的级联关系使得整个数据库成为一个有机关联的系统;表关系可以分为一对一、一对多、多对多三种,它们的维护方式各不相同;表关系的管理是关系型数据库的重要组成部分,要牢牢掌握;@一对一如果A表记录与B表记录有双向的一 一对应关系,我们就称它们之间有一对一的关系;如校园数据库中的班级与班主任,班级有唯一的班主任,班主任执鞭...原创 2018-03-29 00:43:23 · 952 阅读 · 0 评论 -
15.9数据库(9):Python与MySQL的交互
@概述Python与MySQL数据库之间的交互,可以借助于第三方类库pymysql进行实现;pymysql的安装:pip3 install pymysql@交互过程 pymysql与MySQL的交互过程可以概括为:配置和连接数据库;获取数据查询游标,以执行SQL语句;执行SQL语句,返回受影响的记录数;如果是查询,从游标中读取得到的结果;提交本次访问的结果;关闭数据库;...原创 2018-03-29 01:52:40 · 754 阅读 · 0 评论 -
15.20数据库(20):基于MVC+MySQL+Redis架构的用户登录系统
@概述在Web开发中,【MySQL核心数据+Redis高速缓存】是一种常见的数据解决方案;本例结合MVC架构(数据-视图-控制)结合MySQL+Redis数据解决方案实现用户登录控制;基本业务逻辑:用户首次登录时从MySQL中读取用户信息,并缓存在Redis中,后续登录信息的读取全部优先读取Redis缓存;@Model层:用户模型类class User: def __i...原创 2018-05-14 17:01:50 · 629 阅读 · 0 评论 -
15.19数据库(19):数据库事务隔离级别
@概念执行批量操作,这些操作作为一个整体,要么全部成功,要么全部失败@四大特性ACID原子性(Atomicity) 事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生;一致性(Consistency) 事务前后,数据关系一致、业务逻辑一致;隔离性(Isolation) 一个事务所做的修改在最终提交以前,对其他事务是不可见的;持久性(Duration)...原创 2018-05-08 06:13:26 · 374 阅读 · 0 评论 -
15.21数据库(21):数据库备份+插入不重复数据
#插入不重复的数据,这里name字段有unique约束insert ignore into employee(name,age) values("bill",30);#备份和还原数据库mysqldump -u root -p --databases china > D:china.sqlmysql -uroot -p < D:china.sql#直接在命令行带密码会被提示...原创 2018-08-01 19:01:00 · 241 阅读 · 0 评论 -
15.22数据库(22):MySQL多表联合查询
备注:所有查询基于前面章节中建立的中国数据库/*联合查询*/-- union(select CityID,CityName from t_city where CityID between 6 and 10)union(select ProName,ProID from t_province where ProID between 6 and 10);--查询中国共有多少地级...原创 2018-09-04 07:32:32 · 328 阅读 · 0 评论 -
15.23数据库(23):MySQL事务
备注:所有查询基于前面章节创建的校园数据库-- 事务tranaction(tx)-- 开启事务begin;-- 课程表插入“把妹”学科insert into course(name) values('约炮');-- 教师表插入一位把妹名师insert into teacher(name,gender,courseid)values('西门程程',1,(select ...原创 2018-09-04 07:36:09 · 145 阅读 · 0 评论 -
15.24数据库(24):MySQL临时表+复制表
创建临时表--创建临时表create temporary table person( id integer primary key auto_increment, name varchar(20) not null unique, rmb float default 1.0);insert into person(name) values('张鸡蛋'),('穆铜柱'),...原创 2018-09-04 07:41:58 · 237 阅读 · 0 评论 -
15.25数据库(25):MySQL避免插入重复数据
策略概述单字段:添加主键约束或唯一约束多字段:添加联合主键约束或联合唯一约束插入时:使用insert ignore实例-- 试图插入重复数据insert into tpcopy(ProName) values('河北省');-- 修改表结构,添加必要的唯一约束alter table tpcopymodify ProName varchar(20) unique;...原创 2018-09-04 07:47:36 · 257 阅读 · 0 评论 -
15.26数据库(26):MySQL提防SQL注入攻击
策略概述如果对于用户提交上来的数据,不做任何合法性校验,就执行SQL操作时,是很容易遭受SQL注入攻击的下面提供了一个简单的注册攻击实例,能够删除服务器中的所有用户数据最简单的校验策略包括:长度限制、不允许分号、不允许空白、不允许出现增删改查相关的关键字等攻击实例-- 用户注册逻辑insert into person(name) values('?');-- 用户提交上来...原创 2018-09-04 07:52:43 · 233 阅读 · 0 评论 -
15.27数据库(27):MySQL索引
策略概述当特定表的数据量变得很庞大时,每一次查询的开销都是巨大的为高频查询字段(比如按姓名检索用户)添加索引能够显著提升大规模数据下的查询速度索引的本质是复制主键字段和索引字段形成额外的目录表添加索引并形成目录表会增加存储的开销,要注意权衡速度和空间的取舍案例-- 为高频字段DisName添加索引alter table t_district add index fuck...原创 2018-09-04 08:00:30 · 132 阅读 · 0 评论 -
3.9 MySQL数据库5:Go与MySQL的交互
3.9 MySQL数据库5:Go与MySQL的交互原创 2018-09-12 23:00:07 · 341 阅读 · 0 评论 -
15.6数据库(6):SQL语句进阶2:多表联合查询
@概述@unionunion的作用是将【查询结果字段数相同的两个表】进行强制合并# 查询名字带东的省和名字带东的市,将结果合并为一张表select ProName as name from t_province where ProName like '%东%'unionselect CityName from t_city where cityname like '%东%';...原创 2018-03-28 22:14:53 · 741 阅读 · 0 评论 -
15.5数据库(5):SQL语句进阶1:单表内复杂查询
@概述本节内容的数据基于上一节中创建的中国数据库;重点介绍以下几个子句:limt,order by,like/not like,in,group by,having以及统计函数count(col),max(col),avg(col);@第一组:limt,order bylimit子句,从查询结果中取前若干条:# 取出前5的省市区select * from t_provi...原创 2018-03-28 12:20:01 · 871 阅读 · 0 评论 -
15.4数据库(4):MySQL创建中国数据库
@概述这里创建一个中国数据库;创建三张表,分别对应省、市、区县三级行政单位;这里有一些简单的关联关系:城市表T_City中的ProID对应的是它所在省的ProID,区县表T_District中的CityID对应的是它所在市的CityID;关联关系我们在后面的章节中再详细讨论;@创建库表create database china charset=utf8;CREATE TA...原创 2018-03-28 04:22:03 · 4023 阅读 · 0 评论 -
Ubuntu下安装Mysql
Ubuntu上安装MySQL非常简单只需要几条命令就可以完成。 1. sudo apt-get install mysql-server 2. sudo apt-get isntall mysql-client 3. sudo apt-get install libmysqlclient-dev安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装原创 2018-02-02 15:49:46 · 194 阅读 · 0 评论 -
15.11数据库(11):MongoDB基本操作
@数据库操作注意数据库路径要提前创建好,MongoDB的bin目录要加入环境变量;另外,MongoDB的指令都是严格区分大小写的;# 开启MongoDB服务mongod --dbpath=D:\iWorkspace\data\MongoDB\mytest\db# 启动MongoDB数据库mongo# 查看所有数据库show dbs# 切换数据库(不存在时创建,但只有...原创 2018-03-29 21:23:42 · 706 阅读 · 1 评论 -
15.12数据库(12):MongoDB查询条件
@比较运算MongoDB中的比较运算包括: 大于$gt,大于等于$gte,小于lt,小于等于$lte,等于$eq,不等于$ne;# 查询年龄大于10的文档db.teacher.find( {"age":{$gt:10}})# 查询年龄大于等于10的文档db.teacher.find( {"age":{$gte:10}})# 查询年龄小于10的文档db....原创 2018-03-29 21:50:28 · 591 阅读 · 0 评论 -
15.13数据库(13):MongoDB查询结果的加工
@格式化地显示数据# 查询结果“漂亮”显示db.teacher.find().pretty()执行结果 @更多查询结果的加工# 查询结果按年龄降序排列(1为升序)db.teacher.find().sort({"age":-1})# 查询结果统计条数db.teacher.find().count()# 查询结果取前三个数据db.teacher.find().lim...原创 2018-03-29 22:08:10 · 568 阅读 · 0 评论 -
15.14数据库(14):Python与MongoDB的交互
@安装并引入依赖Python与MongoDB的交互可以通过第三方类库pymongo实现;pymongo的安装及引入:pip3 install pymongoimport pymongo@一般访问流程建立Python到MongoDB的连接;指定要访问的数据库和集合;通过集合执行MongoDB指令;结果的二次处理与输出;断开连接;@添加数据#...原创 2018-03-29 22:33:22 · 818 阅读 · 0 评论 -
15.10数据库(10):MongoDB简介与安装
@NoSQL定义全称为“Not Only SQL”,直译为“不仅仅是SQL”(言下之意既有SQL的特性,还有所拓展和创新),中文翻译为非关系型数据库;NoSQL是一种数据库革新思想,核心诉求是摆脱结构化数据和复杂表关联所带来的欠灵活、高成本、低效率、低扩展等弊病;在非关系型数据库中,数据的存储格式是相对灵活的,没有关系型数据库中表字段格式的严格要求,例如MongoDB可以存储任意Json...原创 2018-03-30 12:26:30 · 454 阅读 · 0 评论 -
15.15数据库(15):Redis简介与安装(Windows)
@简介redis是一种高速高性能的内存数据库,存储的是键值对数据; 由于极高的存储和访问速度,redis常被用来作为数据缓存服务器;另外redis是支持数据持久化的(即redis会自动将数据写入磁盘)——这是redis大杀四方的重要原因; redis支持多个slave端同时向master端进行写入,这经常被用在分布式爬虫等场景中;2010年以后redis开始大面积流行,关系型数据库...原创 2018-04-02 21:41:57 · 1089 阅读 · 0 评论 -
15.16数据库(16):Redis数据基本操作
@概述这里列举了键值对和其它数据类型的一些常用操作;更多操作命令和释义可以参考:http://redis.cn/commands.html@字符串操作举例set name bill //设置键值setex name 20 bill //键值20秒后过期mset age 60 gender male //一次性存储多个键值get name //不存在则返回nullmge...原创 2018-04-02 22:52:58 · 1188 阅读 · 1 评论 -
15.18数据库(18):Python与Redis的交互+Redis事务
@ 概述Python与Redis的交互可以通过第三方类库redis来进行@redis事务通过管道发起批量数据库操作; 如果没有发生异常,提交所有操作:pipe.execute(); 使用try-except捕获异常,如果异常发生,就不执行提交(变相的事务回滚); 管道的数据操作中的异常,只有在excecute()时才会发生;import redis# 连接数据...原创 2018-04-02 23:15:32 · 701 阅读 · 0 评论 -
15.17数据库(17):Redis管理基本操作
@概述本节列举一些Redis中常见的非数据操作,包括帮助、数据库切换、状态监视等;@启动服务redis-server.exe redis.windows.conf // 使用配置启动redis服务@查看服务状态(非redis命令模式下)redis-cli --stat -a 123456 // 查看服务状态显示如下:共有15个键,占用内存715K,有3个客户端连接(含...原创 2018-04-03 07:40:41 · 845 阅读 · 0 评论 -
15.1数据库(1):MySQL简介与安装
@MySQL简介Mysql是最流行的关系型数据库管理系统;所谓的关系型数据库,是指建立在关系模型基础上的数据库,即数据表之间不是相互独立的,而是彼此关联的;数据表中的每行代表一条数据,每列代表一个属性(也叫字段);最著名的三大关系型数据库包括:Oracle(甲骨文),SQLServer(微软),MySQL(甲骨文);MySQL是开源、免费的,且功能强大(64位机最大支持8T存储);...原创 2018-03-28 02:27:19 · 2205 阅读 · 0 评论 -
15.2数据库(2):MySQL基本增删改查
@概述增删改查是数据库的基本操作;习惯上用CRUD来分别代表增查改删:即Create,Retrieve,Update,Delete;数据库的增删改查操作是通过SQL语句来实现的;MySQL中的SQL语句对大小写是不敏感的;各大关系型数据库所使用的SQL语句整体上是大同小异的;删除数据不是常规操作,要特别谨慎,一般企业开发中原则上是不删除数据的;如果的确有删除需求,通常的做法是进行逻...原创 2018-03-28 03:07:24 · 1121 阅读 · 0 评论 -
15.3数据库(3):MySQL常用数据类型
@概述MySQL中的数据类型可以分为三大类:数值类、字符串类、时间日期类;每类中各有比较多的具体类型,写法多样,碎片化的问题比较严重;因此这里只介绍一些基本、常用、相对标准的类型,它们是能够满足日常开发需要的;通常是不会直接在数据库表中存储媒体文件之类的大二进制数据的,大文件通常以路径的方式记录在数据表中;@数值类整型:int(等同integer)占4字节,bigint占8...原创 2018-03-28 03:53:58 · 619 阅读 · 0 评论 -
3.9-2 MySQL数据库6:Go与MySQL事务
事务概念事务是将批量增删改操作视为一个整体,作为一个整体,它们要么全部成功,要么全部失败——这一特性称为事务的原子性(原子是不可再分割的);事务的应用场景很多,例如在一次电商的交易中,只有资金出入表、物流表、交易记录表、订单表、购物车表等一系列表的数据变动全部严丝合缝分毫不差时,才能视为交易成功,此时可以提交事务;只要有一点对不上号的地方,本次交易就不能视为成功,所有的数据应全部回滚至交易...原创 2018-09-20 23:07:02 · 351 阅读 · 0 评论