MySQL必知必会(1):了解Mysql

本文主要介绍Mysql最基础知识:Mysql基本概念。

1.1 数据库基础

1.1.1 简介

数据库,从字面意思来理解就是一个用来装数据的容器。每天我们都在和数据库打交道,比如你每天打开APP浏览新闻,浏览微博,这些都是间接的使用数据库。

用专业术语来描述一下数据库概念:一个以某种有组织的方式存储的数据集合。你可以把他理解为一个电脑上的文件夹,里面有序的存着你的东西。

再说一个容易混淆的概念。Mysqloracle这些并不叫数据库,他们应该叫数据库管理系统DBMS(你大学课堂上经常要背的概念)。他们是帮助你去管理数据库,这点不能混淆了。

现在企业中常用的数据库有下面这些

  1. 关系型数据库:MysqlOracle

  2. 非关系型数据库NoSqlMongodb

  3. 内存型数据库,键值对数据库:Redis

其他还有一些,开发常用数据库集合

1.1.2 表

数据库相当于一个文件夹,表就是文件夹内的一个文件,这个文件有点儿像excel表格文件。当你需要管理一些数据的时候,你要先创建一个excel文件,然后在里面录入一些数据。数据库的表也是这个意思。

一般来说,在数据库中,一个表内存储的内容大体相似。比如,所有的用户信息存储在一张表。当你再需要存储用户的购买商品信息时候,就需要重新创建一张表,而不是将他们全部堆在一个表中。

每个表都会有自己的名字,和电脑上的文件一样。同一个文件夹内不能有相同的两个文件,同一个数据库内也不能有两个同名的数据表。

在实际开发中你可能会看到如下的表名。

他们具有相同的前缀wp_,这是为了同一个库中存放不同用途的表而设定的。比如我做个博客,表明都用wp_开头;我在做个商城,我用shop_开头,这样互不冲突。

1.1.3 列

先看一个数据表内的结构

表是一个一个的表格组成的,竖直方向一列就是被称为列,也叫字段。一个列存储的内容大体相同,比如你做excel表格时候,第一列都是姓名,第二列都是年龄一样。

为了便于管理分析数据,在创建字段的时候尽量的需要细化。比如用户有个地址叫:XX省XX市XX区,这个时候不能只创建一个地址字段,而是应该把省市区拆分开创建3个字段。之后数据分析,来自XX省的用户就方便多了。

1.1.4 行

列表示竖着的,行就表示为横着的。比如用户表,第一行表示张三、第二行表示李四,每一行都包含所有的列(也就是字段)。

通常我们把第一行的张三和第二行的李四成为记录。每次多一个用户信息,就会说增加了一条记录。所以,行也被成为记录。

1.1.5 数据类型

数据库为了加快检索速度增加了很多规则,其中给数据定义类型就是其中一条。数据表中的每个字段在创建的时候都需要给定一个类型,比如用来存储数字的就定义为数字类型。储存昵称的就可以使用字符串类型。

这样做既可以优化性能,也可以限定一些输入。比如在用户年龄里面你就不能输入汉字,这样后期处理也特别方便。

1.1.6 主键

数据表中可以存储几条数据,也可以存储几千万条数据。如果我们需要寻找一条数据,少量数据还有办法。但是数据量特别大的时候,我们想要找到一条数据可不是一件容易的事情。所以,在创建字段时候,我们还需要给每一行加一个可以唯一标识该行数据的标识符,也叫主键。比如第一行数据叫1,第二行数据叫2,以此类推。如果我需要找到第123456行记录,只需要找主键为123456就可以了,极大地提高了搜索效率。

关于主键有几个好的建议:

  1. 每个行都必须有一个主键,哪怕不需要。方便以后业务拓展管理。

  2. 任意两行不能有重复的主键

  3. 不能更新主键的值

  4. 一条记录被删除之后,不能重复使用它的主键。

1.2 什么是SQL

简介

下面来简介一下操作数据库的语言SQLSQL被称为结构化查询语言,是一种专门为和数据库通信的语言。

和其他语言,比如PHPJava一样,都是程序语言。

SELECT user_name FROM br_user;

我们写了一条很简单的SQL语句。即使你没有学过也可以大体上理解他的意思,因为他的语句非常的直白。

除了这些,他还有下面的这些优点:

  1. SQL不是特别为哪一个数据库开发的语言,是一种通用语言,几乎所有的数据库都支持。

  2. SQL特别简单,他的语句基本上和英语结构一致。所以,懂点儿英语就可以直接看懂。故也被成为最应该是高级语言的语言。

  3. SQL虽然语法很简单,但是功能却非常强大。可以检索出非常复杂的数据。

