前言

最近刚刚开始学习数据库相关的知识,刚巧有地方用到。笔者之前关于数据库的知识,知识学过基础的SQL语句,并且在相关的网上刷题网站做过一些SQL相关的语句,但是对于实际的数据库编程以及框架不是很了解。由于笔者本次学习只涉及到了非常基础且简单的数据库,所以只就此部分进行讨论。这次学习之后借此机会,通过这边文章来总结分享这几天学习过程中的所得。

如有错误,欢迎指正!

数据库的基础知识

数据库属于程序开发中重要且基础的技术。由我个人的理解是,数据库可以分为三层。最上层是数据库(DataBase),即存储数据的较大的单位,也是我们文件中的.db后缀的文件;第二层是数据表(Table),我们的增删查改都是针对Table来进行操作的,对Table的具体操作即为相应的SQL语句,这也是数据库技术中较为重要的部分,每个数据库可以包含多个数据表;最基础的是数据记录(Record),即数据表中的每一行。例如在学生信息的数据表中,'张三', ‘男’, 23, '计算机专业'就是一条数据记录。对每一层整体的操作命令的对象,都是上一层对象。这句话有点绕口。即,对数据记录的增删查改命令都是对上一层数据表的操作;对数据表对创建删除修改命令,都是针对数据库的操作。

Mac OS Python的MySQLdb库安装和MySQL的访问

笔者差了很多关于MySQLdb的安装,网上很多版本,综合起来最简单最直接的方法只需要在命令行中输入两行命令,具体如下:

$ brew install mysql-connector-c
$ sudo pip install MySQL-python

直接在命令行中运行上述两条语句,即可对MySQLdb完成安装,安装在了python下而不是python3。最新的Mac OS应该都可以运行。安装完成后,写一个python文件,只包含一句代码,如下,

import MySQLdb

然后运行此代码,若命令行无任何返回值,说明安装成功。

然后还需要安装MySQL,具体可以去官网下载并且安装即可。

安装好MySQL后,可以在命令行中输入

mysql -u root -p

这句的意义是,对本地mysql数据库进行访问,-u后面跟的参数root是管理员,-p是密码,但是由于第一次访问没有密码,直接敲回车即可。进入后再输入

show databases

即可看到现有的本地数据库有哪些,然后可以用create/drop database + 库名即可创建或删除相应数据库。


MySQLdb的基础操作

以下是具体的Python代码:

import MySQLdb
"""
建立MySQL链接
@Param: host->与数据库服务器连接的地址,本地地址是127.0.0.1或者localhost
		user->MySQL数据库账号
		passwd->MySQL密码
		db->在MySQL服务器中找到需要操作的数据库名
在本代码中,需要提前创建stock数据库。
"""
conn = MySQLdb.connect(host='localhost', user='root',passwd='', db='python')

# 创建一个游标
cursor = conn.cursor()

# 执行CREATE TABLE的MySQL语句。在python数据库中创建一个名为HistoryPrice的表。
cursor.execute("""CREATE TABLE HistoryPrice(
			symbol varchar(255),
			historyTime date,
			openPrice double,
			highPrice double,
			lowPrice double,
			closePrice double,
			volume int,
			PRIMARY KEY (symbol, historyTime)
			)""")

# 插入value对应的一条数据记录。
value = ["GOOG", "2017-04-02", 23.1, 23.1, 23.3, 23.4, 100]

cursor.execute("INSERT INTO HistoryPrice VALUES(%s, %s, %s, %s, %s, %s, %s)",value)

# 提交对数据表的修改,如果没有这句执行完代码后,无法对数据表的修改进行保存。
conn.commit()

以上代码展示了创建表和数据记录的插入操作,其余的删查改操作可以相应修改并执行。

相应的,可以直接对数据表进行创建,也可以直接将其删除,例如

drop table HistoryPrice

可以直接完成对数据表的删除。

需要注意的是,普通的sql语句需要commit()之后才能保存相应的操作结果,但是Drop和Create等直接操作数据表的操作不需要commit(),执行语句后会直接保存。

具体解释如下

SQL 的命令分四部分: DDL,DML,DCL,TCL。

  • DDL(Data Definition Language) 
    数据库定义语言(statements are used to define the database structure or schema)
    用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束
    DDL不需要commit
    命令: CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME
  • DML(Data Manipulation Language)
    数据操纵语言(statements are used for managing data within schema objects)
    由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。
    需要commit.
    命令: SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE
  • DCL(Data Control Language)
    数据库控制语言
    授权,角色控制等
    命令: GRANT,REVOKE
  • TCL(Transaction Control Language)
    事务控制语言
    命令: SAVEPOINT,ROLLBACK,SET TRANSACTION

以上是笔者对于数据库MySQL基础的理解。笔者对这方面也是小白,写出这篇文章,希望能跟大家交流,多多指教。