Mysql数据库
1.安装配置Mysql
1.Windows操作Mysql服务器
安装成功Mysql之后,会在"控制面板->管理工具->服务"中出现Mysql服务,选中Mysql服务右键选择启动,停止,重启选项。
2.Linux操作Mysql服务器
0.在线安装
sudo apt install mysql-sever-5.7
(Ubuntu 16.10和17.04这两个版本对于5.7支持比较好)
在安装过程中有一个需要输入“root(此root非彼root)”用户密码过程,需要输入两次。
修改配置文件允许远程访问
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address=127.0.0.1修改为0.0.0.0
1.启动
1、使用 service 启动:service mysql start
2、使用 mysqld 脚本启动:/etc/inint.d/mysql start
3、使用 safe_mysqld 启动:safe_mysql&
2.停止
1、使用 service 启动:service mysql stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysql stop
3、mysqladmin shutdown
3.重启
1、使用 service 启动:service mysql restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysql restart
4.配置客户端登录
在家目录下 vi .my.cnf
[client]
host=‘127.0.0.1’
port=3306
user=‘root’
password=‘briup’
default-character-set=UTF8
3.Mac操作Mysql服务器
1.启动MySQL服务
sudo /usr/local/MySQL/support-files/mysql.server start
2.停止MySQL服务
sudo /usr/local/mysql/support-files/mysql.server stop
3.重启MySQL服务
sudo /usr/local/mysql/support-files/mysql.server restart
也可以改进一下,让Mac系统管理Mysql服务。
编辑vi .bash_profile文件
新增
export MYSQL_HOME=/usr/local/mysql
export PATH=
P
A
T
H
:
PATH:
PATH:CLASSPATH
export PATH=
P
A
T
H
:
PATH:
PATH:MYSQL_HOME/bin
alias mysqlstart=‘sudo /usr/local/mysql/support-files/mysql.server start’
alias mysqlstop=‘sudo /usr/local/mysql/support-files/mysql.server stop’
source .bash_profile
后期通过系统偏好设置启动关闭Mysql服务。
2.Mysql基本概念
数据库 DB DataBase ---->存储持久数据 … 将数据按照一定的规则组织到一起,持久存储在计算机中。
数据库系统 DBS 在计算机系统中安装数据库
数据库管理系统 DBMS 数据库管理系统是用来管理数据库的。
数据发展据管理技术的阶段
1.人工管理阶段
2.文件系统阶段
3.数据库系统阶段
数据库技术发展阶段
1.层次数据库和网格数据库技术阶段
2.关系数据库技术阶段 Mysql Oracle SqlServer DB2 Access
3.后关系数据库技术阶段 非关系型数据库 Nosql Hbase(列式数据库) redis Mongdb
对于操作数据库的程序人员来说,发送一条SQL命令到获取到相应结果,中间需要经过的步骤:
数据库接收到SQL之后:
SQL命令分为两类:
1.固定命令 show databases;
2.查询命令 DML DDL
1.用户发送SQL语句
2.数据库管理系统接收
3.对SQL语句进行解析 绑定 优化 执行(查询-增删改查 DML DDL)
4.返回执行结果
数据库管理系统提高的功能
1.数据定义语言(Data Definition Language) DDL
创建/删除/修改 table database view trigger index
2.数据操作语言(Data Manipulation Language)DML
增删改查
insert
delete
update
select
3.数据控制语言(Data Control Language)DCL
对事务进行管理
提交事务
回滚事务
grant 赋予权限
revoke 撤销权限
SQL结构化查询语言Structed Query Language
关系型数据库中的SQL语言基本一致。但数据类型以及函数以及一些关键字可能不相同。
3.数据库操作
1.数据库基本操作
标识符
1.字母,数字,下划线,@,#,
符
合
组
成
2.
首
字
母
不
能
是
数
字
和
符合组成 2.首字母不能是数字和
符合组成2.首字母不能是数字和
3.不允许是Mysql的关键字以及保留字
4.不允许出现空格和特殊字符
5.长度小于128位
查看数据库
show databases;
创建数据库
create database databaseName [character set utf8];
选择数据库
use databaseName;
删除数据库
delete database databaseName;
修改数据库的编码格式
alter database <数据库名> character set utf8;
查看Mysql数据库文件存储在哪个目录
show global variables like "%datadir%"
2.存储引擎
为了提高Mysql数据库管理系统的使用效率和灵活性,可以根据实际需求选择存储引擎。
存储引擎指定了表的类型(即如何存储和索引数据,是否支持事物等)。
1.查看Mysql支持的存储引擎
show engines;
show engines\g
show engines\G
show variables like 'have%';
2.操作默认存储引擎InnoDB
1.查询默认存储引擎
show variables like 'default_storage_engine%';
2.修改默认存储引擎
1.安装版的时候在安装的时候选择存储引擎
2.解压版直接修改my.ini配置文件,修改default-storage-engine的值。
3.Mysql常用的引擎
1.InnoDB
InnoDB的存储文件有两个,后缀名分别是.frm和.idb,其中.frm是表的定义文件,而idb是数据文件。
InnoDB中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。
InnoDB支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读;而在Oracle数据库中,只支持串行化级别和读已提交这两种级别,其中默认的为读已提交级别。
InnoDB中的B+Tree
InnoDB是以ID为索引的数据存储。采用InnoDB引擎的数据存储文件有两个,一个定义文件,一个是数据文件。
InnoDB通过B+Tree结构对ID建索引,然后在叶子节点中存储记录。
若建索引的字段不是主键ID,则对该字段建索引,然后在叶子节点中存储的是该记录的主键,然后通过主键索引找到对应的记录。
2.Myisam
Myisam 的存储文件有三个,后缀名分别是.frm、.MYD、MYI,其中.frm是表的定义文件,.MYD是数据文件,.MYI是索引文件。 Myisam只支持表锁,且不支持事务。Myisam由于有单独的索引文件,在读取数据方面的性能很高 。
Myisam中的 B+Tree:
Myisam引擎也是采用的B+Tree结构来作为索引结构。由于Myisam中的索引和数据分别存放在不同的文件,所以在索引树中的叶子节点中存的数据是该索引对应的数据记录的地址,由于数据与索引不在一起,所以Myisam是非聚簇索引。
InnoDB和Myisam都是用B+Tree来存储数据的,目前常用的Mysql引擎是InnoDB,原因在于它支持行级锁、支持事务。
3.数据类型
查看系统帮助文档
help contents;
查看数据类型
help data types;
查看具体某一个类型
help int;
1.整数类型
标准SQL中的所有整数类型(smallint和int)外,tinyint 和mediumint和bigint。
整数类型 字节 范围
tinyint 1 -128~127或0~255
smallint 2 -215~215-1或0~2^16-1
mediumint 3 -223~223-1或0~2^24-1
int和integer 4 -231~231-1或0~2^32-1
bigint 8 -263~263-1或0~2^64-1
2.浮点数类型
标准SQL中的所有浮点类型(float(4)和double(8)),定点数类型(dec,decimal)外,还支持位类型(bit)。
dec(m,d)和decimal(m,d)字节为m+2,范围与double类型一致。
bit(m),字节为1-8,范围bit(1)~bit(64)。
练习1:
create table s_test(a float(38,30),b decimal(38,30));
insert into f_test values(123450.000000000000000000000001,123450.000000000000000000000001);
select * from f_test \G
float和double数据类型存储数据室存储的是近似值,而decimal存储的是字符串,因此精确度更高,在需要表示金额等货币类型时优先选择decimal数据类型。
练习2:
create table s_bit(id bit(8));
insert into s_bit values(11),(b'0011');
select id+0 from bit_test ;
select bin(id+0) from bit_test ;
存储的第一个数字为十进制的数字“11”,
存储的第二个数字为二进制的数字“11”。
3.日期时间类型
类型 字节 范围
date 4 1000-01-01~9999-12-31
datetime 8 1000-01-01 00:00:00~9999-12-31 23:59:59
timestamp 4 19700101080001~2038 年的某个时刻
time 3 -835:59:59~835:59:59
year 1 1901~2155
每个日期和时间数据类型都有一个取值范围,如果插入的值超过了该类型的取值范围,则会插入默认值。
4.字符串类型
char(m)
varchar(m)
tinytext
text
mediumtext
longtext
binary(m)
varbinary(m)
tinyblob
blob
mediumblob
longblob