数据管理主要经历过程:
手工管理阶段 :应用程序管理数据、数据不保存、不共享、不具有独立性。
文件管理阶段 :文件系统管理数据、数据可长期保存、但共享性差、冗余度大、独立性差。
数据管理阶段:数据库系统管理数据、数据结构复杂、冗余小、易扩充、较高的独立性、统一数据控制。
数据库的特征: 数据结构化 实现数据共享 减少数据冗余 数据独立性
数据库类型(按数据模型特点分) 网状型数据库 层次型数据库 关系型数据库
关系型数据库:采用二维表结构组织和管理数据,并规定了表内和表间数据的依赖关系
关系数据库是指一些相关的表和其他数据库对象的集合。对于关系数据库来说,关系就是表的同义词。 表是由行和列组成(类似二维数组的结构)。 列包含一组命名的属性(也称字段)。 行包含一组记录,每行包含一条记录。 行和列的交集称为数据项,指出了某列对应的属性在某行上的值,也称为字段值。 列需定义数据类型,比如整数或者字符型的数据。
SQL语言主要是用来操作关系型数据库的一本语言,称之为结构化查询语句。
SQL语句主要分为:
DQL:数据查询语言,用于对数据进行查询,如select
DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
DCL:数据控制语言,进行授权与权限回收,如grant、revoke
DDL:数据定义语言,进行数据库、表的管理等,如create、drop
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
MySQL的特点:
使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。
为多种编程语言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等
支持多种存储引擎
MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库
MySQL服务端(在Linux系统)
下载安装 sudo apt-get install mysql-server
启动服务 sudo service mysql start
查看服务是否启动 ps ajx|grep mysql sudo service mysql status
停止服务 sudo service mysql stop 重启服务 sudo service mysql restart
配置 配置文件目录为/etc/mysql/mysql.conf.d
进入目录,打开mysqld.cnf,可以看到配置项
bind-address表示服务器绑定的ip,默认为127.0.0.1 port表示端口,默认为3306
datadir表示数据库目录,默认为/var/lib/mysql
generallogfile表示普通日志,默认为/var/log/mysql/mysql.log
log_error表示错误日志,默认为/var/log/mysql/error.log
数据库管理
连接数据库 mysql -u账号 -p密码 -h主机地址 -P端口 mysql -uroot -pmysql
查看数据库版本 select version();
显示当前时间 select now();
查看所有数据库: show databases;
创建数据库 create database 数据库名 charset=utf8; 切换数据库: use 数据库名
查看当前正在使用哪个数据库 select database();
删除数据库 drop database 数据库名;
数据表管理-数据表设计
数据表设计包括ER图、表的主键、字段、数据类型、约束、表之间关系的设计 E-R(Entity-Relationship)模型即实体-关系模型主要用于定义数据的存储需求,该模型已经广泛用于关系数据库设计中。E-R模型由实体、属性和关系三个基本要素构成。
主键(Primary Key) 数据库表要求表中的每一行记录都必须是唯一的,即在同一张表中不允许出现完全相同的两条记录。
在设计数据库时,为了保证记录的“唯一性”,最为普遍、最为推荐的做法是为表定义一个主键(primary key)。
数据库表中主键有以下两个特征: 表的主键可以由一个字段构成,也可以由多个字段构成(这种情况称为复合主键)。 数据库表中主键的值具有唯一性且不能取空值(NULL),当数据库表中的主键由多个字段构成时,每个字段的值不能取NULL值。
实体间的关系与外键(Foreign Key) 班级实体和班主任实体之间为一对一关系,班级实体和学生实体之间为一对多关系,学生实体和课程实体之间为多对多关系。 实体间的关系可以通过外键来表示。如果表A中的一个字段a对应于表B的主键b,则字段a称为表A的外键。此时存储在表A中字段a的值,同时这个字段值也是表B主键b的值。
约束(Constraint) 约束是定义在表上的一种强制规则。当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败。
约束类型:
NOT NULL 非空约束,指定某列的所有行数据不能包含空值
UNIQUE 唯一性约束 指定列或者列的组合的所有行数据必须唯一
PRIMARY KEY 主键约束,在列及引用列上建立的一种强制依赖关系
FOREIGN KEY 外键约束,在列及引用列上建立的一种前置以来关系
CHECK 检查行约束 ,在列上指定一个必须满足的条件
创建表:create table 表名( id int unsigned auto_increment primary key not null, name varchar(10) not null, is_delete bit(1) not null default 0 );
添加字段:mysql> alter table students add birthday date;
删除字段:alter table students drop gender;
修改字段 第一种,不修改字段名只修改类型及约束 alter table 表名 modify 列名 类型及约束;
第二种,需要修改字段名字 alter table 表名 change 原名 新名 类型及约束;
删除表:drop table 表名
查询语句: select * from 表明
指定字段查询 select 字段1,字段2 from 表名;
插入语句:insert into 表名 values (......)
全列插入:insert into student values('值1',‘......') 值的数量必须和列的数量一致
部分插入:insert into 表名 [字段1,字段2] values (值1,值2);
修改数据:update 表名 set 字段=xxx where 字段=xxx;
删除数据:delete from students where id =3;
备份数据库
mysqldump -uroot -p 数据库名 > python.sql
mysqldump -uroot -p python > python.sql
备份数据表
mysqldump -uroot -p 数据库名 数据表名> python.sql