MySQL学习笔记一


一、开篇

数据库,全称database。实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作。

1.数据库的分类

关系型数据库

关系型数据库是依据关系模型来创建的数据库。

非关系型数据库

非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)

关系型数据库与非关系型数据库的区别

1.关系型数据库:
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
2.非关系型数据库
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛.
2、速度快:可以使用硬盘或者内存作为载体,而关系型数据库只能使用硬盘;
3、成本低:数据库部署简单,基本都是开源软件。

缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;

常见类型

关系型数据库:Oralce Mysql DB2 PostgreSQL SqlServer sqlite3(移动端的数据库,Linux和Windows也可以使用)

非关系型数据库:Redis MongDB Memcache

二、数据库基本操作

1.结构化语言SQL

数据查询语言(DQL:Data Query Language):
也称数据检索语言,最常使用SELECT命令进行查询。
数据操作语言(DML:Data Manipulation Language):
也称动作查询语言,INSERT、UPDATE和DELETE,用于添加、修改和删除表中的行。
数据控制语言(DCL):(Data Control Language):
通过GRANT、REVOKE获得许可,对单个用户或用户组进行授权。
数据定义语言(DDL):(Data Define Language):
CREATE、DROP在数据库中创建新表或删除表,DQL语言从DDL划分而出。

常见的一些名词:
数据库服务器:运行着数据库应用的设备
数据库:表的管理单元,存放数据的目录
表:文件,使用普通编辑器打不开,表里里分为字段、记录
记录(行):字段的管理单元
字段(列):字段名,字段类型、长度,字段约束组成
​ 类型:字符,数字,日期等
​ 约束:NULL NOTNULL等

常见的操作
     神器     edit    在edit里边编辑,wq保存,出来敲一个分号;  
