01 数据库基础概述
数据库的访问方式
一般情况下,不涉及具体数据的时候,没有?后面那个查询字符串。
当想访问具体的数据时,查询字符串会在服务器中经过特定的程序,与数据库中的数据进行匹配,从而登录到数据库中,获取想要的资料,再返回到服务器,通过处理,呈现出客户端看到的形式。
为什么学数据库?
90%以上的软件都需要操作数据库,比如游戏、社交、新闻、商城、财务等
什么是数据库?
数据库专业地来说,其实就是一种电子的仓库,是专门储存数据和管理数据的一种处所,用户可以对数据库中的数据进行新增、更新或者删除等操作。
eg,现在每个人都有很多朋友和同学,为了方便联系,我们建立有关姓名和电话的通讯录,这个通讯录就是数据库,有时候我们会修改某个电话号码。
数据管理技术的历史
数据管理技术经历了三个阶段:
人工管理阶段、文件系统阶段、数据库系统阶段
数据库术语
数据(Data) 图像、语音、文字等 ·在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据
数据库(Database) Access、MSSQL、Oracle、SQLITE、MySQL等 数据库是按照数据结构来组织、存储和管理数据的“仓库”。
数据库管理系统(DBMS)Access、MSSQL、Oracle、SQLITE、MySQL等 数据库管理系统(databasemanagementsystem)是一种操纵和管理数据库的软件,用于建立、使
用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
结构化查询语言(SQL)** 结构化查询语言(StructuredQueryLanguage)简称SQL,结构化查询语言是一种数据库查询和程
序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
DBS用于管理DBMS,DBMS用来操纵DB,DB用来存储Data。
数据库管理系统分类
1.关系数据库
关系数据库=①多张表+②各表之间的关系
关系数据库是创建在关系模型基础上的数据库,"一对一、一对多、多对多”等关系模型。借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
优缺点:安全系数高,容易理解,比较浪费磁盘空间。
典型代表有:MySQL(3306)、Oracle(1521)、MicrosoftSQLServer(mssql/sql server:1433)、Access(没有端口)及PostgreSQL(5432)等
2.非关系型数据库(NoSQL)
非关系型数据库是对不同于传统的关系数据库的数据库管理系统的统称。与关系数据库最大的不同点是不使用SQL作为查询语言。
优缺点:安全系数低、效率高。
典型代表有:BigTable(Google)、CassanGra、ongoDB、CouchDB;redis
还包括键值数据库:ApacheCassandra(Facebook)、LevelDB(Google)
常见数据库
01 MySQL
MySQL的概念
MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据库保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度开提高了灵活性。
MySqI5.0增加了INFORMATION_SCHEMA****系统数据库。
ps:只要建库建表都会有information_schema,用use Information_schema,show tables,就会发现表中有schemata这个选项,数据库都在里面。表存在infomation_schema表中的tables里面。
MySQL的特点
快!速度是其他关系型数据库不能比的。(相对于功能较少)
开源!能够自主开发基于mysql(c语言编写)由阿里发起的“运动”去oracle化,中国所有的大型互联网企业相应,数据库由oracle迁移至mysq
免费!基本上就是中小型企业的唯一选择
综上所述中国市场占有率第一!
02 SQL server (MS SQL)
SQL Server是Microsoft公司推出的关系型数据库管理系统。具有使用方便、更安全可靠的存储功能与相关软件集成程度高等优点,这款数据库的特点是真正的客户/服务器体系结构,并且是图形化的用户界面,使数据库管理方式更加直观和简单。它还提供了丰富的编程接口工具,为用户进行程序设计提供了更多的选择,在使用上也是非常广泛的。
与MySQL的对比
- SQL Server和MySQL都是广泛使用的关系型数据库管理系统(RDBMS)
- SQL Server不是开源的,是商业的。
- SQL Server仅支持Linux和Windows平台,主要用于.Net应用程序或Windows项目。
- SQL Server语法简单易用。
03 Oracle
这是一款比较典型的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据库管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分数式数据库,它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。
04 Access
这款数据库是由微软发布的,是一款关联式数据序管理型系统的数据库,通常是被用来开发Web应用程序。这些用用程序都利用Asp技术在lls上运行,但是由于Access是小型数据库,在很多的使用上都有着局限性,而且如果过多的数据库访问量还会造成数据库的性能急剧下降。
Access没有库,只有表
达梦数据库,支持多种平台,支持多种数据类型。
02 MySQL 安装与配置
- 下载MySQL
搜索官网https://www.mysql.com
选择想要的版本下载安装,端口选择3306 - 设置MySQL的环境变量。
我的是Win10,打开控制面板,选择系统与安全,然后在右边搜索“编辑系统环境变量”
左键“编辑系统环境变量”,选择右下方的“环境变量”,单击打开。
双击path
打开MySQL安装所在的文件夹,打开bin的目录,然后复制路径,在新建里面粘贴路径,点击确定。
PS:这里点击确认之后,上一个页面也要点击确认,高级页面也要点击确认,点确认推出,而不是只点击一个确认,其余的点叉。
检测编辑环境变量是否成功,Win+R,输入cmd,回车。
然后输入:mysql -u root -p,回车之后输入密码,再回车。进入MySQL模式,就设置成功了。
如果不想编辑环境变量,那么直接在bin所在的目录上面输入cmd,也可以进入MySQL的编辑模式。
在输入mysql -u root -p,重复上满的步骤,回车输入密码,也可以进入MySQL的编辑模式。
PS:我用的是phpstudy,密码如果忘了,可以在小p的“数据库”中查看。
03 Mysql数据库操作
数据库构成
- 表(abe):在一个数据库中表看起来像一个简单的电子表格。名字是唯一的。
- 列(column0):表中的一个字段。所有表都是由一个或多个列组成的。
- 行(row):表中的一个记录。
- 值(value):行的具体信息,每个值必须与该列的数据类型相同。
- 主键(primary key):一列(或一组列),其值能够唯一区分表中的每一个行(主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。)一个主键对应唯一一条记录(类似于身份证号码)
在进入mysql模式之后,输入“show databases;” 这里数据一定要是复数,加上“s”,后面一定要加“;”。不加;加载不出来,见下面的截图;
这里面information_schema; mysql; performance_schema; sys是系统自带的默认的表;其中information_schema是最重要的表。
要看哪个数据库,就**use 数据库的名字;**一定要加“;”,不然执行不了;
查看SHEMATA里面的数据库的名字
select * from +数据库的名字;
数据库连接
mysql -h(主机地址)-u root -p (指定密码)
本机地址可以不写,如果是连接别人的数据库,就要写-h ip , 指定密码可以回车之后再填写。
1.创建数据库,命令是 create database 表的名字;
注意:create database是mysql的关键字不能打错或者遗漏;数据库名不能空格;否则会报错(看错误时直接看后面有关"“的字段就行)数据库的名称不能以数字开头。
2.删除数据库:drop database database_name;
3. show databases;列出mysql数据库管理系统的数据库列表(注意databases是复数形式)。
4. **use 数据库名;**选择需要操作的数据库,使用该命令后所有的MySQL命令都只针对该数据库。
使用的数据库要是数据库列表里面有的,而且每条命令都要加上英文的”;"
MySQL数据类型
MySQL中定义数据字段的类型对数据库的优化是非常重要的。
MySQL支持多种类型,重点讲解以下三类:数值、日期/时间和字符串(字符)类型。
1.整数类型:
TINYINT、SMALLINT、MEDIUMINT、**INT(INTEGER)**和 BIGINT
- INIANLL 般用于枚举数据,比如系统设定取值范国很小且固定的场景。
- SMALLINT:可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等。
- MEDIUMINT : 用于较大整数的计算,比如车站每日的客流量等。
- INT、INTEGER : 取值范围定够大,一般情况下不用考思超限问题,用得最多,比如商品编号
- BIGINT: 只有当你处理特别巨大的整数时才会用到。比如双十一的交易量、大型门户网站点击量、证券公司行生产品持仓等
MySQL支持的数据库类型后面指定该类型的显示宽度。
eg,int(N)N上限为10,就算写int(20),也只显示10个字符。所以电话号码只能用bigint,用int显示不完整。
2.浮点类型
浮点数和定点数类型的特点是可以处理小数,你可以把整数看成小数的一个特例。因此,浮点数和定点数的使用场景,比整数大多了。MySQL支持的浮点数类型,分别是FLOAT、DOUBLE、REAL。
平常用的float,double在SQL中也有,形式为float(M,D),和double(M,D)M表示有效数字,D表示小数点后几位表示
不过一般用decimal(M,D)表示精确数值。
用来存小数的。
3.日期与时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
使用“零“值。
TIMESTAMP类型有专有的自动更新特性。
4.字符串类型
CHAR(M)类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。
VARCHAR(M)定义时,必须指定长度M,否则报错。
char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,比如CHAR(30)就可以存储30个字符。
大的文本:text blob
数据库操作
举个例子:
01 创建一个数据库;
02 在刚才创建的数据库下创建一个表;
03 输入表的具体值;
PS:创建表格的时候,名字和日期都要用‘’引起来,不用单引号会报错;并且,打了前括号,一定要记得打后括号;日期时间根据要写的类型来创建,注意格式。
1.创建数据表
(创建MySQL数据表需要以下信息:表名、表字段名、定义每个表字段)一个 关系型数据库,一般以表的形式显示。
创建数据表(创建mysql数据表需要以下信息:表名、表字段名、定义每个表字段)
CREATE TABLE表名(属性名 数据类型 完整性约束条件,
属性名 数据类型 完整性约束条件,
属性名 数据类型);
CREATE TABLE school(
id int
name varchar(20)
sex Boolean);
MySQL命令的终止符为‘;’命令结束必须是‘;’,不是‘;’会报错。
完整性的约束条件不是必须的,根据建表的需要来填写。
约束条件:
建表的时候可以不创建约束条件。
约束条件
(一)主键约束
主键与记录之间的关系如同身份证和人之间的关系,他们是一一对应的。
1)主键约束要求主键列的数据要唯一,并且不允许为空。
2) 主键能唯一的标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,加快数据库的查询速度
3) 一般分为单字段主键和多字段联合主键
1.单字段主键
字段名 数据类型 primary key [默认值]
2.多字段联合主键
primary key [字段1,字段2…]
(二)外键
[constraint 外键名] foreignkey(字段名1)references 主表名(主列1)
外键用来两个表之间的数据建立连接。它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则一个表中的外键必须为另一个表的主键。
主表(父表):主键所在
从表(子表):外键所在
(三)非空约束
字段名 数据类型 not null
(四)唯一性约束
字段名 数据类型 unique
注意:unique和primarykey最大的区别:一个表可以有多个唯一性约束,但是只能有一个主键约束,且声明**unique可以有空值,**但是primary key不可以。
(五)使用默认约束
字段名 数据类型 default 默认值
可以指定列表的默认值,例如,列表男性同学多,性别可以设置默认值为男,那么在如果没有为这个字段赋值时,系统会自动为这个字段赋值“男”。
2.删除数据库表
MySQL中删除数据表是非常容易操作的,但是你在进行删除时要非常小心,因为执行删除命令后,所有数据都会消失。
语法:DROP TABLE table_name
3.插入语句
insert into table_name(field1, field2…fieldN)
Values
(value1,value2,…valueN);
接下来可以用
select * from 表的名字,来查看刚才插入数据表的数据。
4.查看表的属性
show columns from table_name;
show full columns from table name;(查看备注信息)
显示数据表的属性,属性类型,主键信息,是否为NULL,默认值等其他信息.
Field:列名;
Type:数据类型
Null:是否能取空值;
Key:PRI(主键)、MUL(普通的b-tree索引I)、UNI(唯一索引);
Default:默认值;
Extra:其他信息。
显示数据表的详细索引信息,包括primarykey(主键)。
show index from table_name;
tables:表名;
Sub_part:如果列只是被部分地编入索引,则为被编入索引的字符的数目;如果整列被编入索引,则为NULL;
Non_unique:索引能否重复;
Key_name:索引的名称;
Packed:指示关键字如何被压缩。如果没有被压缩,则为NULL;
Seq_in_index:索引中的序列号,从一开始;
Column_name:列名称;
NULL:如果列中含有NULL,则含有YES。如果没有,则该列含有NO;
Collation:列以什么方式存储在索引中。‘A’(升序)或NULL(无分类):
Index_type:用过的索引方法;
Cardinality:索引总唯一的数目的估计值;
Comment:多种拼注。
5.修改表名、属性名
alter table 旧表名 rename 新表名;
修改字段的数据类型
Alter table 表名 modify 属性名数据类型
修改字段名
Alter table 表名 change 旧属性名 新属性名 新数据类型;
可以同时修改数据的类型。
增加字段
**Alter table 表名 add 属性名 数据类型 【完整约束条件】;
**Alter table 表名 add foreign key (user id)references 主表表名 字段名;
删除字段
Alter table 表名 drop 属性名;
如:alter table students drop tel;
6. 列出所有的列
select * from 表名;
select 具体属性 from 表名;
查询语句中你可以使用一个或者多个表,表之间使用逗号(.)分割,并使用WHERE语句来设定查询条件。
你可以使用星号(*)来代替其他字段
SELECT语句会返回表的所有字段数据
where 子语
类似于程序语言中的if条件,根据MySQL表中的字段值来读取指定的数据;
where的字符串比较是不区分大小写的。
可以使用where binary关键字来设定where子句的字符串比较是区分大小写的。
7.修改/删除语句
如果我们需要修改或更新MySQL中的数据,我们可以使用SQL UPDATE命令来操作。
update 表名 set field1=新的内容,field2=新的内容;
因为id设为了主键,所以id改不了。
你可以同时更新一个或多个字段。
你可以在WHERE子句中指定任何条件。
你可以在一个单独表中同时更新数据。
不加where,所有的数据都会改成一样的。
删除语句
delete from 表名 where 条件;