MySQL简介

1、什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

主流的数据库有:sqlserver,mysql,Oracle、SQLite、Access、MSSQLServer等,本文主要讲述的是mysql

2、数据库管理是干什么用的?

a.将数据保存到文件或内存

b.接收特定的命令,然后对文件进行相应的操作

PS:如果有了以上管理系统,无须自己再去创建文件和文件夹,而是直接传递命令给上述软件,让其来进行文件操作,他们统称为数据库管理系统(DBMS,DatabaseManagementSystem)

MySQL安装

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。

使用mysql必须具备一下条件

a.安装MySQL服务端

b.安装MySQL客户端

c.【客户端】连接【服务端】

d.【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)

MySQL操作

一、连接数据库

mysql-uuser-p例:mysql-uroot-p

常见错误如下:

ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.sock'(2),itmeansthattheMySQLserverdaemon(Unix)orservice(Windows)isnotrunning.

退出连接:

QUIT或者Ctrl+D

二、查看数据库,创建数据库,使用数据库查看数据库:

showdatabases;

默认数据库:

mysql-用户权限相关数据test-用于用户测试数据information_schema-MySQL本身架构相关数据

创建数据库:

createdatabasedb1DEFAULTCHARSETutf8COLLATEutf8_general_ci;#utf8编码createdatabasedb1DEFAULTCHARACTERSETgbkCOLLATEgbk_chinese_ci;#gbk编码

使用数据库:

usedb1;

显示当前使用的数据库中所有表:

SHOWTABLES;

三、用户管理

创建用户

createuser'用户名'@'IP地址'identifiedby'密码';

删除用户

dropuser'用户名'@'IP地址';

修改用户

renameuser'用户名'@'IP地址';to'新用户名'@'IP地址';

修改密码

setpasswordfor'用户名'@'IP地址'=Password('新密码');

注:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)

四、权限管理

mysql对于权限这块有以下限制:

allprivileges:除grant外的所有权限select:仅查权限select,insert:查和插入权限...usage:无访问权限alter:使用altertablealterroutine:使用alterprocedure和dropprocedurecreate:使用createtablecreateroutine:使用createprocedurecreatetemporarytables:使用createtemporarytablescreateuser:使用createuser、dropuser、renameuser和revokeallprivilegescreateview:使用createviewdelete:使用deletedrop:使用droptableexecute:使用call和存储过程file:使用selectintooutfile和loaddatainfilegrantoption:使用grant和revokeindex:使用indexinsert:使用insertlocktables:使用locktableprocess:使用showfullprocesslistselect:使用selectshowdatabases:使用showdatabasesshowview:使用showviewupdate:使用updatereload:使用flushshutdown:使用mysqladminshutdown(关闭MySQL)super:使用changemaster、kill、logs、purge、master和setglobal。还允许mysqladmin调试登陆replicationclient:服务器位置的访问replicationslave:由复制从属使用

对于数据库及内部其他权限如下:

数据库名.*数据库中的所有数据库名.表指定数据库中的某张表数据库名.存储过程指定数据库中的存储过程*.*所有数据库

对于用户和IP的权限如下:

用户名@IP地址用户只能在改IP下才能访问用户名@192.168.1.%用户只能在改IP段下才能访问(通配符%表示任意)用户名@%用户可以再任意IP下访问(默认IP地址为%)

1、查看权限:

showgrantsfor'用户'@'IP地址'

2、授权

grant权限on数据库.表to'用户'@'IP地址'

3、取消授权

revoke权限on数据库.表from'用户名'@'IP地址'

授权实例如下:

grantallprivilegesondb1.tb1TO'用户名'@'IP'grantselectondb1.*TO'用户名'@'IP'grantselect,inserton*.*TO'用户名'@'IP'revokeselectondb1.tb1from'用户名'@'IP'

MySQL表操作

一、查看表

showtables;#查看数据库全部表select*from表名;#查看表所有内容

二、创建表

createtable表名(列名类型是否可以为空,列名类型是否可以为空)ENGINE=InnoDBDEFAULTCHARSET=utf8

来一个实例好详解

CREATETABLE`tab1`(`nid`int(11)NOTNULLauto_increment,`name`varchar(255)DEFAULTzhangyanlin,`email`varchar(255),PRIMARYKEY(`nid`))ENGINE=InnoDBDEFAULTCHARSET=utf8;

注:

默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值

自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)注意:1、对于自增列,必须是索引(含主键)2、对于自增可以设置步长和起始值

主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。

三、删除表

droptable表名

四、清空表内容

deletefrom表名truncatetable表名

五、修改表