创建库
create database company;
create database company default character set utf8;#默认是latin1,可在创建库时定义字符集
查看库
show databases; 
show create database company;#可查看创建命令
进入库
use company;
创建表
create table 表名(
		字段名1  类型[(宽度) 约束条件],
		字段名2  类型[(宽度) 约束条件],
		字段名3  类型[(宽度) 约束条件]
)[存储引擎 字符集];
==在同一张表中,字段名是不能相同
==宽度和约束条件可选
==字段名和类型是必须的
create table test(id int(2),name char(20),age int);
				  字段 类型,字段 类型(长度),字段 类型         (字段后便的就是字段的修饰符(约束条件)#查看表(show   desc(describe)   select)
查看表名称
show tables;
查看表创建过程
show create table test;  #当表特别长的时候;该为\G ,则把表向左旋转90度,可以更清楚看到
#第一列显示字段名称,第二列显示记录(创建命令)
查看表结构
desc test;  
查看表记录
select   *   from  表名;
select   字段,字段  from  表名;
查看表状态
show  table status  like  '表名' ; #引号需要存在。可在;前加\G将表格竖着显示

#修改表(alter) (add  delect  change)
修改表名字
rename table 原表名  to  新表名;         
rename table test to t1;   
alter table t1 rename t9;
添加字段 
alter table 表名  add  字段   修饰符;       
alter table t9 add gender char(20);     
alter table t9 add grade char(20) after id;  
alter table t9 add zhuanye char(20)  first;
删除字段
alter table  表名  drop  字段;
alter table t9 drop gender;
修改字段
alter table 表名 change  旧字段  新字段 修饰符;   change修改字段名称,类型,约束,顺序
alter table 表名 modify  字段  属性 修饰符;     modify 不能修改字段名称
alter table t9 change zhuanye major varchar(20) after gender; 
alter table t9 modify major  varchar(20)  after age;     
  
修改记录(inster  update  delete  where)                            
添加记录 #按顺序添加的
insert into  表名 values  (),(),(),();    
insert into  表名(字段,字段,字段)  values  (),(),();  
insert into t9 values(1,'2','yingge',18,'12','male');
insert into t9(name,grade) values ('wing','1');
insert into t9(name,grade) values ('youngfit','2'),('houzi','2'); 
insert into t9 set name='jianjian',grade='1';
修改记录(更新)#where用于定位,name为yingge,并修改字段grade
update 表名  set 字段=' ' where  主键=' ';
update t9 set grade=4 where name='yingge'; 
删除记录
delete from  表名 where  主键字段=' ';     #删除整行
delete from 表名;      #删除整个表内容,不删除表 
delete from  t9 where id=5;
删除表
drop table  表名;
drop table  t9;
删除库
drop  databse 库名;  
drop database  company;   


各种查询#多个字段有关键字相同时可用通配符*代替0个或多个字符
select id,name from t9 where grade<=3;
select id,name from company.t9 where grade<=3;

给数据库添加账号
#数据库添加远程登录用户
grant all on *.* to 'root'@'%' identified by 'Admin@123'; 
flush privileges;##刷新数据库及表的列表内容(常用于授权之后)

begin
;
开启一个事务,如果遇到失败,所有指令不生效
rollback;进行任务回滚,
commit;把命令生效

MySQL引擎:
可以理解为,MySQL的“文件系统”,只不过功能更加强大。

MySQL引擎功能:
除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。和磁盘打交道,mysql中组织。

1.什么是外键:外键的主要作用是保持数据的一致性、完整性。
2.什么是索引:索引相当于书中的目录,可以提高数据检索的效率,降低数据库的IO。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的
3.什么是事务:事务是由一步或几步数据库操作这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolatio >)和持续性(Durability)。这四个特性也简称ACID性。
(1)原子性:事务是应用中最小的执行单位,就如原子是自然界最小颗粒,具有不可再分>的特征一样。事务是应用中不可再分的最小执行体。(最小了,不可再分了)
(2)一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态>。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性来保证的。(说罢了就是白狗变成了黑狗,不能出现斑点狗!)
(3)隔离性:各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都>是隔离的。也就是说:并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间
不能相互影响。(说白了,就是你做你的,我做我的!)
(4)持续性:持续性也称为持久性,指事务一旦提交,对数据所做的任何改变,都要记录>到永久存储器中,通常是保存进物理数据库。(说白了就是一条道跑到黑)

4.什么是行锁与锁表:可以将一张表锁定和可以单独锁一行的记录。为了防止你在操作的
同时也有别人在操作。

mysql常见的储存引擎
InnoDB
MyIsam
Memory(也叫HEAP)堆内存
Blackhole(黑洞引擎)
Archive(归档引擎)

为什么要合理选择数据库存储引擎:
  MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
  这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
MyISAM和InnoDB的区别 
Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB
MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。
InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表。即 MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以 MyISAM不适合于有大量查询和修改并存的情况,那样查询进程会长时间阻塞。因为MyISAM是锁表,所以某项读操作比较耗时会使其他写进程饿死。
InnoDB支持外键,MyISAM不支持。
Innodb能存储64TB,MyISAM能存储256TB
InnoDB不支持全文索引,而MyISAM支持。全文索引是指对char、 varchar和text中的每个词(停用词除外)建立倒排序索引。MyISAM的全文索引其实没啥用,因为它不支持中文分词,必须由使用者分词后加入空格再写到数据表里,而且少于4个汉字的词会和停用词一样被忽略掉。(书的目录)
MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。
没有where的count(*)使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器,count(*)时它直接从计数器中读,而InnoDB必须扫描全表。

InnoDB及MySAM简单整理

查看支持的存储引擎
show engine;
mysql当前默认的存储引擎
show variables like '%storage_engine%';
查看Mysql服务器上的版本
select version();
创建时候指定引擎
create table t9(id int,manager char(10)) engine =innodb;

重点
数据sql语句分类
存储引擎的差别
事务的四个特性 原子性 一致性 隔离性 持续性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值