数据库基础
数据库概念
专业来讲,其实就是一种电子仓库,是专门储存数据和管理数据的一种处所,用户可以对数据库中的数据进行新增、更新或者删除等操作。
举例来讲,平常为方便联系,我们在通讯录建立有关姓名和电话,这个通讯录就是数据库
数据库发展阶段
人工管理阶段、文件系统阶段、数据库系统阶段
数据库中应用术语
- 数据(Data):各种字母、数字符号的组合、语音、图形、图像等统称为数据
图像、语音、文字等
- 数据库(Database):按照数据结构来组织、存储和管理数据的“仓库”
Access、MSSQL、Oracle、SQLITE、MySQL等
- 数据库管理系统(DBMS):一种操纵和管理数据库的软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的完全性和完整性。
主要分为两类:关系数据库和非关系性数据库
关系数据库是创建在关系模型基础上的数据库,“一对一、一对多、多对多”等关系模型。借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
关系数据库:安全系数高,容易理解,比较浪费磁盘空间 非关系数据库:安全系数低、效率高
- 结构化查询语言(SQL):简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统
常见数据库
- MySQL:关系型数据库管理系统,Oracle旗下产品,目前最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的关系数据库管理系统应用软件之一。
特点:
- 快!(相对于功能较少)
- 开源!能够自主开发基于mysql(c语言)
- 免费!中国市场占有率第一!
- SQL Server(MS SQL):Microsoft公司推出的关系型数据库管理系统。具有使用方便可伸缩性好、更安全可靠的存储功能与相关软件集成程度高等优点。
不开源,商业的;仅支持Linux和Windows平台;语法简单易用;
特点:
- 真正的客户/服务器体系结构
- 图形化的用户界面,数据库管理直观简单
- 提供了丰富的编程接口工具
-Oracle:典型的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。世界上使用最为广泛的数据库管理系统,具有完整的数据管理功能,完备关系的产品,实现了分布式处理功能。
- Access:微软发布,一款关联式数据序管理型系统的数据库,通常被用来开发web程序,小型数据库,使用局限性,同时过多的数据库访问量还会造成数据库的性能下降。
重点介绍MySQL的应用
数据库构成:
-
表(Table):简单的电子表格,名字唯一;
-
列(column):表中的一个字段,所有表都是由一个或多个列组成的;
-
行(row):表中的一个记录;
-
值(value):行的具体信息,每个值必须与该列的数据类型相同;
MySQL数据类型(重点讲述数值、日期/时间和字符串类型)
数值:
- 整数:
-
TINYINT:一般用于枚举数据,比如系统设定取值范围很小且固定的场景。
-
SMALLINT:可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等。
-
MEDIUMINT:用于较大整数的计算,比如车站每日的客流量等。
-
INT(INTEGER):取值范围足够大,一般情况下不用考虑超限问题,用的最多。
-
BIGINT:只有在处理特别巨大的整数时才会用到,比如双十一的交易量,大型门户网站的点击量。
- 浮点数---可以处理小数,整数可以看成是小数的特例。
- FLOAT
- DOUBLE
- REAL
日期/时间:
DATETIME、DATE、TIMESTAMP、TIME、YEAR
每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值。
字符串:
- CHAR(N)类型一般预先定义字符串长度,若不指定,则默认为1个字符。
- VARCHAR(N)定义时,必须指定长度,否则报错。
MySQL简单操作:(命令终止符为分号)
以phpstudy中所搭建的MySQL为例进行
以创建学生表为例进行数据库简单操作:
- 首先启动数据库:
- 进行数据库的连接
mysql -u root -p 密码默认为root
- 查看mysql中数据库:
show databases;
- 创建数据库并查看:
create database database_name;
show databases;
create database为MySQL关键字;数据库名不能空格;数据库的名称不能以数组开头;
- 进行数据库的删除操作,并查看:
drop database database_name;
show databases;
- 使用数据库,并在数据库中创建表:
use database_name;
create table 表名(属性名 数据类型 完整性约束条件);
- 查看表结构,并对应创建表时所设置的约束条件:
desc 表名;
- 在表中添加字段,同时使用desc查看表结构
alter table 表名 add 属性名 数据类型;
desc 表名;
- 向表中插入数据,同时进行查询
查询语句中*代表返回表中所有内容;
insert into table_name (field1,field2,...)values(value1,value2,...);
select *from 表名;
- 继续进行数据插入,此时不设置性别sex,观测表中数据
此时性别默认为男,是由于之前在创建数据表时设置性别default ’男’,即默认为男;
- 继续数据插入,此时不设置年龄
显示年龄值为NULL,据之前表结构,年龄值是可以为空值的,故此处正确;
- 继续数据插入,但此时设置学号是与之前数据重复,查看结果
出现报错,这是因为学号在创建表时设置为主键primary key,主键内容是唯一的,且不能重复;
- 累计插入十条学生数据(五名一班,五名二班),进行数据查询
- 进行数据表的属性显示
show columns from 表名;
Field:列名 Type:数据类型 Null:是否能取空值
Key:PRI主键、UNI唯一索引 Default:默认值 Extra:其他信息
- 进一步查看备注信息
show full columns from 表名;
Privilege:赋予权限信息 Comment:备注信息
- 查看数据表索引
show index from 表名;
从左至右依次表示为:(了解即可)
1. 表名 2. 索引能否重复 3. 索引的名称 4. 索引的序列号,默认从1开始 5. 列名称 6. 列以什么方式存储在索引中(‘A’升序或NULL无分类) 7. 索引总唯一的数目的估计值 8. 如果列只是被部分地编入索引,则为被编入索引地字符数目。如果整列被编入索引,则为NULL 9. 指示关键字如何被压缩,如果没有被压缩,则为NULL 10. 如果列中含有NULL则为YES,否则则为NO 11. 用过的索引方法 12. 多种拼注
- 修改表名,并进行查询
alter table 旧表名 rename 新表名;
select *from 新表名;
- 修改表中字段数据类型,并进行查看
alter table 表名 modify 属性名 数据类型;
desc 表名;
- 进行数据更新,并进行查看
update 表名 set field=new_value where 条件;
其中where子句为条件查询,满足where之后条件的进行修改;
声明
以上内容仅代表作者个人学习记录,供学习参考