数据库
文章平均质量分 64
奋斗的小青年_
这个作者很懒,什么都没留下…
展开
-
数据库操作--创建索引
前段时间接到个任务,要在两秒内从1000万条数据中查询某一条数据是否存在。着实吓我一跳。1000万条数据!两秒!真的可以么?幸好师傅给指了条明路。可以考虑用表分区来实现。虽然不知道表分区是什么,但是最起码有一个方向了。然后就开始在网上搜索表分区的资料,看了看网上的资料,差不多都是一些建表分区的教程。但是我要建立的表分区和例子上又不一样,需要动态的建立表分区,这就难了。搞了半天没搞好。后来想起来春哥原创 2015-03-08 20:15:31 · 1771 阅读 · 18 评论 -
eclipse设置代码自动提示
在编程的时候,代码提示是开发必不可少的利器。在Eclipse中代码提示默认是“Alt+/”才会给出代码提示,这样不是很方便,那么我们如何设置它,让它能够自动进行代码提示,而不用按“Alt+/”键呢?下面一起来看看吧。1、选择“window”->“Perferences”2、“Java”->“Java”->“Editor”->“ContentAssist”原创 2016-10-02 22:42:44 · 868 阅读 · 15 评论 -
master and slave have equal MySQL server UUIDs问题解决
在搭建Mysql主从复制时候,在执行完相关操作以后,通过命令查看是否主从复制成功的时候show slave status\G;在“Slave_SQL_Running_State”中出现了“Fatal error: The slave I/O thread stopsbecause master and slave have equal MySQL server UUIDs; these原创 2016-10-23 21:20:38 · 4073 阅读 · 33 评论 -
MySQL物理文件组成
日志文件错误日志:Error Log 错误日志记录了MySQL运行过程中所有较为严重的警告和错误信息,以及MySQL Server每次启动和关闭的详细信息。在默认情况下,系统记录错误日志的功能是关闭的,如果要开启系统记录错误日志的功能,需要在启动时开启-log-error[=file_name],修改其存放目录和文件名。 为了方便维护,有时候会希望将错误日志中的内容做备原创 2016-06-12 22:09:24 · 516 阅读 · 1 评论 -
Mysql逻辑模块组成
总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query cache的处理等等;第二层就是存储引擎层,通常叫做Storage Engine Layer,也就是底层数据存储操作实现部分,由多种存储引擎共同组成。所以,可以用如下图来MySQL的基础架构。原创 2016-06-05 22:01:32 · 678 阅读 · 1 评论 -
windows配置MySql服务
1)将MySQL 添加到服务中。以管理员模式启动cmd,进入mysql安装路径: d:/appspace/mysql /bin>输入 mysqld--install MySQL --defaults-file="C:\Windows\my.ini"要指定defaults-file.命令行中输入services.msc回车,可以看到MySQL已被添加到Services中,Pat原创 2016-11-06 21:35:43 · 1509 阅读 · 23 评论 -
MySQL Explain的使用
MySQL Query Optimizer 通过我们执行Explain命令来告诉我们它将使用什么样的执行计划来优化我们的Query。所以,Explain是在优化Query的时候最直接有效的验证我们想法的工具。下面用Explain命令来看一下我们sql语句的执行计划。mysql> explain select emp_no,count(*) from employees\G;*****原创 2016-09-25 21:54:39 · 410 阅读 · 15 评论 -
解决Hibernate向MySQL数据库插入中文乱码问题
有时候我们在用hibernate插入中文的字符会出现乱码情况,如下图所示。看到这种情况,第一反应便是应用程序用的字符集合数据库用的字符集不统一了。我的数据库用个是mysql的,看一下建表语句。用的是utf8的字符,没有问题。CREATE TABLE `Person` ( `pid` bigint(20) NOT NULL, `name` varchar(20) DE原创 2016-10-30 21:27:19 · 687 阅读 · 29 评论 -
MySQL各逻辑模块工作配合
在了解了MySQL的各个模块之后(点击查看MySQL各个逻辑模块),我们再看看MySQL各个模块间是如何相互协同工作的。接下来,我们通过启动MySQL,客户端连接,请求query,得到返回结果,到最后退出,这样一个过程下来进行分析。1、 当我们执行启动MySQL命令之后,MySQL的初始化模块就从系统配置文件中读取系统参数和命令行参数,并按照参数来初始化整个系统,如申请并分配buffer原创 2016-06-19 23:41:57 · 737 阅读 · 1 评论 -
mysql主从同步失败Last_IO_Error: Got fatal error 1236 from master解决方法
今天再主从同步的MySQL数据库上删了一个数据库,然后想看看从库是否删除成功了,但是一看没有成功。然后就纳闷了。就用命令看了一下从库的情况。在从库中输入show slave Status\G;原来是从库报错了,错误时:“Last_IO_Error: Got fatal error 1236 from master”上网查了一下是清除数据导致的错误。解决方法如下:首先在从库执行“原创 2016-12-04 21:40:35 · 4832 阅读 · 24 评论 -
MySQL数据库中库、表名、字段的大小写问题
在使用MySQL建库的过程中发现了一个问题,无论怎么创建库,创建出来的库名都是小写的。然后上网查了一下资料。在MySQL中,数据库和表都是对应目录下的一个或多个文件。因此,操作系统的大小写是否敏感决定了数据库大小写是否敏感。而在Windows中是对大小写不敏感的(Linux是对大小写敏感的)。下图是在windows操作系统上MySQL中lower_case_table_syst原创 2016-11-26 11:51:59 · 16798 阅读 · 28 评论 -
MySQL逻辑查询处理
我们经常写sql语句,但是sql语句的执行顺序是怎样的,这点是我们需要知道的。下面就分享一下sql语句的执行顺序。1、 from :对from子句中的左表和右表执行笛卡尔积,产生虚拟表VT1。2、 ON:对虚拟表VT1应用ON筛选,只有那些符合join_condition的行才被插入虚拟表VT2中。3、 JOIN:如果指定了outer join那么保留表中未匹配的行作为外部行添加原创 2017-01-01 21:37:57 · 980 阅读 · 14 评论 -
MySQL中的排序规则
在新建MySQL数据库或表的时候经常会选择字符集和排序规则。数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢?排序规则:是指对指定字符集下不同字符的比较规则。其特征有以下几点:1、 两个不同的字符集不能有相同的排序规则2、 两个字符集有一个默认的排序规则3、 有一些常用的命名规则。如_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(c原创 2016-12-18 21:40:07 · 15174 阅读 · 25 评论 -
MySQL中ENMU和SET的使用
因为MySQL不支持传统的CHECK约束,因此通过ENUM和SET类型可以解决一部分问题。下面通过一个小demo来演示一下ENUMdrop table if EXISTS test;create table test( user varchar(30), sex enum('male','female'))ENGINE=INNODB;insert into test s原创 2016-12-25 21:30:24 · 2503 阅读 · 22 评论 -
CentOS6.8 MySQL 5.6实现主从复制
主库操作1、将mysqldump命令添加到/usr/bin中1 ln -s /application/mysql/bin/mysqldump /usr/bin/2、开启master上的log-bin功能1 # vim /etc/my.cnflog_bin=mysql-binserver_id =13、重启mysql1 # /et原创 2016-06-26 23:06:15 · 753 阅读 · 0 评论 -
mysql丢失root密码的解决办法
1、 关闭mysqld进程/etc/init.d/mysqld stop2、跳过权限表的限制登录mysql启动mysqld进程/etc/init.d/mysqld start --skip-grant-tables--skip-grant-tables:数据库启动的时候 跳跃权限表的限制,不用验证密码,直接登录3、 登录mysqlmysql -uroot -原创 2016-09-18 21:49:25 · 866 阅读 · 23 评论 -
Partition by子句
上篇博客写到使用开窗函数来进行数据查询,那么over关键字可以加什么查询条件呢?下面先介绍一下其中之一的partition by子句。开窗函数的over关键字后括号中可以使用Partition by字句来定义行的分区来进行聚合运算。与group by 字句不同,partition by字句创建的分区是独立于结果集的,创建的分区只是提供聚合计算的,而且不同的开窗函数所创建的分区也不相互影响。原创 2016-01-24 22:34:54 · 3022 阅读 · 22 评论 -
数据库操作--获取存储过程的返回值
用SQL Server数据库写了个存储过程,代码如下create procedure proc_select @id intasbeginif exists(select * from news where id=@id) return 1else return 2end在C#中通过执行存储过程来获取返回值,但是返回的结果总是-1,纠结啊。在数据库中查询,是没有问题的原创 2015-02-16 14:32:34 · 4456 阅读 · 10 评论 -
数据库操作--触发器
触发器是一种特殊类型的存储过程,它不同于存储过程,触发器主要是通过事件进行触发被自动调用执行的,而存储过程可以通过存储过程的名称而被调用。触发器分为1、 after触发器2、 insert触发器3、 update触发器4、 delete触发器触发器是在对表进行插入、更新、删除的时候会自动执行的存储过程。触发器的功能虽然强大,轻松可靠地实现许多复杂的功能,但是过多触发原创 2015-02-08 23:15:29 · 1423 阅读 · 8 评论 -
数据库操作--低版本附加高版本的问题
我的机房收费系统是在自己笔记本上敲的,敲完了以后把本上数据库拷了出来,放到台式机上,准备通过台式机来验收系统。当我附加数据库的时候,提示 “数据库'charge_sys'的版本为661,无法打开。此服务器支持655版及更低版本。不支持降级路径。”这是因为我本上的SQL是2008R2版的,而机房的电脑上的数据库是2008版的(当然,2008版以下的也会出现这种情况)。暂时我知道的解决方法只有原创 2014-08-17 22:07:01 · 11876 阅读 · 24 评论 -
数据库操作--存储过程
在这次机房收费系统中学习到的东西还真不少。E-R图,视图,存储过程,触发器等等。这些东西都是在之前学习过的,这次运用到实践中,收获倍增。运用存储过程的好处1、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2、当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,De原创 2015-01-18 22:54:30 · 1528 阅读 · 14 评论 -
数据库操作--已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行
在对一个表做试验的时候,往里面添加了几条数据,后来发现原本想作为主键的字段的值都为"NULL",这可不行,删除重新来吧。选中删除的时候就出现了 “已更改或删除的行值要么不能使改行成为唯一行,要么改变了多个行(X行)”的错误。原来是建表的时候忘了添加主键,但是现在删除也删除不了,往里面填东西吧,也填不了,也报错。没有办法啊~百度吧~各种解决办法,终于找到了我这个菜鸟能看懂而且操作出来的方原创 2014-08-02 21:01:04 · 10939 阅读 · 22 评论 -
数据库操作——视图
在第一遍敲机房收费系统的时候,数据库时自己根据查询的时候需要用到哪个表,哪个字段,就直接将这些字段放在了一个表里面了。没有考虑过三范式什么的。因为上下机的时候卡号,表里面的内容是动态的,卡号总是会重复,所以连主键都没有设置就直接这么下来了。当时也不懂什么数据冗余啊什么的。现在经过了一些稍微专业点的训练,知道那么做是不行的。数据库的设计需要遵循三范式。问题来了,将数据库根据三范式设计了,这样有时原创 2015-01-11 23:04:46 · 1536 阅读 · 23 评论 -
数据库操作——附加数据库
在附加数据库的时候,出现错误“附加数据库时出错,有关详细信息,请单击“消息”列中的超链接。”点击“确定”,打开消息列中的超链接,弹出错误框“执行Transact-SQL语句或批处理时发生了异常。无法升级到数据库‘charge_sys’,因为它是只读的,或者只有只读文件。请将数据库或文件设为可写,然后重新运行恢复操作。”错误原因:这是NTFS的权限问题(磁盘分区格式),NTFS格原创 2014-07-27 11:37:05 · 6198 阅读 · 32 评论 -
SqlHelper重构
在机房重构的时候有用到SqlHelper(点击查看),当时什么都不懂。后来经过不断的使用,开始理解其中的意思。后来发现原来的SqlHelper写的有点繁琐。对于每个操作都需要写两次,来区分是否带参数。这次,重构一版,来改善一下它的缺点。长度可变参数params首先,我们来看一下长度可变参数params。举两个例子来说明 第一个class Program {原创 2015-04-15 20:47:30 · 1922 阅读 · 33 评论 -
将SQL Server中的数据库导入到PowerDesigner
再用PD建表完成后导成SQL脚本然后在SQL Server中运行后生成数据库后,就想到,可不可以将直接将数据库的内容生成PD文档?经过上网查,当然可以的。要将SQL Server中的数据库导入到PD中,首先需要建立一个数据库的链接,然后进行逆向工程的操作。下面开始操作。第一步:打开数据库菜单,选择“Configure Connections”第二步:创建新的ODBC原创 2015-07-19 20:31:37 · 2110 阅读 · 32 评论 -
非相关子查询和相关子查询执行过程详解
前段时间有一个相关子查询的SQL语句,看不太懂他是如何执行的,为什么会出现那个结果。着实纠结了一把。下面来讲一下非相关子查询和相关子查询的执行过程是怎样的。非相关子查询先看一个非相关子查询到sql语句。需求:查询学生表student和学生成绩表grade中成绩为70分的学生的基本信息。select t.sno,t.sname,t.sage,t.sgentle,t.sbirth,原创 2015-12-13 23:43:33 · 12840 阅读 · 31 评论 -
Oracle的递归查询
在有时候设计数据库的时候,数据之间的关系是树型结构的,什么是树型结构呢?比方说:中国有很多省份,而每个省份又包含了很多市,市里又包括县,县又包括乡或者镇,镇又包括很多村。那么要把这些数据放到一张表里怎么做呢?看看这些数据,是不是很像一颗树呢?有父节点也有子节点。所以我们就可以用id,parentid来表示,比如说中国的id是1,因为在往上的话就没有其父节点了,所以parentid可以是0,那么原创 2015-12-06 23:54:43 · 879 阅读 · 18 评论 -
开窗函数简介
与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是普通聚合函数每组只能返回一个值,而开窗函数可以每组返回多个值。实验一比如我们想查询每个工资小于5000元的员工信息(城市以及年龄),并且在每行中都显示所有工资小于5000元的员工个数,执行下面的SQL语句select t.fcity,t.fage,count(*) from person t where t.fsalary原创 2016-01-17 22:41:53 · 7225 阅读 · 23 评论 -
SQL Server中的递归查询
Sql Server中不支持Connect by子句进行递归查询,不过可以通过使用with子句来实现递归查询。下面来看下with子句的用法with temp as ( Select fid,fnumber,fname,fmanagerId from t_person where fmanagerId is not null)Select fid,fnumber,fname原创 2016-01-10 23:30:09 · 1738 阅读 · 1 评论 -
sql查询中的null
在以前做机房收费系统的时候,遇到一个问题查询是null指的数据,是这样写的select * from student where id=null数据库明明是有数据的,但是却查询不出来。当时不知道内部执行到底是怎样的,所以也就放弃了。后来在学习中慢慢明白了其中的原理,也就一直没有记录下来。现在说一下其中的原理。如果一个字段没有被赋值,那么它的值就是null,null值并不代表没有值,而是原创 2016-02-14 22:22:28 · 1742 阅读 · 4 评论 -
This function has none of DETEMINISTIC,NO SQL错误解决办法
在MySQL中创建function的时候出现了"ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe l原创 2017-02-12 22:21:09 · 6921 阅读 · 5 评论