前言:
数据库是用来储存和管理各项数据的,比较起文件存储的不安全性和数据查询和管理的不便性,数据库则更能有效的管理数据。数据库的存储介质是在磁盘上和内存上的,数据库也可以提供远程服务,通过远程连接来使用数据库。这就是数据库服务器。
MySQL服务器介绍
关系型数据库与非关系型数据库
关系型数据库:
对于关系型数据库,通常是使用了关系模型来组织数据,关系模型指的是一种二维表格模型,关系型数据库就是基于二维表及之间的联系所组成的一个数据组织。
而对于MySQL而言,是属于关系型数据库,它基于二维表的实现。
上图对应的每一列都是数据库中表的属性,而数据行对应的是每一条的记录,将记录一一对应在表中的属性上,形成一条条的记录存储在表中。
MySQL就是利用列与行的关系来操作表,使得存储查询新增删除变得方便起来。
关系型数据库一般用于业务方面的OLTP系统。
非关系型数据库:
一般不基于SQL语法的实现,更多是基于键值对(Key—Value)、文档型、图形操作。
一般用于数据的缓存,统计分析的OLAP系统等。
SQL分类
对于MySQL而言,管理数据库也需要一种叫做SQL的语言,用这个语言来管理服务器的日常规范。
SQL语言指令通常分为以下几种:
(DDL)定义语言:create(增加库表),drop(删除库表),alter(修改库表)
(DML)操纵语言:insert(添加数据),delete(删除数据),update(修改数据),select(查询数据)
(DCL)控制语言:grant,revoke,commit
常用数据类型
数值类:
注:decimal一般可用于金额数的准确表达
字符串类:
日期类:
注:date对应年月日,time对应时分秒。
库的操作:
所有操作最后都以‘ ;’结尾
显示所有数据库:
语法:show databases;
创建库:
语法:create database [if not exists] 库名 [DEFAULT] [DEFAULT]
注:DEFAULT: CHARACTER SET 指定字符集
DEFAULT: COLLATE 指定排序规则
if not exists: 由于库的名字不能重复,所以该语法代表检验当前若不存在这个库名,则创建
如创建一个字符集为Utf8mb4的数据库test_blog:
删除库:
语法:drop databse [if exists] 库名;
使用库:
语法:use 库名;
注:使用数据库的数据表时必须先use 当前数据表所在的数据库名。
查看当前选择库:
语法:select databse();
表的操作:
需要先选择好数据库后才能操作表!!!
显示所有表:
语法:show tables;
可以看到,当前没有任何表,我们可以先创建完表之后用此语法检验是否创建成功。
创建表:
语法:create table [if not exists] 表名(
属性(列)名 类型,
属性(列)名 类型,
.......
属性(列)名 类型
);
注:最后一个属性(列)后面不用逗号,可以用 comment '注释内容...' 来进行注释,在逗号之前。
例:创建一个学生表student,属性为 姓名 班级 语文成绩 数学成绩 英语成绩:
可以看到,表创建成功,我们来检测一下:
查看表结构:
语法:desc 表名;
创建完表,我们还得看到表的属性:
删除表:
语法:drop table [if exists] 表名;
SQL的其他基础操作:
查看mysql帮助:\?;
可以了解mysql提供的服务
查看警告信息:show warnings;
报错时,可以查看为什么报错,如创建俩个名字一样的数据库:
查看数据库服务器默认编码集:show variables like '%character%';
查看版本号:select version();