MySQL 入坑手册(含教学视频)

MySQL入坑手册(含教学视频)

2017-04-06
小螺号
码个蛋 码个蛋
码个蛋
《MySQL 入坑手册(含教学视频)》

WeChat ID codeegg

Intro 在这,我们相互学习,共同成长,分享使我们并不孤单. BRVAH@www.recyclerview.org


前言

    MySQL是最流行的关系型数据库管理系统

作者

    技能点乱点的全炸工程师

视频

     在「码个蛋」公众号中回复“20170405”获取

目录

  1. 数据库的常识

    1. 关系型数据库

    2. 非关系型数据库

  2. 搭建Mysql环境

    1. windwos

    2. linux

    3. 工作流程

  3. 库操作

  4. 存储引擎

  5. 表操作

  6. 数据基本操作

  7. 支持的数据类型

  8. 字段属性

  9. 数据高级操作

  10. 关系

1

数据库的常识

数据库分为两大阵营:关系型数据库,非关系型数据库。

关系型数据库SQL


定义:

建立在关系模型上的数据库。

关系模型:

通过各种关系来体现数据与数据之间的联系的模型。

 

关系型数据库:

大型(ORACLE,DB2),中型(mysql,SqlServer),小型(access)

特点:

  • 数据的灵活性 数据库管理系统不是把数据简单堆积,它在记录数据信息的基础上具有很多的管理功能,如输入、输出、查询、编辑修改等。

  • 数据的结构化 数据库中的数据并不是杂乱无章、毫不相干的,它们具有一定的组织结构,属于同一集合的数据具有相似的特征。

非关系型数据库NOSQL:Not Only SQL


定义:

所有不是关系型数据库的数据库都是非关系型数据库

非关系型数据库保存数据的方式:

键值对

 

特点:

  • 运行在内存

  • 使用键值对来保存和表示数据

  • 运行之后,会进行数据同步(将内存的数据写入到磁盘)

两者对比

  • 保存数据的介质不同(关系型在磁盘,非关系型在内存)

  • 非关系型数据库效率比关系型数据库高得多

  • 关系型数据库比非关系型数据库安全

2

搭建Mysql环境


windwos

  1.  使用安装包 .msi

  2.  使用zip解压的形式

    1. 将 my-default.ini 重命名为my.ini

    2. 更改相关配置~~

      basedir = D:\MySQL\Server\mysql-5.6.20-win32

      datadir = D:\MySQL\Server\data

    3.  mysqld -install

    4. net start mysql

linux


  1. sudo apt-get install mysql-server

  2. apt isntall mysql-client

  3. apt install libmysqlclient-dev

  4. 测试是否安装成功 `sudo netstat -tap | grep mysql`

工作流程

1.     客户端发送连接请求,建立连接:mysql –h –P –u –p

  • h:host,ip地址或者域名,默认可以没有代表localhost

  • P:大写,端口默认为3306

  • u:username,用户名

  • p:password,用户密码

2.     准备SQL语句:逐行执行,以分号为结束符

3.     发送SQL语句:发送给服务器

4.     服务器接收SQL并执行

5.     服务器发送执行结果给客户端

6.     客户端解析结果

7.     关闭连接

  • exit

  • quit

  • \q

3

库操作


数据库命名规范


1. 使用字母,下划线和数字构成

2. 不能是关键字,如果是关键字,需要使用反引号将名字包裹

  • 反引号:esc下面的波浪线按键对应的英文状态下的输出

新增数据库


create database 数据库名字 [库选项];

库选项:

字符集设置(charset):表示以后在当前数据库存储的数据,默认采用utf-8的字符集存储

校对集设置(collate):如何比较大小

查看数据库


查看数据库基本信息:show databases;||模糊查询:show databases like ‘pattern’

模糊匹配:%匹配任何内容,_表示匹配一个字符

查看数据库创建语句:show create database 数据库名字

修改数据库


数据库名称不可修改,只能修改数据库的库选项

语法:alter database 数据库名字 [库选项]

删除数据库


drop Database 数据库名字;

4

存储引擎

存储引擎:处理和保存数据的方式。主要存储引擎是InnoDB和Myisam

           InnoDB:会创建一个结构文件,数据和索引都放在ibdata1文件里

           Myisam:创建三个文件,结构,索引和数据

 

引擎因为费用的问题分为两类

           免费:InnoDB和Myisam都是免费

           收费:BDB,memory,archive都是收费

《MySQL 入坑手册(含教学视频)》

Myisam与InnoDB的区别

1.     Myisam在插入数据和查询数据的时候都比InnoDB效率高

2.     InnoDB在更新和删除的时候比Myisam效率高

3.     InnoDB支持事务安全,Myisam不支持

 

如何选择存储引擎?

1.     基本可以使用数据库默认的存储引擎(InnoDB)

2.     如果在需要事务处理的时候,只能选择InnoDB

3.     数据本身以插入和查询为主,那么可以使用Myisam

 

SQL语言是一种强类型语言,在为数据进行定义的时候,必须要指定数据类型。

5

表操作


新增表

create table 表名(字段1 字段类型,字段2 字段类型)[表选项];

1.     字段必须要有字段名,字段类型

2.     字段与字段之间使用逗号分隔

3.     最后一个字段不需要使用逗号

表选项

           字符集:当前表的数据采用什么字符集保存,字符集以表的字符集为标准

           存储引擎:当前表的数据采用什么样的存储引擎来存储

                      InnoDB:只会创建一个表结构文件,其他的索引和数据存放在ibdata1文件中

                      Myisam:会创建三个文件,一个是结构文件,一个是数据文件,一个是索引文件

