为什么使用数据库?
1.持久化。 内存中的变量当程序员当程序重启和电脑断电时丢失数据,而硬盘可以长时间、持久化的存储数据。数据存储到硬盘上的过程叫持久化。
2.数据库更加专业强大。
*纯文本文档、excel表格强大,增删改查和统计函数。
数据库基本概念
观察表格、excel表格、打开了学生列表.xls excel表格文档。类比引入数据库概念。
1.库schema;好像整个表格文档。
2.表table:对应excel表格里sheet1 sheet2 。有行内容和列组成。表描述一个类,每一行描述一个对象。
3.字段field:对应表格头部的序号、班级、姓名。好像类的属性。字段里存储的值得类型需要事先定义。
4.值value:表格每一行具体存储的信息。
5.主键 primary key:类似表格中 序号 这一列。数据库中这一列会自增并不会重复。
6.外键:foreign key:表1学员信息里里一个班级字段引用自另一个表班级信息表的的id列。优点易于维护,保持数据一致性。
7.范式:描述学校时,可以把全部信息字段定义到一张表上,也可以分为学员信息表、班级信息表、课程信息表、。划分维度、信息耦合度可高可低,具体结合业务逻辑分析。
常见数据库介绍
SQL(structured query language)结构化查询语言(关系型数据库)
关系型数据库:
1.sqlite:轻量级数据库。功能基础简单,在数据较少的情况下性能并不比重型数据库低。优点,python解释器内置驱动,无需安装直接使用,适合初学数据库。手机应用使用的就是sqlite。
2.mysql:最流行的数据库。中型。开源、php流行推动了mysql的流行。
** 3.PostgreSQL(自己课下学,老师不一定有时间讲);大象数据库,号称最先进的数据库。从大学兴起的开源数据库、架构优秀、功能前卫,数据量很大的时候,性能衰减不明显。消耗相同硬件资源的情况下性能和稳定性优于mysql数据库。django odoo等python框架官方推荐使用此数据库。但是目前市场占有率还不高。
4.oracle:地位很高的商用数据库。昂贵、稳定、功能强大,常与java配合使用。
5、DB2 sybase MSSQL等,其它的商用数据库.
6.access:微软office套件中包含,轻量,由于数据库门槛,使用者不多。
no-sql(no only sql非关系型数据库)型数据库:
7.mongodb 存储单位是文档,json(类似后端dict)结构整个存进去。数据常放在内存中以获得查询性能,定期把数据持久化到硬盘上。
8.redis 键值对 “name”=“小明” 。
SQL
structured query language 结构化查询语言。专门对数据库进行查找、增加、修改、删除、统计的操作语言。
CURD 增删改查 (create update read delete)
书写风格,大小写都行,建议大写。表名大小写都行,但是在一些数据库中不区分大小写。
基本语法
1.创建表
CREATE TABLE 表名 {
字段类型 字段名 其它关键字(主键 备注),
INT id PRIMARY KEY,
VARCHAR(10) name ,
VARCHAR(10) age
}
2.查找
SELECT 字段1,字段2,字段3,…FROM 表名; python中返回值形如[(1, 502版, 小明, 男), (), ()]。
字段比较多时简写为 SELECT FROM 表名; 由于数据库执行时会把转换为字段再执行,性能极微小下降。
SELECT * FROM 表名 WHERE 字段1 = 过滤值,字典2=过滤值; where限定条件查找。
eg:从表student中查找所有字段 id,name,age,查找整张表
SELECT id,name,age FROM student;
SELECT * FROM student;
eg.从表student中查找id=1行的所有字段
SELECT * FROM student WHERE id=1;
3.添加add
INSERT 字段1、字段2,… INTO表名 VALUES(1, “小明”, “男”);
简写 INSERT INTO表名 VALUES(1, “小明”, “男”);
eg:在表格student 最后一行添加name=“小花”,age=“15”
INSERT INTO student(name,age) VALUES("小花",15)
4.修改
UPDATE FROM表名 SET 字段1=新值,字段2=新值 WHERE 字段1 = 过滤值;注意没有where条件限定行的话将会更新整张表。
eg:把student表中id=2的那行的name="小明"改为 name=“静静”;
UPDATE student SET name="静静" WHERE id=2;
5.删除
DELETE FROM 表名; 注意会删除整张表。
DELETE FROM WHERE 字段1 = 过滤值; 限定条件删除某些行。
eg:删除整张表;
DELETE FROM student;
eg:删除表中的id=2的那行;
DELETE FROM student WHERE id-2;
6 AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
(1)AND 运算符实例
使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人从persons表格中:
SELECT * FROM persons WHERE LastName="Carter" AND FirstName= "Thomas";
显示结果如下:
(2)OR 运算符实例:
使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:
SELECT * FROM persons WHERE WHERE LastName="Carter" OR FirstName= "Thomas";
显示结果如下:
(3)结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM persons WHERE WHERE (FirstName="Carter" OR FirstName= "Thomas") AND LastName="Carter" ;
如图所示:
SQL PRIMARY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。