MYSQL了解:MYSQL采用C/S的客户端服务器模型,客户端通过连接服务器进行数据的增删改查操作;MYSQL服务段模型采用IO复用+线程池来定义。
SQL语句划分:
DDL(data definition language):数据定义语言,定义了数据库、表、列、索引等数据库对象的定义。常用的关键字:create、drop、alter等。
DML(data manipulation language):数据操作语言,用于添加、删除、查找、更改数据库。常用的关键字:insert、delete、update和select等。
DCL(data control language):数据控制语句,用户控制不同数据段的直接许可和访问级别的语句,这些语句定义了数据库、表、字段、用户访问的权限和安全级别。主要关键字:grant、remove。
数据库范式
范式的好处主要归纳为三点:
(1)减少数据冗余(主要特点)
(2)消除异常——>插入异常、删除异常、更新异常
(3)让数据库更加和谐
范式介绍:
第一范式(1NF):每一列都保持原子特性。(即每一列均不能重复,一个字段只存储一项信息)
列是基本数据项,不能进行分割,否则设置成一对多的关系。
注意:不符合第一范式不能称为关系型数据库。
第二范式:属性完全依赖于主键(任一字段都只能依赖于表中的同一个字段)——>消除部分依赖
非主属性应该完全依赖于主关键字,若不依赖于主关键字,应该拆分成新的主体,设计成一对多的关系。
码(具有唯一性的属性),一个表里存在多个码,选取一个称之为主键,其他的称为候选键。
第三范式:属性不依赖于其他非主属性——>消除依赖传递
满足第二范式前提,若某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这种被称为传递依赖于主属性。
关于上面三种的范式,https://www.cnblogs.com/liuchaogege/p/4655129.html中有简单明了的示例可以说明。
范式越高,拆分的表会越多,表越多带来的问题是:(1)查询是需要连接多个表,增加查询的复杂度(2)查询时需要连接多个表,降低了查询的性能。
基本数据类型
MYSQL的数据类型包括:整数类型、浮点类型、定点数类型、日期和时间类型、字符串类型和二进制数据类型。
(1)整数类型
MYSQL支持的数据类型的名称后面指定该类型的显示宽度。基本形式如下:数据类型(显示宽度)
eg:INT(4),指定INT类型的显示宽度为4,在不指定宽度的情况下,每个整数类型都有默认的显示宽度。
整数类型中还有一个AUTO_INTREMENT属性,该属性可以使字段成为自增字段。具有该属性的字段,在插入新纪录时,该字段的值都会在前一条记录的基础上加1。
(2)浮点数类型和定点数类型
MYSQL中使用这两种类型来表示小数。
(3)日期和时间类型
(4)字符串类型
字符串类型包括:CHAR、VARCHAR、BLOB、TEXT、ENUX和SET。下面主要介绍一下CHAR和VARCHAR类型。
在创建表时都指定了最大长度,基本形式如下:字符串类型(M)。
CHAR类型的长度是固定的,在创建表时就指定了。其长度可以是0~255的任意值。
VARCHAR类型的长度是可变的,在创建表时指定了最大长度。定义时,其值可以取0~65535间的任意数。在指定了VARCHAR类型的最大值后,其长度可以在0到最大值之间。在最大值范围内,使用多少分配多少。VARCHAR实际占用的空间是字符串的实际长度+1。这样,可以有效的节约系统资源。
(5)二进制类型
在数据库中存储二进制数据的数据类型。二进制类型包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMSLOB和LONGBLOB。
SQL数据库操作
(1)连接数据库
命令:MYSQL -u用户名 -p密码;
(2)断开数据库
命令:exit;
(3)查看存在的数据库
命令:show databases;
(4)创建数据库
命令:create database 数据库名;
(5)选择数据库
命令:use 数据库名;
(6)查看数据库下的表
命令:show tables;
(7)删除数据库
命令:drop database 数据库名;
(8)显示数据库
命令:show databases;