数据库

浅谈mysql

安稳与你 提交于 2020-03-18 13:53:51
关于数据库其实我们可以简单的理解为存储货物的一个厂库,里面分别是按照一定的分类存放的物品,然后人们有时会从厂库中拿走或存储一些物品,有时也会更改或增加一些分类 这些物品都分门别类的存放在厂库中,方便人们的查询和存储。 MySQL是一个关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在互联网行业。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多互联网公司选择了MySQL作为后端数据库。2008年MySQL被Sun公司收购,2010年甲骨文成功收购Sun公司。 MySQL数据库的优点: 1、多语言支持:Mysql为C、C++、Python、Java、Perl、PHP、Ruby等多种编程语言提供了API,访问和使用方便。 2、可以移植性好:MySQL是跨平台的。 3、免费开源。 4、高效:MySql的核心程序采用完全的多线程编程。 5、支持大量数据查询和存储:Mysql可以承受大量的并发访问。 由于本人最先接触到的数据库是oracle,在此谈论mysql说的有些命令或知识可能是oracle 上的,mysql可能不适用,见谅 首先先介绍下mysql的常用命令: 显示所有数据库:show databases; •选定默认数据库:use dbname; •显示默认数据库中所有表:show tables; •放弃正在输入的命令:\c

事务 , 视图 , 和索引

别说谁变了你拦得住时间么 提交于 2020-03-18 13:53:29
01. 事务 什么是事务? 事务是单个的工作单元 如在某一项事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据更改均被清楚 为什么需要事务? 在银行业务中,有一条记账原则 ,即又借有贷,借贷相等,为了保证这种原则,每发生一笔银行业务,就必须确保会记账目上 借方科目和贷方科目至少各记一笔,并且这两笔账要么同时成功,要么同时失败. 视图使得人们可以为一个或者多个数据表定义一个特殊的表现形式。视图在表现行为上与表没有差别,可以select查询,也可以用insert,update,delete来修改数据。 一般使用视图的理由有两个,一个是安全,例如一个表中包含了员工的个人资料,那像电话姓名这些是所有人都可以查询的,但是像薪水这些东西就只有特定的人能查询了,因此最好的办法就是将所有人都可以访问的数据部分创建为一个视图,供别人查询。另一个是方便,视图使用起来很方便,不用输入复制的命令 在视图里修改数据:能不能修改某个视图中的数据取决于视图的select命令,可刷新的视图需要满足以下几个条件: (1)当初定义的select中不得包含group by、distinct、limit、union或having等子命令 (2)如果视图中的数据来自一个以上的表,那它总是不可刷新的 (3)视图中应包含主键索引,唯一索引

如何利用运维面板进行数据库一键安装和管理?

久未见 提交于 2020-03-18 13:36:44
数据库的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的管理工具,MySQL是一个非常流行的小型关系型数据库管理系统,2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型 网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 接下来我为大家详细介绍如何通过运维面板云帮手来一键安装数据库以及管理数据库,包括数据库创建、修改、权限设置、备份和恢复。 一、数据库一键安装 在云帮手面板的 ->环境管理模块中,打开 ->软件市场 里面自带不同版本下的环境组件,支持不同场景下的一键安装环境部署,不用自己搭建框架,极速方便的一键配置安装,对于纯小白来说是非常友好的。 WEB服务器:IIS、Nginx、Apache SQL数据库:MySQL、SQLServer FTP服务器:FileZilla Server 环境框架:PHP、.NET Framework 管理工具:phpMyAdmin、TightVNC 选择数据库的合适版本进行一键安装部署 二、创建数据库 点击"添加数据库",显示创建数据库弹框 填写相关信息后,点击"确定" 2.列表中展示已创建好的数据库 三、修改 ROOT 密码 1.点击"修改 ROOT 密码",显示修改数据库 ROOT 密码弹框

ORACLE数据库事务隔离级别

∥☆過路亽.° 提交于 2020-03-18 13:33:55
事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。 两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题: 1、 幻想读 :事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。 2、 不可重复读取 :事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。 3、 脏读 :事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。 为了处理这些问题,SQL标准定义了以下几种事务隔离级别 READ UNCOMMITTED 幻想读、不可重复读和脏读都允许。 READ COMMITTED 允许幻想读、不可重复读,不允许脏读 REPEATABLE READ 允许幻想读,不允许不可重复读和脏读 SERIALIZABLE 幻想读、不可重复读和脏读都不允许 Oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。所以Oracle不支持脏读 SQL标准所定义的默认事务隔离级别是SERIALIZABLE,但是Oracle

如何恢复只有完好数据文件的Sybase数据库

