1. 数据库简介
1. 数据库的介绍
数据库就是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的数据进行增加、修改、删除、查询等操作。
2. 数据库的分类
- 关系型数据库
- 非关系型数据库
关系型数据库-RDBMS(Relational Database Management System):
是指采用了关系模型来组织数据的数据库,简单来说,关系模型指的就是二维表格模型,好比Excel文件中的表格,强调使用表格的方式存储数据。
关系型数据库的主要产品:
- oracle:在以前的大型项目中使用,银行,电信等项目
- mysql:web时代使用最广泛的关系型数据库
- ms sql server:在微软的项目中使用
- sqlite:轻量级数据库,主要应用在移动平台
非关系型数据库:
非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL,对NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 的方式存储数据。
常用的非关系型数据库:
- MongoDB
- Redis
2. SQL
SQL(Structured Query Language)是结构化查询语言,是一种用来操作RDBMS的数据库的语言。也就是说通过 SQL 可以操作 oracle,sql server,mysql,sqlite 等关系型的数据库。
- SQL语句主要分为:
- DQL:数据查询语言,用于对数据进行查询,如select
- DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
- TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
- DCL:数据控制语言,进行授权与权限回收,如grant、revoke
- DDL:数据定义语言,进行数据库、表的管理等,如create、drop
- CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
- 对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
- SQL 是一门特殊的语言,专门用来操作关系数据库
- 不区分大小写
在 Python代码中操作数据就是通过 SQL 语句来操作数据:
# 创建Connection连接 conn = connect(host='localhost', port=3306, user='root', password='mysql', database='python1', charset='utf8') # 得Cursor对象 cs = conn.cursor() # 更新 # sql = 'update students set name="刘邦" where id=6' # 删除 # sql = 'delete from students where id=6' # 执行select语句,并返回受影响的行数:查询一条学生数据 sql = 'select id,name from students where id = 7' # sql = 'SELECT id,name FROM students WHERE id = 7' count=cs.execute(sql) # 打印受影响的行数 print(count) |
3. MySQL 简介
1. MySQL数据库的介绍
MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件,
它是由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品,MySQL 是最流行的关系型数据库管理系统中的一个。
MySQL的特点:
- MySQL是开源的,所以你不需要支付额外的费用。
- MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- MySQL使用标准的SQL数据语言形式。
- MySQL可以安装在不同的操作系统,并且提供多种编程语言的操作接口。这些编程语言包括C、C++、Python、Java、Ruby等等。
2. MySQL数据库的安装
- MySQL数据库服务端软件的安装
- MySQL数据库客户端软件的安装
服务端
MySQL数据库服务端软件的安装:
在Ubuntu中打开终端,输入下面的命令:
sudo apt-get install mysql-server
- 服务器用于接收客户端的请求、执行sql语句、管理数据库
- 服务器端一般以服务方式管理,名称为mysql
ps说明
- ps 查看当前系统中的进程
- -a 表示所有用户
- -u 表示显示用户名
- -x 表示显示所有的执行程序
查看MySQL服务状态: | 停止MySQL服务: | 启动MySQL服务: | 重启MySQL服务: |
sudo service mysql status |
sudo service mysql stop |
sudo service mysql start |
sudo service mysql restart |
配置
MySQL配置文件的介绍:
配置文件路径为: /etc/mysql/mysql.conf.d/mysqld.cnf
主要配置信息说明:
port表示端口号,默认为3306 bind-address表示服务器绑定的ip,默认为127.0.0.1 datadir表示数据库保存路径,默认为/var/lib/mysql log_error表示错误日志,默认为/var/log/mysql/error.log
客户端
MySQL数据库客户端软件的安装:
客户端是程序员或者dba使用的软件,通过socket方式与服务端程序通信。
常用的MySQL数据库客户端软件有
- 图形化界面客户端Navicat
- 命令行客户端mysql
命令行客户端mysql的安装
在Ubuntu中打开终端,输入下面的命令:
sudo apt-get install mysql-client
mysql命令的使用帮助:
mysql --help
MySQL客户端的使用:
MySQL客户端连接MySQL服务端命令
mysql -uroot -p
说明:
- -u: 表示MySQL服务端的用户名
- -p: 表示MySQL服务端的密码
- quit 或者 exit 或者 ctr + d 表示退出
3. 数据类型和约束
数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束。
3.1. 数据类型
数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来,
使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
常用数据类型如下:
- 整数:int,bit
- 小数:decimal
- 字符串:varchar,char
- 日期时间: date, time, datetime
- 枚举类型(enum)
数据类型说明:
- decimal表示浮点数,如 decimal(5, 2) 表示共存5位数,小数占 2 位.
- char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab ',3表示字符数
- varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab',3表示字符数
- 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径.
- 字符串 text 表示存储大文本,当字符大于 4000 时推荐使用, 比如技术博客.
3.2 数据约束
约束是指数据在数据类型限定的基础上额外增加的要求.
常见的约束如下:
- 主键 primary key: 物理上存储的顺序. MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned.
- 非空 not null: 此字段不允许填写空值.
- 惟一 unique: 此字段的值不允许重复.
- 默认 default: 当不填写字段对应的值会使用默认值,如果填写时以填写为准.
- 外键 foreign key: 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常.
说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制
3.3 数据类型附录表
1. 整数类型 |
2. 字符串 |
3. 时间类型 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|