添加列:altertable表名add列名类型删除列:altertable表名dropcolumn列名修改列:altertable表名modifycolumn列名类型;--类型altertable表名change原列名新列名类型;--列名,类型添加主键:altertable表名addprimarykey(列名);删除主键:altertable表名dropprimarykey;altertable表名modify列名int,dropprimarykey;添加外键:altertable从表addconstraint外键名称(形如:FK_从表_主表)foreignkey从表(外键字段)references主表(主键字段);删除外键:altertable表名dropforeignkey外键名称修改默认值:ALTERTABLEtestalter_tblALTERiSETDEFAULT1000;删除默认值:ALTERTABLEtestalter_tblALTERiDROPDEFAULT;

对于上述这些操作是不是看起来很麻烦,很浪费时间,别慌!有专门的软件能提供这些功能,操作起来非常简单,这个软件名字叫NavicatPremium,大家自行在网上下载,练练手,但是下面的即将讲到表内容操作还是建议自己写命令来进行

六、基本数据类型

MySQL的数据类型大致分为:数值、时间和字符串

bit[(M)]二进制位(101001),m表示二进制位的长度(1-64),默认m=1tinyint[(m)][unsigned][zerofill]小整数,数据类型用于保存一些范围的整数数值范围:有符号:-128~127.无符号:0~255特别的:MySQL中无布尔值,使用tinyint(1)构造。int[(m)][unsigned][zerofill]整数,数据类型用于保存一些范围的整数数值范围:有符号:-2147483648~2147483647无符号:0~4294967295特别的:整数类型中的m仅用于显示,对存储范围无限制。例如:int(5),当插入数据2时,select时数据显示为:00002bigint[(m)][unsigned][zerofill]大整数,数据类型用于保存一些范围的整数数值范围:有符号:-9223372036854775808~9223372036854775807无符号:0~18446744073709551615decimal[(m[,d])][unsigned][zerofill]准确的小数值,m是数字总个数(负号不算),d是小数点后个数。m最大值为65,d最大值为30。特别的:对于精确数值计算时需要用此类型decaimal能够存储精确值的原因在于其内部按照字符串存储。FLOAT[(M,D)][UNSIGNED][ZEROFILL]单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。无符号:-3.402823466E+38to-1.175494351E-38,01.175494351E-38to3.402823466E+38有符号:01.175494351E-38to3.402823466E+38****数值越大,越不准确****DOUBLE[(M,D)][UNSIGNED][ZEROFILL]双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。无符号:-1.7976931348623157E+308to-2.2250738585072014E-30802.2250738585072014E-308to1.7976931348623157E+308有符号:02.2250738585072014E-308to1.7976931348623157E+308****数值越大,越不准确****char(m)char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。PS:即使数据小于m长度,也会占用m长度varchar(m)varchars数据类型用于变长的字符串,可以包含最多达255个字符。其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。注:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡texttext数据类型用于保存变长的大字符串,可以组多到65535(2**16−1)个字符。mediumtextATEXTcolumnwithamaximumlengthof16,777,215(2**24−1)characters.longtextATEXTcolumnwithamaximumlengthof4,294,967,295or4GB(2**32−1)characters.enum枚举类型,AnENUMcolumncanhaveamaximumof65,535distinctelements.(Thepracticallimitislessthan3000.)示例:CREATETABLEshirts(nameVARCHAR(40),sizeENUM('x-small','small','medium','large','x-large'));INSERTINTOshirts(name,size)VALUES('dressshirt','large'),('t-shirt','medium'),('poloshirt','small');set集合类型ASETcolumncanhaveamaximumof64distinctmembers.示例:CREATETABLEmyset(colSET('a','b','c','d'));INSERTINTOmyset(col)VALUES('a,d'),('d,a'),('a,d,a'),('a,d,d'),('d,a,d');DATEYYYY-MM-DD(1000-01-01/9999-12-31)TIMEHH:MM:SS('-838:59:59'/'838:59:59')YEARYYYY(1901/2155)DATETIMEYYYY-MM-DDHH:MM:SS(1000-01-0100:00:00/9999-12-3123:59:59Y)TIMESTAMPYYYYMMDDHHMMSS(1970-01-0100:00:00/2037年某时)

MySQL表内容操作

表内容操作无非就是增删改查,当然用的最多的还是查,而且查这一块东西最多,用起来最难,当然对于大神来说那就是soeasy了,对于我这种小白还是非常难以灵活运用的,下面咱来一一操作一下

一、增

insertinto表(列名,列名...)values(值,值,...)insertinto表(列名,列名...)values(值,值,...),(值,值,值...)insertinto表(列名,列名...)select(列名,列名...)from表例:insertintotab1(name,email)values('zhangyanlin','zhangyanlin8851@163.com')

二、删

deletefrom表#删除表里全部数据deletefrom表whereid=1andname='zhangyanlin'#删除ID=1和name='zhangyanlin'那一行数据

三、改

update表setname='zhangyanlin'whereid>1

四、查