橙三吉。 提交于 2020-03-18 13:23:35
-、当一个数据库服务器无法启动及尽管服务开启但无法登陆时,其中的用户数据库怎么办。有一种万不得已的方法: ⊙卸载重新装数据库,在重装之前,需要将用户数据库数据文件备份出来,停止服务! ⊙以单用户方式启动数据库服务器。更改sybase安装目录下install下的RUN_(服务名).bat文件,在其后加-m参数: 如:e:\sybase\bin\sqlsrvr.exe -de:\sybase\DATA\MASTER.DAT -sXXJ -ee:\sybase\install\errorlog -ie:\sybase\ini -Me:\sybase -m 然后执行该批处理文件,启动服务器 ⊙运行isql -Usa –P -Dmaster:执行以下命令: 恢复设备: disk reinit name=’原来建立的设备名’,physname=’物理路径(可以与原来不一样’,vdevno=虚拟设备号(只要唯一就行),size=(以2k为单位) go 自动将设备与数据库绑定: disk refit go 在做完以上步骤后,可能会报告一些错误,同时数据库服务器进程终止。 ⊙仍以(且必须)单用户方式启动数据库服务器。这时候需要的用户数据库恢复了。 ⊙以正常方式重新启动数据库。将启动参数-m去掉。 来源: https://www.cnblogs.com/SharkXu/archive/2007/03

sybase备份与恢复及sybase常用语句

我是研究僧i 提交于 2020-03-18 13:22:47
sybase备份有两种方式,一种是对单表进行备份,一种是对整个数据库进行备份 1、单表备份与恢复 只需要使用sybase提高的bcp命令就可以了: bcp的命令格式: bcp 数据库名..表名 in/out 文件名字 -Usa –Ppassword -S SERVERNAME –c 解释: 数据库名为要备份的数据库名字 表名为要备份的表的名字 in/out 备份用out,恢复用in 文件名字:备份形成的文件或恢复需要的数据文件,要求包含文件的路径信息 password:sa的口令 servername:如本机器连接多个数据库服务器,则需要指定相应的数据库服务器 2、整个数据库的备份与恢复 这种方式相对比较复杂一点,需要在备份前启动sybase的备份服务,启动方式如下: startserver -f RUN_SYBASE //启动SYBASE服务 RUN_SYBASE: #!/bin/sh # # Master device path: /home/sybase/data/master # Error log path: /home/sybase/install/SYBASE.log # Directory for shared memory files: /home/sybase # Adaptive Server name: SYBASE # /home/sybase/bin

Oracle数据导入、导出dmp文件

余生长醉 提交于 2020-03-18 12:52:49
某厂面试归来,发现自己落伍了!>>> 数据导出,命令exp,将远程数据库中的数据导入到本地,比如你在windows下可以将Linux中的数据库中数据导出到Windows本地。 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中,将Test数据库中所有数据导出到一个dmp文件中。前提是登录用户即system有导出权限。 exp system/manager @TEST file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出,指定导出某些用户的表。 exp system/manager @TEST file=d:\daochu.dmp owner=(system,sys) 3 将数据库中的表table1 、table2导出,指定导出固定的表 exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 数据导入,命令imp 1 将D:\daochu.dmp中的数据导入TEST数据库中。要先删掉将要导入的表,如果是全库导入就删掉所有的表,否则导入过程中会报表已存在的错。 imp system/manager@TEST file=d:\daochu.dmp 2 将d:\daochu.dmp中的表table1导入

MySql的读写分离

谁都会走 提交于 2020-03-18 11:00:06
数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群。而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从;业务服务器把数据写到主数据库中,读操作都去从库读;主库会同步数据到从库,保证数据的一致性。 主从集群 这种集群方式,就是将访问的压力从主库转移到从库,单机的数据库不能支撑并发读写的时候,而且读的请求很多的情况下就适合数据库集群。如果写的操作很多的话,那就不适合这种集群方式,因为写的时候是写入主库,主库的压力还是没有变化,同时同步到从库也需要消耗资源。 单机的时候,一般数据库优化就是加索引,但是加了索引对查询有优化,但是写入的时候会有影响,因为写入的数据库不会更新索引。所以在主从数据库中,可以单独的对读库(从数据库)做索引,而写库(主数据库)可以减少缩影而提高写的效率。 但是主从数据库中需要注意: 主从同步延迟、分配机制的考虑 主从同步延迟 二次读取 一般操作是,在从库读取数据时,没有读到数据,就去主库进行数据读取。但是这种操作还是将读的压力返还给主库,如果有恶意的攻击,主库就爆了。 一般情况下,通过对数据库访问的API进行封装就能实现这个功能,业务之间没有耦合。 写了之后的马上读操作操作主库 在写了数据后,立马读操作就去访问主库,之后的读操作访问从库,这种业务上会有高度耦合。 根据业务,将重要的业务数据的读写都放在主库

MySQL5.7-utf8mb4保存emoji表情失败踩坑

邮差的信 提交于 2020-03-18 10:54:07
某厂面试归来,发现自己落伍了!>>> Emoji表情很有趣,但是直接存到数据库里面会报错,因为现在Emoji都是4字节,8字节的字符,不同以往utf8 比如SQLException :Incorrect string value: ‘\xF0\xA1\x8B\xBE\xE5\xA2…’ for column ‘name’ 踩坑开始 数据库MySQL5.7 系统CentOS 7 64位 数据库,表,字段设置为utf8mb4 建表测试,直接用可视化工具Navicat是可以吧emoji表情存进去的 但是用服务器用mybatis就是存不进去,依旧报错 用SQL查数据库属性,里面有非utf8mb4的属性 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%' ; 最后解决方案, 打开/etc/my.conf 加入以下内容 [ client ] default - character - set = utf8mb4 [ mysqld ] character - set - server = utf8mb4 collation - server = utf8mb4_general_ci [ mysql ] default - character - set =