MySQL概要
1、什么是资料库 ?
资料库(Database)是依照统计计算机程序来组织机构、储存和管理工作统计数据的库房,它造成于旧石器时代五十多年前,随著科技和市场的发展,不光是十九世纪八十年代之后,统计数据处理工作无须实际上是储存和管理工作统计数据,而变为使用者所须要的各式各样统计数据处理工作的形式。资料库有很各式各样类型,从最简单的储存有各式各样统计数据的表单到能展开海量统计数据储存的小型资料库系统都在方各方面面获得了广为的应用领域。
非主流的资料库有:sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server等,责任编辑主要讲诉的是mysql
2、资料库管理工作是干嘛用的?
a. 将统计数据留存到文档或缓存b. 转交某一的指示,然后对文档展开适当的操作形式PS:假如有了以内信息系统,无需自己再去建立文档和文档夹,而要间接传达 指示 给前述应用软件,让其来展开文档操作形式,他们泛称为资料库信息系统(DBMS,Database Management System)
MySQL加装
MySQL是一类对外开放源码的亲密关系型资料库信息系统(RDBMS),MySQL资料库系统采用最常见的资料库管理工作词汇–形式化面向对象(SQL)展开资料库管理工作。在 WEB 应用领域各方面MySQL是最合适的 RDBMS (Relational Database Management System,亲密关系资料库信息系统) 应用领域应用软件众所周知。
采用mysql要具有呵呵前提
a. 加装MySQL服务项目器端b. 加装MySQL应用领域程序c. 【应用领域程序】相连【服务项目器端】d. 【应用领域程序】推送指示给【服务项目器端MySQL】服务项目的接受指示并继续执行适当操作形式(校订改查等)1、浏览门牌号:http://dev.mysql.com/downloads/mysql/
2、加装
windows加装请参照:http://www.cnblogs.com/lonelywolfmoutain/p/4547115.htmllinux下安装:http://www.cnblogs.com/chenjunbiao/archive/2011/01/24/1940256.html
注:以内两个链接有完整的加装形式,撸主也是参照他的加装的,加装完之后mysql.server start启动mysql服务项目
MySQL操作形式
一、相连资料库
mysql -u user -p
例:mysql -u root -p
常见错误如下:
ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running.退出相连:
QUIT 或者 Ctrl+D
二、查看资料库,建立资料库,采用资料库查看资料库:
show databases;
默认资料库:
mysql – 使用者权限相关统计数据
test – 用于使用者测试统计数据
information_schema – MySQL本身架构相关统计数据
建立资料库:
create database db1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; # utf8编码
create database db1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; # gbk编码
采用资料库:
use db1;
显示当前采用的资料库中所有表:
SHOW TABLES;
三、使用者管理工作
建立使用者
create user 使用者名@IP门牌号 identified by 密码;
删除使用者
drop user 使用者名@IP门牌号;
修改使用者
rename user 使用者名@IP门牌号; to 新使用者名@IP门牌号;
修改密码
set password for 使用者名@IP门牌号 = Password(新密码);
注:使用者权限相关统计数据留存在mysql资料库的user表中,所以也可以间接对其展开操作形式(不建议)
四、权限管理工作
mysql对于权限这块有以下限制:
all privileges:除grant外的所有权限
select:仅查权限
select,insert:查和插入权限
…
usage:无访问权限
alter:采用alter table
alter routine:采用alter procedure和drop procedure
create:采用create table
create routine:采用create procedure
create temporary tables:采用create temporary tables
create user:采用create user、drop user、rename user和revoke all privileges
create view:采用create view
delete:采用delete
drop:采用drop table
execute:采用call和储存过程
file:采用select into outfile 和 load data infile
grant option:采用grant 和 revoke
index:采用index
insert:采用insert
lock tables:采用lock table
process:采用show full processlist
select:采用select
show databases:采用show databases
show view:采用show view
update:采用update
reload:采用flush
shutdown:采用mysqladmin shutdown(关闭MySQL)
super:采用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆
replication client:服务项目器位置的访问
replication slave:由复制从属采用
对于资料库及内部其他权限如下:
资料库名.* 资料库中的所有
资料库名.表 指定资料库中的某张表
资料库名.储存过程 指定资料库中的储存过程
*.* 所有资料库
对于使用者和IP的权限如下:
使用者名@IP门牌号 使用者只能在改IP下才能访问
使用者名@192.168.1.% 使用者只能在改IP段下才能访问(通配符%表示任意)
使用者名@% 使用者可以再任意IP下访问(默认IP门牌号为%)
1、查看权限:
show grants for 使用者@IP门牌号
2、授权
grant 权限 on 资料库.表 to 使用者@IP门牌号
3、取消授权
revoke 权限 on 资料库.表 from 使用者名@IP门牌号
授权实例如下:
grant all privileges on db1.tb1 TO 使用者名@IP
grant select on db1.* TO 使用者名@IP
grant select,insert on *.* TO 使用者名@IP
revoke select on db1.tb1 from 使用者名@IP
MySQL表操作形式
一、查看表
show tables; # 查看资料库全部表
select * from 表名; # 查看表所有内容
二、建立表
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8
来一个实例好详解
CREATE TABLE `tab1` (
`nid` int(11) NOT NULL auto_increment,
`name` varchar(255) DEFAULT zhangyanlin,
`email` varchar(255),
PRIMARY KEY (`nid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注:
默认值,建立列时可以指定默认值,当插入统计数据时假如未主动设置,则自动添加默认值自增,假如为某列设置自增列,插入统计数据时无需设置此列,默认将自增(表中只能有一个自增列)注意:1、对于自增列,要是索引(含主键)2、对于自增可以设置步长和起始值主键,一类特殊的唯一索引,不允许有空值,假如主键采用单个列,则它的值要唯一,假如是多列,则其组合要唯一。三、删除表
drop table 表名
四、清空表内容
delete from 表名
truncate table 表名
五、修改表
添加列:
alter table 表名 add 列名 类型
删除列:
alter table 表名 drop column 列名
修改列:
alter table 表名 modify column 列名 类型; — 类型
alter table 表名 change 原列名 新列名 类型; — 列名,类型
添加主键:
alter table 表名 add primary key(列名);
删除主键:
alter table 表名 drop primary key;
alter table 表名 modify 列名 int, drop primary key;
添加外键:
alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键:
alter table 表名 drop foreign key 外键名称
修改默认值:
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除默认值:
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
对于前述这些操作形式是不是看起来很麻烦,很浪费时间,别慌!有专门的应用软件能提供这些功能,操作形式起来非常简单,这个应用软件名字叫Navicat Premium ,大家自行在网上浏览,练练手,但是下面的即将讲到表内容操作形式还是建议自己写指示来展开
六、基本统计数据类型
MySQL的统计数据类型大致分为:数值、时间和字符串
bit[(M)]
二进制位(101001),m表示二进制位的长度(1-64),默认m=1
tinyint[(m)] [unsigned] [zerofill]
小整数,统计数据类型用于留存一些范围的整数数值范围:
有符号:
-128 ~ 127.
无符号:
0 ~ 255
不光的: MySQL中无布尔值,采用tinyint(1)构造。
int[(m)][unsigned][zerofill]
整数,统计数据类型用于留存一些范围的整数数值范围:
有符号:
-2147483648 ~ 2147483647
无符号:
0 ~ 4294967295
不光的:整数类型中的m仅用于显示,对储存范围无限制。例如: int(5),当插入统计数据2时,select 时统计数据显示为:00002
bigint[(m)][unsigned][zerofill]
大整数,统计数据类型用于留存一些范围的整数数值范围:
有符号:
-9223372036854775808 ~ 9223372036854775807
无符号:
0 ~ 18446744073709551615
decimal[(m[,d])] [unsigned] [zerofill]
准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。
不光的:对于精确数值计算时须要用此类型
decaimal能储存精确值的原因在于其内部依照字符串储存。
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
无符号:
-3.402823466E+38 to -1.175494351E-38,
0
1.175494351E-38 to 3.402823466E+38
有符号:
0
1.175494351E-38 to 3.402823466E+38
**** 数值越大,越不准确 ****
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
无符号:
-1.7976931348623157E+308 to -2.2250738585072014E-308
0
2.2250738585072014E-308 to 1.7976931348623157E+308
有符号:
0
2.2250738585072014E-308 to 1.7976931348623157E+308
**** 数值越大,越不准确 ****
char (m)
char统计数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。
PS: 即使统计数据小于m长度,也会占用m长度
varchar(m)
varchars统计数据类型用于变长的字符串,可以包含最多达255个字符。其中m代表该统计数据类型所允许留存的字符串的最大长度,只要长度小于该最大值的字符串都可以被留存在该统计数据类型中。
注:虽然varchar采用起来较为灵活,但是从整个系统的性能角度来说,char统计数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,使用者在设计资料库时应当综合考虑各各方面的因素,以求达到最佳的平衡
text
text统计数据类型用于留存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。
mediumtext
A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.
longtext
A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1) characters.
enum
枚举类型,
An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)
示例:
CREATE TABLE shirts (
name VARCHAR(40),
size ENUM(x-small, small, medium, large, x-large)
);
INSERT INTO shirts (name, size) VALUES (dress shirt,large), (t-shirt,medium),(polo shirt,small);
set
集合类型
A SET column can have a maximum of 64 distinct members.
示例:
CREATE TABLE myset (col SET(a, b, c, d));
INSERT INTO myset (col) VALUES (a,d), (d,a), (a,d,a), (a,d,d), (d,a,d);
DATE
YYYY-MM-DD(1000-01-01/9999-12-31)
TIME
HH:MM:SS(-838:59:59/838:59:59)
YEAR
YYYY(1901/2155)
DATETIME
YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
TIMESTAMP
YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
MySQL表内容操作形式
表内容操作形式无非就是校订改查,当然用的最多的还是查,而且查这一块东西最多,用起来最难,当然对于大神来说那就是so easy了,对于我这种小白还是非常难以灵活运用的,下面咱来一一操作形式呵呵
一、增
insert into 表 (列名,列名…) values (值,值,…)
insert into 表 (列名,列名…) values (值,值,…),(值,值,值…)
insert into 表 (列名,列名…) select (列名,列名…) from 表
例:
insert into tab1(name,email) values(zhangyanlin,
[email protected])
二、删
delete from 表 # 删除表里全部统计数据
delete from 表 where id=1 and name=zhangyanlin # 删除ID =1 和name=zhangyanlin 那一行数据
三、改
update 表 set name = zhangyanlin where id>1
四、查
select * from 表
select * from 表 where id > 1
select nid,name,gender as gg from 表 where id > 1
查这块的前提太多太多我给列举出来至于组合还得看大家的理解程度哈
a、前提判断where
select * from 表 where id > 1 and name != aylin and num = 12;
select * from 表 where id between 5 and 16;
select * from 表 where id in (11,22,33)
select * from 表 where id not in (11,22,33)
select * from 表 where id in (select nid from 表)
b、通配符like
select * from 表 where name like zhang% # zhang开头的所有(多个字符串)
select * from 表 where name like zhang_ # zhang开头的所有(一个字符)
c、限制limit
select * from 表 limit 5; – 前5行
select * from 表 limit 4,5; – 从第4行开始的5行
select * from 表 limit 5 offset 4 – 从第4行开始的5行
d、排序asc,desc
select * from 表 order by 列 asc – 根据 “列” 从小到大排列
select * from 表 order by 列 desc – 根据 “列” 从大到小排列
select * from 表 order by 列1 desc,列2 asc – 根据 “列1” 从大到小排列,假如相同则按列2从小到大排序
e、分组group by
select num from 表 group by num
select num,nid from 表 group by num,nid
select num,nid from 表 where nid > 10 group by num,nid order nid desc
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
select num from 表 group by num having max(id) > 10
不光的:group by 要在where之后,order by之前
好了,以内我们就完成了MySQL的入门。经过练习之后,一些简单的校订改查任务已经不成问题,这时候就应该要考虑进阶了。
限于责任编辑的主题和篇幅,在这里我们就不多说了,假如有须要的同学可以前往 MySQL 的官方文档:https://dev.mysql.com/doc/ 展开查看,英文不太好的同学也可以去菜鸟教程:http://www.runoob.com/mysql/mysql-tutorial.html。
MySQL 天然资源大全
除了一份入门的教程,小编还给大家准备了一份礼物,那就是 MySQL 天然资源大全。
工欲善其事必先利其器,有了这些工具,我们和大神的差距就会缩小许多,而且很多工具也会为我们的日常提升提供很大帮助——有了工具包,妈妈再也不用担心你的学习!
分析工具
性能,结构和统计数据分析工具
Anemometer – 一个 SQL 慢查询监控器。innodb-ruby – 一个对 InooDB 格式文档的解析器,用于 Ruby 词汇。innotop – 一个具有多种特性和可扩展性的 MySQL 版 ‘top’ 工具。pstop – 一个针对 MySQL 的类 top 程序,用于收集,汇总以及展示来自 performance_schema 的信息。mysql-statsd – 一个收集 MySQL 信息的 Python 守护进程,并通过 StatsD 推送到 Graphite。备份
备份/储存/恢复 工具
MyDumper – 逻辑的,并行的 MySQL 备份/转储工具。MySQLDumper – 基于 web 的开源备份工具-对于共享虚拟主机非常有用。mysqldump-secure – 将加密,压缩,日志,黑名单和 Nagios 监控一体化的 mysqldump 安全脚本。Percona Xtrabackup – 针对 MySQL 的一个开源热备份实用程序——在服务项目器的备份期间不会锁定你的资料库。性能测试
给你的服务项目器展开压测的工具
iibench-mysql -基于 Java 的 MySQL/Percona/MariaDB 索引展开插入性能测试工具。Sysbench – 一个模块化,跨平台以及多线程的性能测试工具。聊天应用领域
集成进聊天室的脚本
Hubot MySQL ChatOps配置
MySQL 配置实例及指导
mysql-compatibility-config – 使 MySQL 配置起来更像新的(或先前)的 MySQL 版本。相连器
多种编程词汇的 MySQL 相连器
Connector/Python – 一个对于 Python 平台和开发的标准化资料库驱动程序。go-sql-driver – 一个 Go 语言的轻量级、极速的 MySQL 驱动程序。libAttachSQL – libAttachSQL 是 MySQL 服务项目器的一个轻量级,非阻塞的 C 词汇 API。MariaDB Java Client – 针对 Java 应用领域且经过 LGPL 许可的 MariaDB 应用领域程序库。MySQL-Python – 一个 Python 词汇的 MySQL 资料库相连器。PHP mysqlnd – 针对 MySQL 的 MySQL 本地驱动,弃用过时的 libmysql 基础驱动。开发
支持 MySQL 相关开发的工具
Flywaydb – 资料库迁移;任意情况下轻松可靠地演变你的资料库版本。Liquibase – 对你的资料库展开源码控制。Propagator – 集中模式和统计数据部署在一个多维拓扑上。GUI
前端和应用领域的 GUI
Adminer – 一个 PHP 编写的资料库管理工作工具。HeidiSQL – Windows 下的 MySQL 图形化管理工作工具。MySQL Workbench – 提供给资料库管理工作员和开发人员展开资料库设计和建模的集成工具环境;SQL 开发;资料库管理工作。phpMyAdmin – 一个 PHP 写成的开源应用软件,意图对 web 上的 MySQL 展开管理工作。SequelPro – 一个 mac 下运行 MySQL 的资料库管理工作应用领域程序。mycli – 一个带自动补全和语法高亮的终端版 MySQL 应用领域程序HA
高可用解决方案
Galera Cluster – 一个基于同步复制的多主机集群方案。MHA – 针对 MySQL 的优秀高可用管理工作器及工具MySQL Fabric – 一个用于管理工作 MySQL 服务项目器场(Server Farms)的可扩展框架。Percona Replication Manager – 针对 MySQL 的异步复制管理工作代理。支持以文档和 GTID 为基础的复制,采用 booth 实现的地理分布式集群。代理
MySQL 代理
MaxScale – 开源,以资料库为中心的代理。Mixer – Go 实现的一个 MySQL 代理,目的为 MySQL 分片提供一个简单的解决方案。MySQL Proxy – 一个处于你的应用领域程序和 MySQL 服务项目器端之间的简单程序,它可以检测、分析或者改变它们的通信。ProxySQL – 高性能的 MySQL 代理。复制
复制相关的应用软件
orchestrator – 对 MySQL 复制拓扑管理工作并可视化的工具。Tungsten Replicator – MySQL 的一个高性能、开源、统计数据复制引擎。模式
附加模式
common_schema – MySQL DBA 的框架, 提供一个具有函数库、视图库和查询脚本的解释器。sys – 一个视图、函数和过程的集合,以帮助 MySQL 管理工作人员更加深入理解 MySQL 资料库的采用。服务器
MySQL server flavors
MariaDB – MySQL server 的一个由社区开发的分支。MySQL Server & MySQL Cluster – Oracle 官方的 MySQL server 和 MySQL 集群分布。Percona Server – 一个加强版的 MySQL 替代品WebScaleSQL – WebScaleSQL,5.6 版本,基于 MySQL 5.6 社区版本。分片
分片解决方案/框架
vitess – 对于大规模的 web 服务项目,vitess 提供服务项目和工具以便于 MySQL 资料库的缩放。jetpants – 一个自动化套件,用于管理工作大规模分片集群,由 Tumblr 开发。工具包
工具包,通用脚本
go-mysql – 一个纯 go 的库,用于处理 MySQL 的网络协议和复制。MySQL Utilities – 一个指示行实用程序的集合,Python 词汇编写,用于维护和管理工作单一或多层的 MySQL。Percona Toolkit – 一个先进的指示行工具集,用于继续执行对于 MySQL 服务项目器和系统过于困难或复杂的任务。openark kit – 一组实用的工具,解决日常的维护工作,包括一些复杂的或需徒手操作形式的,用 Python 词汇编写。UnDROP – 一个用来恢复删除或损坏的 InnoDB 表中统计数据的工具。社会福利包
为了方便大家,
http://weixin.qq.com/r/AykDG7rEk_fsrf5493w
你想更深入了解学习Linux知识体系,你可以看呵呵我们花费了一个多月整理了上百小时的几百个知识点体系内容:
【超全整理】《Linux云计算从入门到精通》linux学习入门教程系列实战笔记