一、数据库介绍
1、为什么需要数据库
由于计算机的内存资源有限且掉电后数据会丢失,因此需要把程序中用到的数据保存下来以到便于关机后还能继续使用,而保存数据最简单的方法就是把数据以文件形式写入到磁盘中,我们把这个过程叫数据持久化。
但随着程序的功能越来越复杂、数据量越来越来大,管理数据就成了大问题,因为读写文件并解析出数据需要大量的重复操作,并且从海量的数据中快速查找出指定的数据需要复杂的逻辑。
如果程序都各自实现自己的读写数据的代码,一方面效率低且容易出错,另一方面是每个程序访问数据的接口不同,代码难以复用,浪费时间。
所以我们的前辈就发明出一种专门用来管理数据的软件,它就是数据库。
2、什么是数据库
简单来说数据库就是电子化的文件柜,存储电子文件的场所,用户可以方便、快速对文件柜中的数据进行增加、删除、修改、查找。
注意:数据库指的是管理数据的软件,而不是存储数据的仓库。
3、数据库的类型
层次型数据库:层次模型就是以"上下级"的层次关系来组织数据的一种方式,层次模式的数据结构看起来就像是一棵树。
网状型数据库:把每个数据节点和其他的数据节点连接起来,它的数据结构看起来就像是城市之间的路网。
关系型数据库:把数据看作一个二维表,任何数据都可以通过列号+行号进行定位,它的数据模型看起来就像是一张Excel表。
随着时间的推移和市场竞争,最终基于关系模型的数据获得了绝对的市场份额,因为相比层次型、网状型数据库,关系型数据库的理解和使用最简单。
4、目前主流的关系型数据库
商用数据库,例如:OceanBase,Oracle,SQL Server,DB2
开源数据库,例如:MySQL、MariaDB、PostgreSQL
桌面数据库,以微软的Access为代表,适合桌面的应用程序用。
嵌入式数据库,以SQLite为代表,适合于手机、平板、消费类电子使用。
内存数据库,以Readis为代表,特别适合网站和App的高并发,这种数据库在运行起来后就会把大量数据从磁盘加载内存中,因此访问速度特别快,但由于内存资源有限不可能存储大量数据,只适合把经常访问的或对访问时间有要求数据存储到该数据库中,适合与其它数据库配合使用。
二、SQL语言介绍
1、什么是SQL语言
SQL是结构化查询语言的缩写(Structured Query Language)简称SQL,这是一种专门用来访问的操作数据库的语言,主要用来对数据库中的数据进行添加、删除、修改、查询等操作,还可以对数据库进行管理和维护。
所有的数据库基本都支持SQL语言,所以我们通过学习SQL一种语言就可以方便的操作各种数据库。
ANSI组织定义了统一的SQL语言标准,但不同的数据库对标准SQL支持程序不同,大部分数据库都在标准SQL的基础上进行了扩展,如果只使用标准的SQL语句,理论上所有的数据库都支持,但数据使用了某个数据库的扩展语句,换一个数据库可能就不能执行了。例如:Oralce数据库对SQL的扩展叫PL/SQL而微软对SQL的扩展叫T-SQL。
我们把各个数据库对SQL的扩展功能称之为"方言"。
注意:SQL语言对大小不敏感,它的关键字大小写都可以,但是数据库名、表名、字段名等大小写是区分的。
2、SQL的语句分类
数据控制语言:用于对权限进行授予和回收操作。
数据定义语言:用于建立、修改、删除数据库对象。
数据操作语言:用于添加、删除、修改数据表中的数据。
数据查询语言:用于查询数据库的数据,只有一条语句,但也是SQL最常用的语句。
事务控制语言:用来维护数据的一致性。
3、SQL语言的数据类型
主要有三大类数据类型:数值、字符、日期,这三种类型是在编程语言的基础上再进行扩展的。
TINYINT | 1byte |
---|---|
SMALLINT | 2byte |
INT | 4byte |
BIGINT | 8byte |
FLOAT | 4byte |
DOUBLE | 8byte |
TIME | 3byte |
DATE | 3byte |
CHAR | 0~255byte |
VARCHAR | 0~65535byte |
三、访问数据库
1、本地访问
mysql -u用户名 -p密码 方便但有泄漏密码的风险
mysql -u用户 -p 隐藏密码的输入,建议使用此方法
2、远程登录访问
先使用 telnet ip 或者 ssh user@ip 登录到安装MySQL的服务器。
然后再使用mysql -u用户名 -p登录。
注意:安装宝塔面板时,安装了MySQL数据库,可以继续使用。
3、客户端登录
参考数据库环境搭建
4、使用编程语言连接
使用libmysqlclient-dev库+MySQL C API,后续讲解。
注意:登录后要选择数据库。
四、数据控制语言
grant <权限> on <对象> to <用户>; 授予权限
revoke <权限> on <对象> from <户名>; 回收权限
flush privileges; 当权限发生改变后,要进行刷新
五、数据定义语言
1、创建表
create table 表名(字段名 数据类型,...);
create table Student(
name char(20),
sex char,
id int);
show tables; 可以查看数据中所有的表。
desc 表名; 可以查看表的结构。
2、修改表
a、修改表名
rename table 旧表名 to 新表名;
rename table Student to student;
b、增加列
alter table 表名 add(字段名 数据类型);
alter table student add(id int);
c、删除列
alter table 表名 drop 字段名;
alter table student drop addr;
注意:删除列时,数据也会随之删除。
d、修改列类型
alter table 表名 modify 字段名 新类型;
alter table student modify id char(10);
e、修改列名
alter table 表名 change 旧字段名 新字段名 新类型;
alter table student change id stu_id char(10);
3、删除表
a、删除表数据,保留表结构
truncate 表名;
b、删除表数据和表结构
drop table 表名;