一。数据库的基本概念

1. 数据库的组成

数据(Data)

描述事物的符号记录

包括数字,文字、图形、图像、声音、档案记录等

以”记录”形式按统一的格式进行存储

table

将不同的记录组织在一起

用来存储具体数据

数据库database 

表的集合,是存储数据的仓库

以一定的组织方式存储的相互有关的数据集合

是按照数据结构来组织、存储和管理数据的仓库

2. 数据库的管理系统(DBMS)

数据库系统

是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成

用户可以通过DBMS或应用程序操作数据库数据请求低层指令

数据库管理系统(DBMS)

是实现对数据库资源有效组织、管理和存取的系统软件具有数据库的建立和维护功能、数据定义功能、数据操纵功能、数据库的运行管理功能、通信功能等,相当于linux系统中shell的作用

工作过程:

用户通过应用程序发送数据由DBMS向DB发送最低层的指令,数据库进行处理后在将结果通过DBMS在发送给应用程序回馈给用户

 

二。数据库系统的发展史

第一代数据库

20世纪60年代起,第一代数据库系统问世

是层次模型与网状模型的数据库系统

为统一管理和共享数据提供了有力的支撑

第二代数据库

20世纪70年代初,第二代数据库——关系数据库开始出现

20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步

取代层次与网状模型的数据库,成为行业主流具有高稳定性目前仍然深受行业喜爱

到目前为止,关系数据库系统仍占领数据库应用的主要地位

第三代数据库

自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现

面向对象的数据库系统,实用性强、适应面广

20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面

一些新的元素被添加进主流数据库系统中例如,Oracle支持的”关系-对象”数据库模型

三。当今主流数据库简单介绍

SQL Server(微软公司产品)

面向Windows操作系统

简单、易用但需要收费

Oracle(甲骨文公司产品)

面向所有主流平台。

安全、善,操作复杂

DB2(IBM公司产品)

面向所有主流平台

大型、安全、”完善

MySQL(甲骨文公司收购)

免费、开源、体积小

MariaDB(MySQL的一个分支)

由MySQL的创始人主导开发,给予事务的Maria存储引擎,由开源社区在维护,完全兼容MySQL

PostgreSQL(对象-关系型数据库)

是一款特性非常齐全的自由软件的对象-关系型数据库

免费、开源

。。。。。。。。。。。。。

四。关系数据库和非关系数据库

4.1)关系型数据库

关系数据库系统是基于关系模型的数据库系统

关系模型的数据结构使用简单易懂的二维数据表

关系模型可用简单的”实体-关系”(E-R)图来表示

E-R图中包含了实体(数据对象)、关系和属性三个要素

实体

也称为实例,对应现实世界中可区别于其他对象的”事件”或”事物”

如银行客户、银行账户等

属性

实体所具有的某一特性,一个实体可以有多个属性

如”银行客户”实体集中的每个实体均具有姓名、住址、电话等属性

联系

实体集之间的对应关系称为联系,也称为关系

如银行客户和银行账户之间存在”储蓄”的关系

所有实体及实体之间联系的集合构成一个关系数据库

总结

关系数据库的存储结构是二维表格关系型数据库大部分将数据存放到硬盘中,可以将有关系的表放在一个库中

在每个二维表

每一行称为一条记录,用来描述一个对象的信息

每一列称为一个字段,用来描述对象的一个属性

 

关系数据库应用

12306用户信息系统————Oracle,MySQL

淘宝账号系统———————SQLServer、Sybase

联通手机号信息系统———– Informix、access

银行用户账号系统—————DB2、FoxPRO

网站用户信息系统—————PostgreSQL

 

4.2)非关系数据库

非关系数据库也被称作NoSQL(Not Only SQL)

存储数据不以关系模型为依据,不需要固定的表格式

非关系型数据库的优点

1数据库可高并发读写数据的安全性不是很强,

2对海量数据高效率存储与访问

3数据库具有高扩展性与高可用性

常用的非关系数据库∶Redis、mongoDB等

总结

非关系数据库大部分以键值对的方式进行存储(例如:name=xxx),之间没有特定的联系,安全性不是很高,非关系数据库很多将数据是写在内存当中所以读写速度快

五。MySQL数据库

5.1)MySQL数据库介绍

一款深受欢迎的开源关系型数据库

Oracle旗下的产品

遵守GPL协议,可以免费使用与修改

特点

性能卓越、服务稳定开源、无版权限制、成本低多线程、多用户基于C/S(客户端/服务器)架构安全可靠

5.2)MySQL商业版与社区版

MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用

MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用

两者区别

商业版组织管理与测试环节更加严格,会比社区版更稳定

商业版不遵守GPL,社区版遵从GPL可以免费使用

商业版可获得7*24小时的服务,社区版则没有

5.3)MySQL产品阵营

第一阵营∶ 5.0-5.1阵营,可说是早期产品的延续

第二阵营∶5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能,(用的较多

第三阵营∶ 6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发

下载网址

●http:/www.dev.mysql.com/downloads

六。MySQL数据库管理

数据库–>数据表–> 行(记录)∶用来描述一个对象的信息

列(字段)∶用来描述对象的一个属性

常用的数据类型

int

整型范围(-2147483648~2147483647)

char

固定长度的字符类型比如设置4输入小于等于4记录都按照4个字符,最多255个字符

varchar

可变长度的字符类型比如设置4输入小于4记录按照输入的实际字符,如果大于4则只记录4个字符,最多65535个字符

text

文本

image

图片

float 

单精度浮点4字节32位

double

双精度浮点 8字节64位

decimal(m,d)

定点数,m<65 是总个数,d<30且d<m是小数位。例decimal(5,2)5个有效长度数字,小数点后面有2位

 

###登入数据库,-u指定用户,-p回车输入密码或者直接-p带上密码登入

mysql -u root -p

mysql -u root -p123456

###数据库中命令默认不区分大小写

6.1)查看数据库结构

