随笔分类 -  数据库

摘要:一、server端安装 1、下载 https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6 下载windows平台文件: 解压后,选择当前64位win7系统对应的版本: 2、安装 ... 阅读全文
posted @ 2014-03-03 15:22 edisonfeng 阅读(412675) 评论(22) 推荐(73)
摘要:一、RANGE分区(值连续) 1、创建以id为区分的分区表create table range_partition_by_id( i_id int, v_name varchar(50), primary key (i_id))partition by range(i_id)( ... 阅读全文
posted @ 2013-08-14 15:28 edisonfeng 阅读(400) 评论(0) 推荐(1)
摘要:一、脚本use edisondb;drop procedure if exists query_performance_test;DELIMITER // create procedure query_performance_test()begin declare begintime time; declare endtime time; set begintime=curtime(); DROP TEMPORARY TABLE IF EXISTS userinfo_tmp; CREATE TEMPORARY TABLE userinfo_tmp( ... 阅读全文
posted @ 2013-05-24 17:52 edisonfeng 阅读(1270) 评论(0) 推荐(0)
摘要:一、基本思路 1.在主库上,为不同的从库建立各自的中间表 2.主库与从库之间只对“中间表”进行复制操作 3.从库上,“中间表”通过触发器,实现与“实体表”的数据同步二、主库结构与配置 主库结构: 主库配置: 三、从库结构与配置 (以其中的一个从库为例) 从库结构: 其中从库“中间表”上触发器内容如下:use rel_db;drop trigger if exists slave_trigger_before_insert_staffinfo_middle_100;DELIMITER // create trigger slave_trigger_before_inse... 阅读全文
posted @ 2013-05-23 18:09 edisonfeng 阅读(6374) 评论(0) 推荐(0)
摘要:一、原始状态 1.主库 2.从库 3.数据(此时主库从库两边完全同步) 二、从库关闭复制功能,主库插入数据 1.从库关闭复制功能 2.主库中插入数据 此时主库中的数据: 主库状态: 三、从库开启复制功能 1.从1436位置开始复制 查询从库数据: 2.从1236位置开始复制 查询从库数据: 说明:当从库关闭复制功能一段时候后,再次启动前,可以通过“show slave status \G” 命令获取上一次已经同步的主库的二进制文件位置,从而在启动时指定。PS:如果不指定主库二进制文件位置,则默认从最... 阅读全文
posted @ 2013-05-22 17:33 edisonfeng 阅读(345) 评论(0) 推荐(0)
摘要:一、配置主服务器 1.my.ini中添加内容 必须写在[mysqld]下 另外只要出现了binlog-do-db,下面的binlog-ignore-db均不起作用。 2.创建“复制权限”的账号 创建账号 给创建的账号授予“待复制数据库”上所有的操作权限 查看所有用户SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 查看用户权限 3.重启mysql服务二、配置从服务器 阅读全文
posted @ 2013-05-21 18:00 edisonfeng 阅读(597) 评论(0) 推荐(0)
摘要:MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH 阅读全文
posted @ 2013-05-18 15:43 edisonfeng 阅读(446) 评论(0) 推荐(0)
摘要:SQL Server 2008 事件探查器(SQL SERVER Profiler)要想很好地优化ERP系统,可以从客户端、服务器、网络等入手,对于我们M1系统的优化来说,SQL 语句的优化就起到很重要的作用了。为此,我们展开,学习了SQL SERVER 2008的事件探查器(SQL SERVER PROFILEr),方便我们对系统优化前后速度与性能的对比。 如何进入事件探查器:开始---程序---SQL Server 2008---性能工具---SQL SERVER PROFILEr,进入,点击新建事件跟踪,输入sa用户与密码。 如果你输入的用户与密码没有权限的话,会提示:“您必须是 sys 阅读全文
posted @ 2012-11-29 14:37 edisonfeng 阅读(1061) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2012-08-14 11:45 edisonfeng 阅读(204) 评论(0) 推荐(0)
摘要:执行范例: 1 var 2 Qry:TAdoQuery; 3 singleRecord,Response:string; 4 begin 5 Context.Response:='获取合约列表返回数据!'; 6 Qry:=TAdoQuery.Create(nil); 7 try 8 try 9 Qry.Connection:=Context.Cn;10 Qry.Close;11 Qry.SQL.Clear;12 Qry.SQL.Add('select * from wmnow..code');13 ... 阅读全文
posted @ 2012-02-24 14:50 edisonfeng 阅读(1039) 评论(0) 推荐(0)
摘要:char: 定长,以字节为单位存储(主要可用于:防止行迁移) eg: char(10) abc 存储空间10个字节,后面补空varchar: 不定长,以字节为单位存储 eg: varchar(10) abc测试 存储空间3+(2+2)=7个字节,10表示最长能存储10个字节nvarchar: 不定长,以字符为单位存储(按unicode字符进行存储) eg: nvarchar(10) abc测试 存储空间5×2=10个字节,10表示最长能表示10个字符(20个字节)注:a)对于长度经常变化的字符串字段,尽可能用char类型,否则容易造成行迁移 b)varchar类型,左侧空格保留,右侧 阅读全文
posted @ 2011-10-14 15:30 edisonfeng 阅读(457) 评论(0) 推荐(0)
摘要:USE suntest create table 仓库 ( 仓库编号 int , 仓库号 varchar(50) , 城市 varchar(50) , 面积 int ) create table 仓库1 ( 仓库编号 int not null , 仓库号 varchar(50) not null, 城市 varchar(50) not null, --不能为空not null-- 面积 int ) create table 仓库... 阅读全文
posted @ 2011-09-08 14:37 edisonfeng 阅读(673) 评论(0) 推荐(0)
摘要:一、触发器 触发器的两张虚拟表: Tickets表原始数据: TicketsOrders表原始数据: 1.插入触发器 创建: 1 create trigger ticketsOrdersInsert 2 on edisondb..ticketsOrders 3 after insert 4 as 5 begin 6 if (select t.currentAmount from tickets as t,inserted 7 where t.ticketid=inserted.ticketid)< 8 (select amount from inserted) 9 begin10 pri 阅读全文
posted @ 2011-07-11 00:28 edisonfeng 阅读(609) 评论(0) 推荐(0)
摘要:一、视图 本质上相当于一张“虚拟表”,可当作独立的一张表进行操作(增、删、改、查) 作用: a)可通过权限控制,只将“表中的少数列”暴露给数据库用户,而不让该用户直接操纵数据库中“实际表” b)可将常用的,较复杂的SQL在数据库中预先定义好,使得外部调用不用每次都编写复杂的SQL语句,直 接当作一张“虚拟表”来调用即可 Customers表中原始数据: Orders表中的原始数据: 创建“查找运费在40到60之间的客户信息”的视图: 1 use edisondb; 2 3 if object_id('FortyToSixtyFreightCusts')is not null 4 阅读全文
posted @ 2011-07-06 02:09 edisonfeng 阅读(513) 评论(0) 推荐(0)
摘要:一、范式 1.第一范式:略 2.第二范式:不存在部分依赖 关键字为“组合关键字”时,不能有非关键字属性部分依赖于组合键 反例: (学号,科目号) 学分 分数 由于“科目号——>学分”,有部分依赖的情况,故不符合第二范式 3.第三范式:不存在传递依赖 不能有非主关键字传递依赖于主关键字 反例:(科目号) 科目名 学分 由于:“科目号——>科目名——>学分”,存在传递依赖的情况,故不符合第三范式 注:一般只要有“非主属性X——>非主属性Y”的情况就不满足第三范式二、主外键 1.添加主键 a)为StaffInfo表设置主键 主键设置完成: b)为Tasks表设置联合主键 同时 阅读全文
posted @ 2011-07-03 15:27 edisonfeng 阅读(968) 评论(0) 推荐(0)
摘要:一、独立子查询 子查询独立于外部查询:可以把子查询代码独立出来单独运行 Customers表中原始数据如下: Orders表中原始数据如下: 1.独立单值子查询(独立标量子查询) 子查询返回的是单个值,而不是数据集1 use edisondb;2 select * 3 from customers as C4 where C.custid=(5 select O.custid6 from Orders as O7 where O.orderid=102488 ); 查询结果为:注:使用单值独立子查询时,一定要保证子查询返回的是单个值,而不是数据集; 若返回的是数据集,则会出现如下状况:1 us 阅读全文
posted @ 2011-07-02 18:23 edisonfeng 阅读(7341) 评论(0) 推荐(0)
摘要:一、交叉联接(纯粹的联接查询) 只进行笛卡尔积操作 Customers表中的原始数据: Employees表中的原始数据: 进行交叉联接:1 use edisondb;2 select C.custid as '顾客号', E.empid as '售货员号'3 from customers as C 4 CROSS JOIN employees as E 5 ; 查询结果如下: 重要习惯:在使用联接查询时,尽可能使用“表别名.列名”的形式,这样可有效区分不同表中列名相同的列二、内联接=交叉联接+条件过滤1.简单内联接1 use edisondb;2 select 阅读全文
posted @ 2011-06-28 01:45 edisonfeng 阅读(427) 评论(0) 推荐(0)
摘要:一、SQL语句中各子句的执行顺序 1. from 2. where 3. group by 4. having 5. select 6. order by注:a)每一步操作都会返回一个数据集,下一个子句的操作对象是:上一个子句返回的数据集 b)由上述原理也可看出,select子句中自定义的别名,只能在order by子句中使用1 use edisondb;2 selectdistinct custid as'顾客号'3 from orders4 orderby'顾客号'desc5 ;输出结果为:二、group by与having子句的使用Orders表中的所有数 阅读全文
posted @ 2011-06-26 21:34 edisonfeng 阅读(390) 评论(0) 推荐(0)
摘要:1)返回结果为参数 存储过程代码:set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoCREATE PROCEDURE getStudentAmount@recordCount int outputASbegin select @recordCount=count(*) from studentInfo;end 测试代码: XXXXXX2)返回结果为数据集 存储过程代码:set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoCREATE PROCEDURE queryAllStudentInfoASbegin select * 阅读全文
posted @ 2011-05-18 22:58 edisonfeng 阅读(375) 评论(0) 推荐(0)
摘要:A)返回结果为参数 var Cn:TAdoConnection; Sp:TAdoStoredProc; recordCount:string; begin Cn := TAdoConnection.Create(nil); try Cn.ConnectionString := [数据库连接字符串]; Cn.LoginPrompt := False; Cn.KeepConnection := True; Cn.ConnectionTimeout:=2; try... 阅读全文
posted @ 2011-05-18 22:33 edisonfeng 阅读(4445) 评论(1) 推荐(0)