1.3 了解Mysql

1.3.1 简介

数据库在使用中的查询、查找和删除等等操作都是由数据库管理软件来执行。也俗称DBMS(数据库管理系统)。Mysql也是一种数据库管理系统。

Mysql优点:

  1. 免费开源,节约成本

  2. 性能优异,Mysql执行速度十分快

  3. 操作简单,学习成本十分低。网络上面有大量的社区和文档。

  4. 应用广泛,有很多大公司都在使用Mysql数据库,比如facebook、百度、淘宝等等。

当然,Mysql也有一些缺点,他没有完全支持其他DBMS提供的功能。但是,活跃的社区都给出了解决办法,Mysql也在逐步成长。

1.3.2 安装

windows安装

Mysql官网下载Mysql安装包,下一步下一步安装即可

Linux下安装

我们只举一个例子,ubuntu。直接使用自带包管理工具。

sudo apt-get install mysql-server

在安装过程中,mysql 等均会提示设置root密码。(别随便添,要记住哟!)

1.3.3 常用管理工具简介

phpmyadmin:著名的web版本Mysql管理工具,最适合本地管理Mysql

navicat:商业版本的Mysql管理工具,功能十分简单,使用十分方便

workbenchMysql官方提供的管理工具,功能强大,但是相比于navicatphpmyadmin有点儿复杂。有免费版本。

上面3个是常用的,查看更多

1.4 Mysql使用

1.4.1 连接数据库

Mysql与其他数据库一样,在使用之前都需要登录DBMS。所以之前你需要提供一些信息来确保登录:

  1. 主机名。远程主机可以是IP或者域名;如果Mysql安装在本地,可以使用localhost

  2. 端口号。一般默认使用3306

  3. 用户名。

  4. 密码。这里的密码就是之前安装时候需要你填写的,可能为空

有了这些信息就可以实施登陆操作。如果你使用上面提到的客户端软件登录就十分简单,直接输入即可登录。

如果你使用Mysql自带的命令行工具登录,则使用如下命令

mysql -u root -p 

-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后回车,会提示输入密码,此时输入密码就可以登录到mysql

注意linux下面的大部分输入密码操作界面没有任何提示信息,也不会出现***。所以不要认为键盘坏了啥也输入不了。

1.4.2 选择数据库

当你连接到Mysql之后,第一步就需要选择数据库,之后才可以进行相应操作。比如建表。

use bidianer;

使用上面的语句选择bidianer数据库

如果在命令行中,你会看到database changed提示。

提示:其实mysql在执行use my_database;时候并不会返回任何结果。此处的database changed提示是Mysql命令行工具操作成功之后给出的提示,而不是数据库给出的提示。

在客户端工具中选择数据库就简单多了,直接双击。

1.4.3 Mysql数据库和表

刚刚安装完,会发现数据库中已经存在了几张表。这些表是Mysql内部表,用来存储自身的数据库、表、用户还有权限等等信息。

这些表一般不能直接访问,但是可以使用Mysql提供的一些命令来获取信息。

比如我们要获取所有数据库信息:

SHOW DATABASES;

我们得到如下结果(我自己的数据库,你们可能不一样)

可以看到我上面命令用大写,但是图中我用小写。所以Mysql对大小写不敏感。

看最后一行,有具体的行数量和执行的时间。

如果你选择了一个数据库,可以使用下面的命令查看数据库所包含的所有表

USE bidianer;
SHOW TABLES;

Mysql命令行输入命令需要在结尾处打上分号。否则Mysql会跳转到下一行等待继续输入。

SHOW命令还可以显示一个表的字段信息

show columns from br_attachment;

上图中我们看到第一行att_id最后有个auto_increment。这个叫自增长ID

上面我们提到主键不能重复。所以最好的办法就是用数字往上面累加,第一行为id为1,第二行为2,依次类推。

auto_increment就是Mysql提供的一个功能,他会自动为每条记录分配一个ID,并且依次累加。

上面是个插曲,现在我们再说下SHOW命令还能干啥

  1. SHOW STATUS,用于显示Mysql服务器运行状态信息

  2. SHOW CREATE DATABASE用来显示创建特定数据库

  3. SHOW CREATE TABLE用来显示创建特定表

  4. SHOW GRANTS显示用户的权限信息

  5. SHOW ERRORSSHOW WARNINGS显示服务器错误或者警告消息

星空幻颖,严颖

个人主页:segmentfault

内容来源:https://segmentfault.com/a/1190000007993686


用户评论
开源开发学习小组列表