初识数据库
一 数据库管理软件的由来
基于我们之前所学,数据想要永久保存,都要保存在文件中,毫无疑问,一个文件仅仅只能
存在某一台机器上。如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序
所有的组件都运行在同一台机器上,那么文件存取数据,并没有问题,但上述假设有一下几个问题。
1.程序所有的组件就不可能运行同一台机器上
因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,
而一台机器的性能总归有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。
于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。
2.数据安全问题
根据1的描述,我们将程序的各个组件分布到各台机器,但是需知各组件仍然是一个整体,言外之意,
所有组件的数据还是要共享的,但每台机器上的组件只能操作本机的文件,这就导致了数据的不一致,
于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这
台机器上的文件(用socket)实现,即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,
需要加锁处理。
3.并发
根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,
然后写一个socket客户端的,完成如下功能:
3.1 远程连接(支持并发)
3.2 打开文件
3.3 读写(加锁)
3.4 关闭文件
总结:
我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序
(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理文件,
这就是mysql等数据管理软件的由来,但mysql解决的不仅仅是数据共享问题,
还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,
专注于自己的程序逻辑编写。
二 mysql介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,
目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,
在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
mysql是什么?
mysql就是一个基于socket编写的C/S架构
客户端软件
mysql自带:如mysql命令,mysqldump命令等
python模块;如pymysql
库===》文件夹
表===》文件
字段=》标题
记录=》文件中的一行内容
数据库管理软件=》套接字软件
数据服务器=》运行有数据库管理软件服务端的计算机
分两大类:
关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
非关系型:mongodb,redis,memcache
可以简单的理解为:
关系型数据库需要有表结构
非关系型数据库是key-value存储的,没有表结构
三 初始sql语句
有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写
mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
#1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
#2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
#3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
1.库操作=>文件夹
creat database db1 charset utf8mb4;
show databases;
show create database db1;
alter database db1 charset latin;
drop database db1;
2.表操作=》文件
create database db1;
create table db1.t1(id int,name char);
指定在文件夹db1下的文件t1创建标题id,name 并且声明其数据类型
切换文件夹
use db1;
create table t1(id int,name char);
直接在当前文件夹下创建标题(相对路径)
查看所有的表名
show tables
查看刚刚创建的表的命令
show create table db1.t1
查看创建成功的表的结构
desc t1;
改表的名字
alter table t1 rename tt1;
改表中标题的属性
alter table t1 modify name char(10) 字符大小,字节为单位
alter table t1 change name name char(20)
前者可以改标题的数据类型以及宽度(但是不能改标题的名字)
后者可以改标题的名字以及宽度(但是不能改标题的数据类型)
删除操作
drop table t1
3.记录操作=》文件中的一行内容
insert t2 values(1,'egon');
insert t2 values(2,'tom'),(3,'lxx'),(4,'egon')
select * from t2;
select name from t2 where id=3;
update t2 set name='lxx',id=444 where id=4;
delete from t2 where id=444
清空整张表:
truncate t2
不会与已清空的表有任何联系