数据库基础-01Mysql库和表的操作
1.数据库基础
1.1几个定义
数据库:一般指的是,在磁盘或者内存中存储的特定结构组织的数据(将来在磁盘上存储的一套数据库方案)
mysql:数据库服务的客户端
mysqld:数据库服务的服务器端
mysql本质:基于C(mysql)S(mysqld)模式的一种网络服务
1.2用文件存储就好了为什么还要有数据库来存储呢
虽然一般的文件确实提供了数据存储功能,但是在用户角度,文件并没有提供很好的数据管理能力
而数据库的本质是对数据内容存储提供了一套解决方案。
文件保存数据的缺点:
- 安全性问题
- 不利于数据的查询和管理
- 不利于存储海量数据
- 在程序控制中不方便
1.3示意图
数据库本质其实也是文件,只不过这些文件并不由程序员直接操作,而是由数据库服务(mysqld)帮助我们进行操作。

建立数据库,本质就是在Linux下创建一个目录;在数据库内建立表,本质就是在Linux目录下建立文件。而这两个操作都是由mysqld帮助我们做的。
1.4Mysql架构
服务器,数据库和表的关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库
- 为保存应用中实体的数据,一般会在数据库中创建多个表,来保存数据

1.5SQL分类
DDL:(data definition language)数据定义语言 :用来维护存储数据的结构(eg:create,drop,alter)
DML:(data manipulation language)数据操作语言:增删查改(eg:insert,delete,update)
DCL:(data control language) 数据控制语言:权限管理和事务
1.6存储引擎
存储引擎:数据库管理系统如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法。
Mysql的核心就是插件式存储引擎,支持多种存储引擎
2.库的操作
2.1创建数据库
create database d1;//创建一个数据库名为d1的数据库
create database d2 charset=utf8;//创建一个使用utf8字符集的d2数据库
create database d3 charset=utf8 collate utf8_general_ci;//创建一个使用utf8字符集,并带校验规则的d3数据库
show databases;//展示现有数据库2.2字符集和校验规则
创建数据库的时候有两个编码集,存数据是用什么编码方式,取数据时必须用同样的编码方式
//查看系统默认字符集以及校验规则
show variables like 'character_set_database';//数据库编码集,即写入的时候
show veriables like 'collation_database';//数据库校验集,即读取的时候
//查看数据库支持的字符集
show charset;
//查看字符集支持的字符集校验规则
show collation;_general_ci不区分大小写,_bin区分大小写|(eg:utf8_general_ci;utf8_bin)
2.3修改数据库
//显示创建语句
show create database 数据库名
对数据库的修改主要是修改数据库的字符集,如下:
alter database d1 charset=gbk;2.4数据库的删除
drop database 数据库名字//但是实际中很少直接删除一个数据库删除之后对应的数据库文件夹被删除,里面的数据全部被删除,执行此操作要慎重!!
3.表的操作
3.1创建表
不同的存储引擎,创建的表的文件不一样。
create table t1(列名 数据类型,列名 数据类型,
)character set 字符集 collate 校验规则 engine 存储引擎;
//查看表结构
desc 表名
3.2修改表
这里的修改指的是新的覆盖旧的
//在t1中添加两条记录
insert into t1 values(1,‘a’,'2004-01-01');
insert into t1 values(2,‘b’,'2004-01-01');
//添加一个新的字段,用于保存图片路径
alter table t1 add assets varchar(100) comment '图片路径' after birthday;
//修改name 字段,将其长度改为60
alter table t1 modify name varchar(60);
//删除id列
alter table t1 drop id;
//修改表名为employee
alter table t1 rename to employee;//to可以省略
3.3删除表
drop table t1;