select*from表select*from表whereid>1selectnid,name,genderasggfrom表whereid>1

查这块的条件太多太多我给列举出来至于组合还得看大家的理解程度哈

a、条件判断where

select*from表whereid>1andname!='aylin'andnum=12;select*from表whereidbetween5and16;select*from表whereidin(11,22,33)select*from表whereidnotin(11,22,33)select*from表whereidin(selectnidfrom表)

b、通配符like

select*from表wherenamelike'zhang%'#zhang开头的所有(多个字符串)select*from表wherenamelike'zhang_'#zhang开头的所有(一个字符)

c、限制limit

select*from表limit5;-前5行select*from表limit4,5;-从第4行开始的5行select*from表limit5offset4-从第4行开始的5行

d、排序asc,desc

select*from表orderby列asc-根据“列”从小到大排列select*from表orderby列desc-根据“列”从大到小排列select*from表orderby列1desc,列2asc-根据“列1”从大到小排列,如果相同则按列2从小到大排序

e、分组groupby

selectnumfrom表groupbynumselectnum,nidfrom表groupbynum,nidselectnum,nidfrom表wherenid>10groupbynum,nidorderniddescselectnum,nid,count(*),sum(score),max(score),min(score)from表groupbynum,nidselectnumfrom表groupbynumhavingmax(id)>10特别的:groupby必须在where之后,orderby之前

好了,以上我们就完成了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安全脚本。

PerconaXtrabackup–针对MySQL的一个开源热备份实用程序——在服务器的备份期间不会锁定你的数据库。

性能测试

给你的服务器进行压测的工具

iibench-mysql-基于Java的MySQL/Percona/MariaDB索引进行插入性能测试工具。

Sysbench–一个模块化,跨平台以及多线程的性能测试工具。

聊天应用

集成进聊天室的脚本

HubotMySQLChatOps

配置

MySQL配置实例及指导

mysql-compatibility-config–使MySQL配置起来更像新的(或先前)的MySQL版本。

多种编程语言的MySQL连接器

Connector/Python–一个对于Python平台和开发的标准化数据库驱动程序。

go-sql-driver–一个Go语言的轻量级、极速的MySQL驱动程序。

libAttachSQL–libAttachSQL是MySQL服务器的一个轻量级,非阻塞的C语言API。

MariaDBJavaClient–针对Java应用且经过LGPL许可的MariaDB客户端库。

MySQL-Python–一个Python语言的MySQL数据库连接器。

PHPmysqlnd–针对MySQL的MySQL本地驱动,弃用过时的libmysql基础驱动。

开发

支持MySQL相关开发的工具

Flywaydb–数据库迁移;任意情况下轻松可靠地演变你的数据库版本。

Liquibase–对你的数据库进行源代码控制。

Propagator–集中模式和数据部署在一个多维拓扑上。

GUI

前端和应用的GUI

Adminer–一个PHP编写的数据库管理工具。

HeidiSQL–Windows下的MySQL图形化管理工具。

MySQLWorkbench–提供给数据库管理员和开发人员进行数据库设计和建模的集成工具环境;SQL开发;数据库管理。

phpMyAdmin–一个PHP写成的开源软件,意图对web上的MySQL进行管理。

SequelPro–一个mac下运行MySQL的数据库管理应用程序。

mycli–一个带自动补全和语法高亮的终端版MySQL客户端

HA

高可用解决方案

GaleraCluster–一个基于同步复制的多主机集群方案。

MHA–针对MySQL的优秀高可用管理器及工具

MySQLFabric–一个用于管理MySQL服务器场(ServerFarms)的可扩展框架。

PerconaReplicationManager–针对MySQL的异步复制管理代理。支持以文件和GTID为基础的复制,使用booth实现的地理分布式集群。

代理

MySQL代理

MaxScale–开源,以数据库为中心的代理。

Mixer–Go实现的一个MySQL代理,目的为MySQL分片提供一个简单的解决方案。

MySQLProxy–一个处于你的客户端和MySQL服务端之间的简单程序,它可以检测、分析或者改变它们的通信。

ProxySQL–高性能的MySQL代理。

复制

复制相关的软件

orchestrator–对MySQL复制拓扑管理并可视化的工具。

TungstenReplicator–MySQL的一个高性能、开源、数据复制引擎。

模式

附加模式

common_schema–MySQLDBA的框架,提供一个具有函数库、视图库和查询脚本的解释器。

sys–一个视图、函数和过程的集合,以帮助MySQL管理人员更加深入理解MySQL数据库的使用。

服务器

MySQLserverflavors

MariaDB–MySQLserver的一个由社区开发的分支。

MySQLServer&MySQLCluster–Oracle官方的MySQLserver和MySQL集群分布。

PerconaServer–一个加强版的MySQL替代品

WebScaleSQL–WebScaleSQL,5.6版本,基于MySQL5.6社区版本。

