MySQL数据库06 /数据库总结
MySQL数据库06 /数据库总结
1. 数据库/DBMS
MySQL -RDBMS 关系型
2. 数据库分类
关系型:mysql、oracle、sqlserver、access
非关系型:redis、mongodb...
3. 修改密码
mysql>set password for root@'127.0.0.1'=password('新密码')
mysqladmin -u root -p老密码 password 新密码;(不用进入mysql里边)
mysql>update user set password=password('新密码') where user='root';
4. 库操作
创建库:
create datadase 库名 charset='utf8';
连接库:
use 库名
查询库:
show databases;
show create database 库名 (查看库的详细创建语句);
删库:
drop database 库名;
5. 表操作
创建:
create table 表名(
字段1名 类型(宽度) 约束条件,
字段2名 类型(宽度) 约束条件
);
删除:
drop table 表名;
查看表:
show create table 表名;
show create table 表名\G(写了\G后面就不用加;)
show table;
select * from userinfo\G -- 表信息竖向展示
清空表:
truncate 表名; 清空表,自增重置
delete from 表名; 清空表
6. 存储引擎
InnoDB和MyISAM(三点:事务,行级锁/表级锁,外键)
MyISAM引擎特点:
1.不支持事务
事务是指逻辑上的一组操作,组成这组操作的各个单元,要么全成功要么全失败。
2.表级锁定
数据更新时锁定整个表:其锁定机制是表级锁定,也就是对表中的一个数据进行操作都会将这个表锁定,其他人不能操作这个表,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。
3.读写互相阻塞
不仅会在写入的时候阻塞读取,MyISAM还会再读取的时候阻塞写入,但读本身并不会阻塞另外的读。
4.只会缓存索引
MyISAM可以通过key_buffer_size的值来提高缓存索引,以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据。
5.读取速度较快
占用资源相对较少
6.不支持外键约束,但只是全文索引
7.MyISAM引擎是MySQL5.5版本之前的默认引擎,是对最初的ISAM引擎优化的产物。
InnoDB引擎
介绍:InnoDB引擎是MySQL数据库的另一个重要的存储引擎,正称为目前MySQL AB所发行新版的标准,被包含在所有二进制安装包里。和其他的存储引擎相比,InnoDB引擎的优点是支持兼容ACID的事务(类似于PostGreSQL),以及参数完整性(即对外键的支持)。Oracle公司与2005年10月收购了Innobase。Innobase采用双认证授权。它使用GNU发行,也允许其他想将InnoDB结合到商业软件的团体获得授权。
InnoDB引擎特点:
1.支持事务:支持4个事务隔离界别,支持多版本读。
2.行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响。
3.读写阻塞与事务隔离级别相关(有多个级别,这就不介绍啦~)。
4.具体非常高效的缓存特性:能缓存索引,也能缓存数据。
5.整个表和主键与Cluster方式存储,组成一颗平衡树。(了解)
6.所有SecondaryIndex都会保存主键信息。(了解)
7.支持分区,表空间,类似oracle数据库。
8.支持外键约束,不支持全文索引(5.5之前),以后的都支持了。
9.和MyISAM引擎比较,InnoDB对硬件资源要求还是比较高的。
7. 事务
事务介绍:
简单地说,事务就是指逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句,执行时要么全成功要么全失败。
例如:你给我转账5块钱,流程如下
a.从你银行卡取出5块钱,剩余计算money-5
b.把上面5块钱打入我的账户上,我收到5块,剩余计算money+5.
上述转账的过程,对应的sql语句为:
update 你_account set money=money-5 where name='你';
update 我_account set money=money+5 where name='我';
上述的两条SQL操作,在事务中的操作就是要么都执行,要么都不执行,不然钱就对不上了。
这就是事务的原子性(Atomicity)。
事务的四大特性:
1.原子性(Atomicity)
事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。
2.一致性(Consistency)
事务发生前和发生后,数据的完整性必须保持一致。
3.隔离性(Isolation)
当并发访问数据库时,一个正在执行的事务在执行完毕前,对于其他的会话是不可见的,多个并发事务之间的数据是相互隔离的。也就是其他人的操作在这个事务的执行过程中是看不到这个事务的执行结果的,也就是他们拿到的是这个事务执行之前的内容,等这个事务执行完才能拿到新的数据。
4.持久性(Durability)
一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允撤销,只能通过'补偿性事务'。
事务的开启:
数据库默认事务是自动提交的,也就是发一条sql他就执行一条。如果想多条sql放在一个事务中执行,则需要使用事务进行处理。当我们开启一个事务,并且没有提交,mysql会自动回滚事务。或者我们使用rollback命令手动回滚事务。
8. 约束
not null unique default primary key foreign key auto_increment
foreign key
被关联的被关联的字段首先一定要是唯一
关联表字段数据不能超过被关联字段的数据范围
被关联表不能随意的删除和修改关联数据
9. 数据类型
数值类型 int float
整型
浮点型
字符串类型
char(10)和varchar(10)
0-255 255字符
日期和时间
data time datatime
枚举和集合
enum set
10. 单表语句
插入:insert into 表名 values(xx,x,xx),(xx,xx,x);
删除:delete from 表名 where id = 1;
改:update 表名 set 字段名='新值' where id = 1;
查:select distinct 字段1,字段2...from 库名.表名
where 筛选条件
group by 分组依据字段
having 过滤条件 分组后过滤 可以使用聚合函数
order by 排序
limit 限制显示条数
11. 多表查询
连表
inner join, left join,right join,union
select employee.name from employee inner join department on employee.dep_id = department.id where department.name='技术';
子查询:某个查询语句作为另外一个语句的查询条件
select name from employee where dep_id= (select id from department where name='技术');
12. 索引
b+树:提高查询效率
聚集索引
组织存储表所有数据的依据
id primary key
叶子节点存的是真实数据,存的是整行记录
辅助索引(普通索引)
普通索引建立树形结构,提高查询效率,但是叶子节点存的是该列的数据和对应行的主键值
index name_index(name)
unique name_index(name)
select name from 表名 where name = 'xx';
叶子节点找到了对应数据,称为覆盖索引
找不到列数据,需要回表操作(拿着主键重新走一遍主键的树形结构找到对应行的那一列的数据)
索引分类
主键索引 唯一索引 普通索引
联合主键索引 联合唯一索引 联合普通索引
联合索引的最走匹配特性
多条件查询时
where name = 'xx' and age='xx' and sex ='xx'
index name_index(name,age,sex)
where age='xx' and sex='xx'
MySQL数据库06 /数据库总结的更多相关文章
- MySQL+Amoeba实现数据库主从复制和读写分离
MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...
- 项目实战7—Mysql实现企业级数据库主从复制架构实战
Mysql实现企业级数据库主从复制架构实战 环境背景:公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公 ...
- MySQL定时备份数据库
一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...
- mysql数据库连接池使用(三)数据库元数据信息反射数据库获取数据库信息
1.1. mysql数据库连接池使用(三)数据库元数据信息反射数据库获取数据库信息 有时候我们想要获取到数据库的基本信息,当前程序连接的那个数据库,数据库的版本信息,数据库中有哪些表,表中都有什么字段 ...
- MySQL定时备份数据库(全库备份)
一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...
- tornado 06 数据库—ORM—SQLAlchemy——基本内容及操作
tornado 06 数据库—ORM—SQLAlchemy——基本内容及操作 一. ORM #在服务器后台,数据是要储存在数据库的,但是如果项目在开发和部署的时候,是使用的不同的数据库,该怎么办?是不 ...
- MySQL 高可用:mysql+mycat实现数据库分片(分库分表)
本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么 ...
- Database基础(一):构建MySQL服务器、 数据库基本管理 、MySQL 数据类型、表结构的调整
一.构建MySQL服务器 目标: 本案例要求熟悉MySQL官方安装包的使用,快速构建一台数据库服务器: 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 确认 ...
- Mysql单实例数据库安装
第1章 MySQL数据库安装 在当今的大中型互联网企业里,MySQL数据库服务几乎都是运行在Linux系列操作系统上,当然,你在可以运行在Windows/Unix等商业操作系统上,大中型互联网企业使用 ...
随机推荐
- 怒肝俩月,新鲜出炉史上最有趣的Java小白手册,第一版,每个 Java 初学者都应该收藏
这么说吧,在我眼里,Java 就是最流行的编程语言,没有之一(PHP 往一边站).不仅岗位多,容易找到工作,关键是薪资水平也到位,不学 Java 亏得慌,对吧? 那可能零基础学编程的小伙伴就会头疼了, ...
- sublime Text3 实现2:1:1三分屏效果
小trick, 水一篇博客 先上效果图 由于写题啥的时候需要重定向输入输出改数据对拍, 设置成这样的效果就非常直观的看数据 直接切题, 首选项--快捷键--default里搜索alt+shift+1( ...
- MFC exe文件生成的图标更改方法
MFC exe文件生成的图标更改方法 https://blog.csdn.net/txwtech/article/details/92980545
- Flutter学习笔记(35)--通知Notification
如需转载,请注明出处:Flutter学习笔记(35)--通知Notification 通知的NotificationListener和我们之前写的事件的Listener一样,都是功能性的组件,而且也都 ...
- JVM源码分析之Object.wait/notify(All)完全解读
概述 本文其实一直都想写,因为各种原因一直拖着没写,直到开公众号的第一天,有朋友再次问到这个问题,这次让我静心下来准备写下这篇文章,本文有些东西是我自己的理解,比如为什么JDK一开始要这么设计,初衷是 ...
- java scoket Blocking 阻塞IO socket通信四
记住NIO在jdk1.7版本之前是同步非阻塞的,以前的inputsream是同步阻塞的,上面学习完成了Buffer现在我们来学习channel channel书双向的,以前阻塞的io的inputstr ...
- Idea激活JRebel
选择license激活 UUID 生成地址: http://www.uuid.online 激活地址 http://jrebel-license.jiweichengzhu.com/ UUID
- List<List<Object>> list = new ArrayList<List<Object>>(); 求回答补充问题 list.get(position).add(Object);为什么会报错啊我想在对应的list里面添加对象
public static void main(String[] args){ List<List<Object>> list = new ArrayList<List& ...
- Nginx 从入门到放弃(二)
学习完了nginx的基本知识后,我们来了解下nginx的虚拟主机. 说到虚拟主机,那就得说一说虚拟主机的三种方式了 基于端口的虚拟主机 基于域名的虚拟主机 基于ip的虚拟主机 基于端口实现虚拟主机 只 ...
- Flutter轮播图
前端开发当中最有意思的就是实现动画特效,Flutter提供的各种动画组件可以方便实现各种动画效果.Flutter中的动画组件主要分为两类: 隐式动画控件:只需设置组件开始值,结束值,执行时间,比如An ...