导言:本系列是以MySQL数据库管理系统为基础,重点记录SQL语言的学习过程。除了必要的软件安装介绍以及基础知识外,较少涉及数据库部分,请务必知晓。
软件安装以及服务器设置
新手学习新的软件工具,每次安装软件的过程就是一场自我磨难。比如本人,学Python时安装Anaconda与Pycharm是这样,这次安装MySQL也是研究了至少三个小时。
总结下经验教训:
1.MySQL直接从官网下载 https://dev.mysql.com/downloads/mysql/;
2.找一个完整的安装教程跟着做,如果其中有些具体细节不理解再另外搜索辅助解决,是不是实用而能解决问题的教程你翻看下别人的评论就能大致判断清楚了。需要强调一点,千万别贪多找两份以上的教程否则后面各种DOS命令会搞到你头大。这里推荐一个我参考最多的教程 https://blog.youkuaiyun.com/zwj1030711290/article/details/80039780
3.下载完zip包,按照教程操作即可
4.关于创建my.ini 这里有个坑。 basedir 是mysql本地的安装目录,datadir是数据库数据文件文件要存放的位置。这个要根据你实际安装的位置决定。
5.安装完成后最好先进行初始化,不然可能各种报错。这里有个小技巧是,如果DOS操作过程中出现各种难以解决的问题,最简单有效的方法是删除datadir文件然后重新初始化。因为解决问题的过程中,特别是涉及DOS操作命令部分,本人发现错误多是涉及数据文件的。
6.服务器设置这块主要就是一些DOS命令操作,大致流程是初始化→安装mysqld→更改密码。这里有三个坑:一是初始化时要切换到MySQ安装目录中的bin目录下执行,可以使用强制切换命令 cd /d +“mysql目录下bin文件的绝对地址”;二是 注意是mysqld ,不是mysql;三是MySQL的密码认证插件以前是“mysql_native_password”,而8以后改成了“caching_sha2_password”,这点需要特别注意。
7.如果实在难以理解或者懒得费脑筋,照教程操作即可,一遍不行就多看几遍。下面那么多表示问题得到解决的评论也不光是摆设。
Navicat for SQL
导航猫这个软件,本人把它理解为MySQL的可视化操作辅助工具,正如Pycharm之余Python,使用这个软件工具可以在大多数人比较熟悉的图形操作界面操作MySQL,而不用一条条去敲命令行。安装包因为你懂得的原因就不给了,请自行搜索下,网络资源还是比较多的,这里给出一个本人当时操作连接时参考的百科经验https://jingyan.baidu.com/article/359911f55f6f7257fe03069b.html
数据库基础知识
在进行MySQL数据库管理系统操作之前,有必要先了解几个数据库相关的重要概念,理解数据库概念是掌握SQL的重要前提。
- 数据库定义
数据库(database),即保存有组织的数据的容器,通常是一个文件或一组文件。
顾名思义,数据库简单理解就是存放数据的“仓库”,你可以把它想象成一个文件柜,需要注意的是这个文件柜是一个存放数据的物理位置,不管数据是什么,也不管数据是如何组织的。 - 关系型数据库
关系型数据库是依据关系模型来创建的数据库。
所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。 - 二维表
如果说数据库是文件柜,那么在文件柜中创建的文件是表,表是数据库领域中的一个重要概念,它是一种结构化的文件,可用来存储某种特定类型的数据。表可以用来保存顾客清单、产品目录或者其他信息清单。
二维表是一个相对一维表的概念。判断数据是一维表还是二维表的一个最简单的办法,就是看其列的内容:每一列是否是一个独立的参数。如果每一列都是独立的参数那就是一维表,如果每一列都是同类参数那就是二维表。
图1:二维表
图2:一维表
- 行
行就是表中的一个记录,例如顾客表可以每行存储一个顾客,表中行编码为记录的编码。记录和行这两个概念经常交叉使用,两者本质上是一致的,但专业点的话还是用行这个术语。 - 列
列就是表中的一个字段,所有表都是由一个或多个列组成。熟悉excel的朋友对行与列的概念应该不会陌生。 - 主键
一列(或一组列),其值能够唯一表示表中的每一行,例如顾客表中可以使用顾客编号,而订单表可以使用订单ID,而人口普查可以使用居民身份证。唯一性是理解主键概念的核心。 - 外键
相对于主键,外键用于与另一张表相关联。是能确认另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那它就可以是A表的外键。外键可以是重复值,也可以是空值。
MySQL数据库管理系统
虽然可以使用导航猫对mysql进行可视化操作,不过mysql中的一些常用操作命令还是有必要了解一下。
- MySQL 数据库操作
操作名称 | 操作命令 |
---|---|
显示当前存在的数据库 | SHOW DATABASES |
选择你所需要的数据库 | USE guest |
查看当前所选择的数据库 | SELECT DATABASE() |
查看一张表的所有内容 | SELECT * FROM guest |
根据数据库设置中文编码 | SET NAMES gbk; //set names utf8; |
创建一个数据库 | CREATE DATABASES guest |
在数据库里创建一张表 | CREATE TABLE users (username VARCHAR(20), //NOT NULL 设置不允许为空 sex CHAR(1),birth DATETIME) |
显示表的结构 | DESCIRBE users |
给表插入一条数据 | INSERT INTO users (username,sex,birth) VALUES (‘Lee’,'x’,NOW()) |
筛选指定的数据 | SELECT * FROM users WHERE username = ‘Lee’ |
修改指定的数据 | UPDATE users SET sex = ‘ 男 ‘ WHERE username=’Lee’ |
删除指定的数据 | DELETE FROM users WHERE username=’Lee’ |
按指定的数据排序 | SELECT * FROM users ORDER BY birth DESC; // 正序 |
删除指定的表 | DROP TABLE users |
删除指定的数据库 | DROP DATABASE book |
- 视图
当利用数据库查询数据时,你需要输入一行行代码。如果是重复查询,每查询一次就得输入一遍代码,这样操作非常繁琐。所以关系型数据库都会提供一种功能来帮助你解决这个问题,这个功能就是视图。视图本质上其实是一种展示数据关系的虚拟表,这个数据关系根据你的需求来灵活设置,其并不真实存在于数据库当中。
这里给出一篇教程,个人认为理解透彻视图概念把这篇教程搞明白就差不多了:
*MySQL数据库视图:视图定义、创建视图、修改视图
https://blog.youkuaiyun.com/moxigandashu/article/details/63254901 - 存储过程
MySQL菜鸟教程中对存储过程有一句言简意赅的总结,即存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。说白了就是把你经常使用的SQL代码都起好名字专门放到一个地方,用的时候只需要输入你给SQL起的名字就OK了。跟视图一样是提高你工作效率的重要功能,因此需要牢牢掌握。另外说一点个人见解,对于基础知识主要是理解与掌握一些基本概念,关键搞明白概念的意思并能用自己的语言复述出来,至于具体操作放到实战当中一边看教程一边跟着敲代码才能高效率的掌握,光是看是记不住的。这里同样给出两篇参考资料,来帮助理解mysql的存储过程:
*MySQL存储过程:
http://www.runoob.com/w3cnote/mysql-stored-procedure.html
*MySQL存储过程详细教程:
https://www.jianshu.com/p/7b2d74701ccd