上一节我们已经安装好了数据库,那么我们这节来认识一下什么是数据库,或者说是从另一个层面理解什么叫数据库
数据库总得来说就是一种服务,用户通过客户端(比如Linux的命令)去创建若干目录和文件,所以他其实就是一个中间层帮助我们去管理文件。
一、什么是数据库
为什么要有数据库
在操作系统中我们知道所有的东西都可以永文件的形式来描述,所有就存在了文件管理。已经有了文件管理了,为什么还要有数据库呢,所以这里不得不说文件管理的缺点
文件保存数据有以下几个缺点: 1.文件的安全性问题 2.文件不利于数据查询和管理 3.文件不利于存储海量数据 4.文件在程序中控制不方便 数据库存储介质: 磁盘 内存
为了解决以上的问题则开发出了 MySQL
数据库是怎么管理文件的
如果我们用文件去管理的话,我们必须要写很多的fopen,fclose等一系列文件操作,非常不方便,所以就想出来如果有一个东西可以管理我们存在磁盘内部的数据就好啦,所以数据库其实是一个管理者,数据库还是要自己去访问文件的
a、数据库也要用文件的方式进行数据保存的
b、数据库中直接和文件打交道的是数据库的存储引擎
上图是数据库的工作方式,用户通过客户端窗口(Linux:命令行或者一些可视化的工具),管理系统接收到客户端传来的指令解析过后再去磁盘上进行操作,访问查询或者其他的操作
访问远端的数据库也是同样的,只不过这个管理系统是一个服务器,用户的指令由网络传输,送给服务器解析再去执行
数据库或者MySQL是属于什么层的?
答:应用层,他会直接或者间接去访问OS的文件接口
MySQL框架
很清楚的看到这里分成两部分connectors和MySQL Server,前者就是客户端,后者就是服务端,服务端就是输入命令行指令传给服务器,服务器中的MySQL会解析指令然后再去通过所指定的引擎去操作文件/磁盘。途中有个插头的图画,表示这里的引擎可以随意更换,我们常用的就是InnoDB和MyISAM这两个,我们可以通过show engines来查看所有的引擎
MySQL的核心就是插件式存储引擎,支持多种存储引擎
SQL类
DDL【data definition language】 数据定义语言,用来维护存储数据的结构 代表指令: create, drop, alter
DML【data manipulation language】 数据操纵语言,用来对数据进行操作 代表指令: insert,delete,update ——DML中又单独分了一个DQL,数据查询语言,代表指令: select
DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务 代表指令: grant,revoke,commit
二、初识数据库操作
注:数据库命令行对大小写并不敏感,但是有些地方大小写还是要区分的
1、创建数据库:创建数据库本质就是在Linux下创建一个目录
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 说明: 大写的表示关键字 []是可选项 CHARACTER SET: 指定数据库采用的字符集 COLLATE: 指定数据库字符集的校验规则(1)举例:创建三个数据库db1、db2、db3
db1,没有指定字符集和校验规则时,系统默认字符集utf8,校验规则是:utf8_general_ci;
db2,指定了字符集为utf8,校验规则为默认
db3,指定了字符集utf8 和 校验规则 utf_general_ci
2、字符集和校验规则
(1)查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
(2)查看数据库支持的字符集
show charset;
(3)查看数据库支持的字符集校验规则
show collation;
(4)校验规则对数据库的影响
创建第一个数据库test1 utf8_general_ci 不区分大小写
创建第二个数据库 字符集校验规则utf8_bin 是区分大小写的
对两个数据库内数据查询:不区分大小写会把大小写当成同一个
对两个数据库内数据排序:
很明显校验规则不同,最后的结果也不同
3.查看创建语句
show create database db_name;
说明:
(1)MySQL 建议我们关键字使用大写,但是不是必须的。
(2)数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
(3) 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
4.查看所有数据库
show databases;
注意这里有加s
5.选择使用数据库
use "database_name"; 相当于双击该目录进入到目录中
7.修改数据库
对于数据库的修改主要指的是修改数据库的字符集,校验规则。
一般来说我们是不推荐修改数据库里的内容,因为十分麻烦所以在创建数据库和数据前要事先和产品沟通好需要哪些项怎样的数据。很有可能更改一个数据导致程序跑不起了
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...] alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
这里我们将字符集utf8改成gbk
8.数据库删除:不要随意删除数据库
DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果: (1)数据库内部看不到对应的数据库
(2)对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
9.查看连接情况
show processlist
如果有多人连接的话就会出现多个,如果发现自己的数据库比较慢的话,就有可能被入侵了用这种方式来查询
三、表操作
1.表操作
CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明: filed表示列名 datatype表示列的类型 character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准 collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
2.插入数据
insert into 'table_name' (数据名称 数据类型,数据名 数据类型 .....);
3.查看表结构
desc table_name;
4.查看数据表内容
select *from 'table_name';
这里一行我们称为一条记录,一列称为数据
5.查看所有表
show tables;
6.修改表
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...); ALTER TABLE tablename MODIFY (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename DROP (column);
添加一个新字段
修改一个字段:alter table table_name modify 字段 数据类型;
删除一个字段
注意:删除字段,字段及其对应的列数据都会没了
修改表名
7.删除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
来源地址:https://blog.csdn.net/weixin_68644350/article/details/129480696