分片

分片解决方案/框架

vitess–对于大规模的web服务,vitess提供服务和工具以便于MySQL数据库的缩放。

jetpants–一个自动化套件,用于管理大规模分片集群,由Tumblr开发。

工具包

工具包,通用脚本

go-mysql–一个纯go的库,用于处理MySQL的网络协议和复制。

MySQLUtilities–一个命令行实用程序的集合,Python语言编写,用于维护和管理单一或多层的MySQL。

PerconaToolkit–一个先进的命令行工具集,用于执行对于MySQL服务器和系统过于困难或复杂的任务。

openarkkit–一组实用的工具,解决日常的维护工作,包括一些复杂的或需徒手操作的,用Python语言编写。

UnDROP–一个用来恢复删除或损坏的InnoDB表中数据的工具。

mysql资源教程_MySQL 超级入门教程以及MySQL 资源大全的分享相关推荐

  1. mysql资源教程_MySQL 超级入门教程(内含资源福利)

    原标题:MySQL 超级入门教程(内含资源福利) MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场 ...

  2. mysql less6教程_MySQL 超级入门教程

    原标题:MySQL 超级入门教程 MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二 ...

  3. mysql 经典入门教程_MySQL 经典入门教程

    MySQL 经典入门教程 1 定义 数据库中的表:一行叫一条记录.每一列叫一个属性,或一个字段. 主键:表中的某个特殊字段,具有唯一的确定的值,可以根据该字段唯一的确定一条记录 外键:表中的某个字段的 ...

  4. mysql设计学习_mySQL学习入门教程——3.SQL的设计和编写

    一.SQL语句分类 数据定义语言(DDL): 用于定义和管理数据对象,包括数据库.数据表.视图.索引等.例如:CREATE.DROP.ALTER等语句. 数据操作语言(DML):[和表中的数据记录有关 ...

  5. Docker教程(一) Docker入门教程

    Docker教程(一) Docker入门教程 本文链接:https://blog.csdn.net/yuan_xw/article/details/51935278 Docker教程(一) Docke ...

  6. java adt入门教程_Android基础入门教程目录

    第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...

  7. WMI 使用教程_.NET 入门教程

    WMI 使用教程_.NET 入门教程 先介绍一下WMI 相关知识:  什么是WMI 呢? Windows 管理规范 (Windows Management Instrumentation ),它的主要 ...

  8. AFNnetworking快速教程,官方入门教程译

    AFNnetworking快速教程,官方入门教程译 分类: IOS2013-12-15 20:29 12489人阅读 评论(5) 收藏 举报 afnetworkingjsonios入门教程快速教程 A ...

  9. Redis教程(一) Redis入门教程

    Redis教程(一) Redis入门教程 1 Redis入门教程 Redis是一个 Key-Value存储系统.和 Memcached类似,它支持存储的 value类型相对更多,包括 string(字 ...

最新文章

  1. AngularJS的稍复杂form验证
  2. python拟牛顿法迭代点绘制_拟牛顿法python
  3. Hadoop-2.7.4 八节点分布式集群安装
  4. Python中可变类型和不可变类型的数据?
  5. SAP UI5 log level
  6. Linux学习总结(75)—— Linux history 命令实用技巧
  7. php 输出可以设置格式文件,PHP实现的文件直接输出下载
  8. 清华大学发布10大机器翻译学习必读论文清单 | 资源
  9. 联合哈佛大学,Google 要用人工智能来预测地震余震
  10. 学习RAID磁盘阵列
  11. JavaWeb下载文件时文件名乱码
  12. 解决“用友U8输入中文汉字显示问号“的问题
  13. 一个古老故事--线程和线程池的故事
  14. ETL对文件数据进行处理,进入到数据仓库
  15. 阿里云域名注册流程(全流程详细教程)
  16. iapp进度条倒计时_App启动页倒计时功能
  17. MATLAB函数汇总
  18. 描边时消除锯齿SetSmoothingMode
  19. SAP HANA是什么?
  20. 什么是蜘蛛统计 有什么作用?

热门文章

  1. echarts柱形图倒立,两边都是正数
  2. 【已阅】Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解
  3. 算法-概率论(基本概念、古典概型、几何概型)
  4. 数据库系统原理课后练习题(期末复习题目附答案)
  5. Necurs僵尸网络攻击美国金融机构 利用Trickbot银行木马窃取账户信息和欺诈
  6. 台湾光荣将推出PSP[三国志六]中文版
  7. 【Oracle VM VirtualBox安装SteamOS 教程】
  8. JS中鼠标拖拽div(2)(setCapture()方法和releaseCapture()方法)
  9. RESTful接口规范(学习笔记)
  10. 《JavaScript》重学JS-细聊一下prototype、__proto__与constructor(超详解版)