MySQL学习笔记(一):MySQL基础

前段时间一直在忙活做项目,已经好久没有特意去提升自己了,博客也是放着几乎没怎么管。经过这么长一段时间的做项目(重复工作)和带带小学弟学妹,我也渐渐意识到,我自身的基础还是有所欠缺,虽说写写不复杂的接口已经和吃饭一样稀疏平常了,但是对于更底层的数据库、运维以及架构的知识,感觉仍需学习。

从图书馆借了两本讲MySQL的书,就此正式从MySQL数据库开始学习了!

说起数据库,大家应该都不陌生,从高中接触过的Access,到人尽皆知的MySQL,还有听起来很厉害的NoSQL、Oracle、MongoDB等等。我相信大多数人都是和我一样,只简单地接触过其中的一两种,而且也完全谈不上精通的程度,只是知道怎么建表,怎么增删改查这种简单的操作。以前的我以为数据库只是实现简单的存储功能,后来接触得越多,才逐渐认识到,这可是一门学问!

好了,废话也说了不多了,正式开始学习吧!
首先,数据库可以分为关系型非关系型。两者之间的区别,简单地概括就是——数据是否靠关系模型组织起来的。具体要细说两者的区别和优缺点的话,可以再写一篇博客特地去讲了,而且我对他们的认识也还不够深入,等到以后有机会再说吧。

我们要学习的MySQL是典型的关系型数据库,关系型数据库的特点就是采用了关系模型组织数据,以行和列的形式存储数据,以便于用户理解。
关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

像MySQL这样的关系型数据库有很多优点:
1、容易理解:二维表的结构非常贴切我们的逻辑世界,当你打开一个表,基本上就能轻松理清数据之间的关系。
2、使用方便:SQL语句在关系型数据库中是通用的,并且十分贴切我们的日常语句,写起来十分方便。

(不过还是有许多不足的,不然也不会有非关系型数据库的出现,这些也以后有机会再说吧)

SQL(Structured Query Language),即结构化查询语言,是关系型数据库使用的特殊编程语言。虽说在实际开发过程中,大部分框架都对原生的SQL进行了封装,但是了解并掌握基本的SQL语法还是十分重要的。它包含六个部分:

1、数据查询语言(DQL:Data Query Language),我们可以通过SELECT配合WHERE、ORDER BY等等保留字,从数据库中获取我们想要的数据。

SELECT * FROM User
SELECT name FROM User
SELECT * FROM User WHERE name='mumu'


2、数据操作语言(DML:Data Manipulation Language),我们可以通过INSERT、DELETE、UPDATE,配合WHERE等保留字,对数据进行增删改操作。

INSERT INTO User VALUES ('mumu', '18')
DELETE FROM User WHERE name= 'mumu'
UPDATE User SET age= '20' WHERE name='mumu'

3、数据定义语言(DDL:Data Definition Language),涉及对数据表的操作,包括新增、删除、修改,以及增加索引等操作。

CREATE TABLE User
(
id_user int,
name varchar(20),
age int
)

4、数据控制语言(DCL:Data Control Language),能够实现权限控制,和对数据库的控制,包含数据完整性控制、数据安全性控制和数据库的恢复等。

5、事务控制语言(TCL:Transaction Control Language),能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

6、指针控制语言(CCL:Cursor Control Language):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

我们经常使用到的,基本上就只有前三种,再加上一般都是使用phpMyAdmin、Navicat等数据库管理工具,像新建数据库、数据表,修改表结构等等,也基本上不会用原生的SQL去实现,所以真正与我们密切相关的也就前面两种,即对数据的增删改查操作。


最最基础的东西讲到这里应该差不多了,不过我在这里基本上只是泛泛而谈,简单地提及了一下,如果真的要去学习,比如SQL,还得自己再去多看、多写。

发表评论

邮箱地址不会被公开。 必填项已用*标注