删除表

drop table 表名

查看表

1. 查看表基本信息:show tables || show tables like ‘pattern’;

2. 查看表的创建语句:show create table表名;

3. 查看表结构:desc|describe 表名||show columns from 表名

修改表

可以修改表的名字,表的字段的增删改查,字段的属性的修改,字段的位置的修改

语法:alter table 表名 [add/modify/drop] [column] 字段名字 [字段类型] [字段位置]

增加字段[add]

alter table 表名 

add column 字段名字 字段类型 [位置]

字段默认在表最后增加

位置:first表示在最前面,after表示在某个字段之后(默认其实是after在最后一个字段之后)

修改字段[modify]

alter table 表名 modify 字段名字 字段类型 [位置]

修改字段名字[change]

alter table 表名 change 旧字段 新字段 字段类型 [字段位置]

删除字段[drop]

alter table 表名 drop 字段名字

注意:

  1. 创建过程中会不知道当前表名是否存在:if not exists表示只有表名不存在的时候才去创建,否则放弃执行;

    create table [if not exists] 表名(字段1 字段类型,字段2 字段类型)[表选项]

  2. 删除表的过程中,不知道表是否已经存在:if exists

    drop table [if exists] 表名

  3. 数据库和数据表都不能随意的删除,删除具有不可逆性。如果确定要删除数据库或者数据表,那么必须要事先备份。

6

数据基本操作

新增数据

insert into 表名 (字段列表) values(值列表)

字段列表可以没有,意味着值列表里的字段数必须与表中的字段数完全一致

 

插入数据必须注意

1.     插入的值类型必须与数据字段定义的数据类型一致,除了整型可以不加引号之外,其他的都要加上引号

2.     整型也可以加上引号

3.     允许一次性插入多条记录,在values字段后面使用逗号分隔即可

查看数据


select 字段列表 from 表名 [where 条件]

 

修改/更新数据

update 表名 set 字段 = 值 [where条件]

删除数据


delete from 表名 [where条件]

行(row)和记录(record):行和记录表示的意思是完全一样的,行是站在表结构的角度上定义,而记录是站在数据的角度上去定义

列(column)和字段(Field):与行和记录的区别是一样的。

7

数据类型

《MySQL 入坑手册(含教学视频)》

8

字段属性

null/not null

表示字段的值可以为空(在进行数据插入的时候,该字段可以不给数据),not null表示不能为空,必须要给定值(不能是null)

default

primary key


主键,主要的键,用主键修饰的字段,该字段具有唯一性(不能重复)

  1. 一张表最多只能有一个主键

  2. 主键字段不能为空

auto_increment


自动增长

  1. 字段必须是整型

  2. 必须保证使用自动增长的字段首先满足的一个条件:是一个索引字段

  3. 一张表只能有一个自动增长

  4. 自动增长通常是配合逻辑主键(id int primary key auto_increment)

unique key

唯一键,字段的值不能重复

  1. 一张表唯一键可以有多个

  2. 唯一键不对null进行处理

comment

注释

9

数据高级操作



主键冲突:insert into 表名 values(值列表) on duplicate key update 字段 = 值,字段=值

替换插入:replace into 表名 (字段列表) values(值列表);


delete from 表名 [where条件] [limit]

删除数据并不能修改一张表的索引和自增长。如果想删除表的自增长重新来过

先删除表(drop),再新建表(create)

mysql提供了简单方式实现两个步骤:truncate 表名;


别名:as

where:依据条件筛选数据

比较运算符:>,>=,<,<=,=(比较),!=,<>,in,between and,is [not]null

in:表示某个字段的值,在某个集合(包含多个数据)中

语法:select * from 表 where 字段 in (值1,值2…);

between and:表示在某个区间内(闭区间)

语法: select * from 表 where 字段 between A and B(A必须小于等于B);

is null:判断数据是否为null

语法:select * from 表 where 字段 is [not] null;

逻辑运算符:&& and,|| or,not

group by:

group by分组之后,会将数据进行合并,从而只象征性的保留每组的第一条记录。

通常group by不是为了得到分组后的每组的全部数据,而是用来统计每组的信息。

统计函数:都是数学统计

count:统计所有的记录的个数,也可以是所有字段(不统计null)

max:统计分组后每组里面的最大值,通常是某个字段

min:统计最小

avg:统计平均数

sum:求和

 having:

功能与where一样,用于做条件判断

不同点:having可以使用字段别名,而where不能

不同点:having可以使用统计函数

 order by:

主要是对字段进行排序,有两种方式:asc默认的,desc降序排序,比较的依据是校对集。

limit:

限制数据查询的起始位置和返回数据的条数 (默认情况下从第一条开始)


update 表名 set 字段 = 值 [where条件]  [limit]

10

关系


多对一/一对多


需求:有一个学生表一张班级表

一个学生只属于一个教室,一个教室却包含多个学生。这种关系就称之为多对一或者一对多的关系

《MySQL 入坑手册(含教学视频)》


多对多

需求:有一个教师表和一个学生表

一个学生被多个老师教过,一个老师教过多个学生,这个关系就称之为多对多的关系

《MySQL 入坑手册(含教学视频)》

一对一


需求:一个学生信息,有10种信息,其中只有5个信息是非常常用的,其他5个信息基本上用不上(婚姻状况,籍贯,国籍)。

将一个表中常用的数据和不常用的数据分离开来,分别保存,但是使用同样的id进行管理。

《MySQL 入坑手册(含教学视频)》
《MySQL 入坑手册(含教学视频)》
    原文作者:SQL
    原文地址: https://juejin.im/entry/58e5a223a22b9d0058884f2c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