1.查看当前服务器中的数据库

SHOW DATABASES;                       #大小写不区分,分号”;”表示结束

 

2.查看数据库中包含的表

USE 数据库名;                                    #切换到某个数据库

SHOW TABLES;                                #查看所有表

show tables in 数据库名;                #不进入数据库直接查看所含的表

 

3.查看表的结构(字段)

USE数据库名;

DESCRIBE [数据库名.] 表名;          #加上数据库名可以不进入数据库查看

可缩写成:DESC 表名;

6.2)使用SOL语句进行增删改查的操作 

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。进行增删改查的相关操作 

SQL语言分类

DDL∶数据定义语言,用于创建数据库对象,如库、表、索引等

DML∶数据操纵语言,用于对表中的数据进行管理

DQL∶数据查询语言,用于从数据表中查找符合条件的数据记录

DCL∶数据控制语言,用于设置或者更改数据库用户或角色权限

 

创建及删除数据库和表

1. 创建新的数据库

CREATE DATABASE 数据库名;

例∶

create database AAA;

2. 创建新的表

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,…..[,PRIMARY KEY(主键名)]);

#主键一般选择能代表唯一性的字段不允许取空值(NULL),且主键字段里不允许存在重复的值,一个表只能有一个主键可以放在最后或者直接在某个字段后面加上PRIMARY KEY。

例∶

CREATE DATABASE AAA;

USE AAA;

CREATE TABLE xinxi(

id int NOT NULL,                           #NOT NULL表示不能为空

name char(10) DEFAULT \’\’,          #DEFAULT表示不设置默认为某个值,不能设在int后面

age int(3) NOT NULL,                   

height decimal(5,2),                     #最大长度为5位,小数点后面为2位

PRIMARY KEY(id));                      #将id的字段设置为主键

DESC xinxi;

3. 删除指定的数据表

DROP TABLE [数据库名.]表名;              #如不用USE进入库中,则需加上数据库名 

4. 删除指定的数据库

DROP DATABASE 数据库名;

管理表中的数据记录

1. 向数据表中插入新的数据记录插入字符需要加上单引号\’ \’ 

INSERT INTO 表名 (字段1,字段2 ,…)VALUES(字段1的值,字段2的值,…);

例∶

INSERT INTO xinxi(id,name,age,height) values(1,\’zhangsan\’,PASSWORD(\’25\’),180.5);

#PASSWORD(\’25\’):查询数据记录时,密码字串以加密形式显示;若不使用PASSWORD(),查询时以明文显示。

 

INSERT INTO xinxi VALUES (2,\’lisi\’,23,179);            #若不指定字段将为全部

SELECT * FROM xinxi;                                                #查询表所有数据记录

2.查询数据记录

SELECT 字段名1,字段名2[,…] FROM 表名[where 条件表达式];

[where xxx and xxx]可以用and增加多个条件判断式,如果不加where判断字段所有内容都

例∶

SELECT * FROM xinxi;

SELECT id,name,age FROM xinxi WHERE id=2;

\G                                                     #数据信息多可用纵向查看

select * from xinxi\G                      #以列表方式竖向显示

limit [数字]

select * from xinxi limit 2;                   #只显示头2行

select * from xinxi limit 2,3;                #显示第2行后的前3行

3、修改、更新数据表中的数据记录

UPDATE 表名 SET字段名1=字段值1,…..[where 条件表达式];

#如果不加条件表达式该字段所有内容都将被更改

例∶

update xinxi set name=\’wanwu\’ where id=2;

4.在数据库中删除指定的数据记录

DELETE FROM 表名 [WHERE 条件表达式];

#用WHERE条件匹配最好匹配主键字段内容,具有唯一性,其他字段可能多个相同内容都被删除,不加where全部删除

例∶

delete from xinxi where id=1;

修改表名和表结构

1.修改表名

ALTER TABLE 旧表名 RENAME 新表名;

例∶

ALTER TABLE xinxi RENAME xxxxx;

ALTER TABLE xxxxx RENAME xinxi;

2. 扩展表结构(增加字段)

ALTER TABLE 表名 ADD 新字段 数据类型default \’不详\’;

#default \’不详\’:表示此字段设置默认值地址不详可与NOT NULL配合使用

例∶

alter table xinxi add weight char(3) default \’不详\’;

SELECT * FROM xinxi;

3. 修改字段(列)名,添加唯一键修改数据类型不能从字符变为数字

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];

例∶

ALTER TABLE xinxi CHANGE name user_name varchar(10) unique key;

#CHANGE可修改字段名、数据类型、 约束等所有项。

#unique key唯一键,表示该字段不能出现重复内容,唯一键可以设置多个但主键只能设置一个

4.删除字段

ALTER TABLE 表名 DROP 字段名;

例∶

ALTER TABLE xinxi DROP age;

案例

use AAA;

create table if not exists info (                       

id int (4) zerofill primary key auto_increment,        #指定主键直接跟在字段后面

name varchar(10) not null,

cardid char(18) not null unique key);

 

字段解析

#if not exists∶表示检测要创建的表是否已存在,如果不存在就继续创建

#int(4) zerofill∶表示若数值不满4位数,则前面用”0″填充,例0001

#auto_increment∶表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增; 自增长字段数据不可以重复,必须设置为主键;如添加的记录数据失败也会自动递增一次如果指定了一个值下一条未指定在上一条基础上加1,出现空缺值可以手动添加系统会按照数字顺序排序

#unique key∶表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键,但是一张表中可以有多个唯一键

#not null∶表示此字段不允许为NULL

 

版权声明:本文为pengdi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/pengdi/p/15183084.html