MySQL下载官网:https://dev.mysql.com/downloads/
pdf资料:http://www.notedeep.com/note/38/page/282
1. SQL相关概念
数据库(database):保存有组织的数据的容器
数据库管理系统(DBMS):创建和操纵数据库的软件,MySQL是DBMS的一种。
结构化查询语言(SQL):用来和数据库通信的语言。某标准协会设定,几乎所有DBMS都支持。
表(table):某种特定类型数据的结构化清单。表名在一个数据库中不可以重复。
模式(schema):定义了数据在表中如何存储。
列(colume):表中的一个字段。表中每一列存储一种特定的信息。每列应该有相应的数据类型(datatype)。
行(row):表中的一条记录(record)。
主键(primary key):一列或多个列,可以唯一区分表中每一行。设计数据库应该确保每个表都有主键。条件:任意两行的主键值都不能相同(多个列为主键时,其组合值必须时唯一的);每行都必须有主键值(主键列不可以为NULL);最好不要将可能会更改值的列设为主键。
2. MySQL简介
MySQL基于客户机-服务器的DBMS。
数据库服务器:负责所有数据访问和处理
数据库客户机:和服务器通信,可以是MySQL提供的工具和其他程序语言。
版本变化:
4 —— InnoDB引擎,增加事务处理、并、改进全文本搜索。
5 —— 存储过程、触发器、游标、视图
8 —— 性能提升,提供 NoSQL 存储功能,改进了对 JSON 的支持...
MySQL命令行:
用 ; 结尾
输入help 或 /h获得帮助,或者 help 加命令,如 help select
quit和exit退出
数据库和模式的区别:
https://blog.csdn.net/FallingU/article/details/78955707
1个数据库下,可以有多个模式。
1个模式下,可以有0个或多个表 。
我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table就被放入每个房间中,不能放置在房间之外。然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样。所以Schema包含的是Object,而不是User。
User是每个对应数据库的主人,既然有操作数据库的权利,就肯定有操作数据库中每个Schema(房间)的权利。换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的,他有完全的操作权,。我们还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了,至于分配权限的问题,后面章节有介绍。
为什么把表归属于不同的模式里?https://wenku.baidu.com/view/4e994735f111f18583d05a27.html
例如你的数据库里面有很多的表。就以一个学校作为例子吧:
有很多表分别用于存储学生、课程、成绩、学分等信息。
还有很多表用于存储 老师、工资、奖金等信息。
还有很多表用于存储学校的固定资产、流动资产、财务相关信息。
如果这么多的表,都混杂在一起。管理起来非常麻烦。
通过 create schema , 划分区域,
把学生的,创建一个 schema 叫 Student
教师的,创建一个 schema 叫 Teacher
学校财务的,创建一个 schema 叫 School
这样,对于专门负责学生信息管理的,就只负责 Student 这个 schema,表名全部是 Student.具体表名。
对于,负责教师系统开发的人来说,程序里面的表名,都是Teacher.具体表名。
学校财务的也是一样,查询的时候,是:SELECT * FROM School.具体表名
附录 —— 官网中创建表格和表格填充的脚本,用于创建本书中的样例表:
########################################
# MySQL Crash Course
# http://www.forta.com/books/0672327120/
# Example table creation scripts
########################################
########################
# Create customers table
########################
CREATE TABLE customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char