### 一:MySQL操作数据
#### 1:数据库执行流程
客户端工具-----脚本指令-----数据库服务软件【数据处理】-----磁盘
#### 2:数据库语言
SQL PLSQL
统一【基础语法上,允许有一些特色】
**分类:**
DDL:数据定义
DML:数据管理
DCL:数据控制
TCL:事务处理
#### 3:数据库的操作
**①查看数据库:**
`show databases;`
`select database();`
`use 数据库名;`
**②创建数据库:**
`create database 【if not exist】数据库名;`
【if not exist】:表示如果数据不存子才创建,存在就不创建,并且不报错
**③删除数据库:**
`drop database【if exist】数据库名;`
【if exist】:表示如果没有数据库,就不删除,并且不报错
*备注:如果没有加【if exist】,出现的报错是Can't drop database 'work'; database doesn't exist*
#### 4:数据表的操作
##### **①数据表的概念**
数据库软件---数据库---数据表
数据库中是以表格的方式进行数据管理
##### **②数据表的创建**
`create 【temporary】table 表名{`
`字段名 数据类型(长度)约束,`
`字段名2 数据类型(长度)约束,`
`……`
`【约束条件定义,主外键】`
`}【engine=存储引擎】;`
*备注:*
*表名:表的名字*
*字段名:表格的表头,表示每一列信息所属*
*数据类型:用于指定当前字段用于存储的数据类型*
*长度:指定了当前列存储数据的范围*
*约束:用来约束和限制当前列的数据操作,规定当前列中数据哪些是不允许*
*约束条件:约束除了在字段后面定义,有些约束条件是独立定义的,例如主外键*
*存储引擎:可以给每一个表指定存储引擎*
###### **A:命名(命名规范参照Java标识符)**
**表名:**
`tab _ 实际意义名字 / _ 实际意义名字`
实际意义名字:见其名,知其表中的存储信息意义(不建议使用拼音)
**字段命名:**
`表名缩写 _ 有意义的字段名`
缩写:一般是表名的首字母,如果首字母相同,就取两位,以此类推
*建议:所有的名称都小写*
###### **B:数据类型**
整数类型:
**tinyint(len)**:占一个字节
**smallint(len)**:占两个字节
**int 或 integer(len)**:四字节 (常用)一般是可变的
**bigint(len)**:占八字节
*备注:以上类型范围都是动态的,可以限制*
小数类型:长度指定范围
浮点数:
**float(m,d)**:四字节
**double(m,d)**:八字节
定点数:
**decimal(m,d)**:
*备注:m:表示数据总位数;d:表示保留的小数位数*
***浮点数**:常见的小数,没有给定长度(m,d)时,默认值,和Java一样默认长度和小数位数*
***定点数**:类似于Java中bigdecimal,数据库中以实际字符串的方式存储数据*
*对比:*
***相同点**:都是用来定义小数,decimal与double类似*
*超出小数范围的数据存入,自动四舍五入*
***不同点**:浮点型,数据类型,精度比较容易受影响*
*定点类型不容易受影响,涉及精度要求很高的一般选择定点类型*
*一般推荐double或declmal*
###### **C:字符串**
char(n) 0~255个字符 固定长度字符串
varchar(n) 0~65535个字符 可变长度字符串
text 0~65535个字符 可变长度文本
tinytext 0~255个字符 可变长度文本
longtext 0~
*备注:*
*固定长度:表示定义长度是多少,开辟的空间就是多少*
*可变长度:表示存储的值的长度是多少,开辟的空间就是多少*
*字符串和文本:文本比字符串更加丰富,一般推荐varchar(字符串),text(文本)*
*字符串:存储的时候,定义的长度是多少,就只能存储多少字符*
*文本:定义长度,不需要指定长度*
###### **D:时间日期的存储**
data yyyy-MM-dd (推荐)
time hh:mm:ss (推荐)
datetime yyyy-MM-dd hh:mm:ss
timestamp yyyy-MM-dd hh:mm:ss.毫秒 (推荐)
year yyyy / yy
###### **E:字节数据的存储**
blob 0~65535字节
longblob 2^32-1
###### **F:枚举类型**
enum(元素1,元素2,元素3)
限制当前字段能存放的数据,如果不写,默认为第一个值
set(元素1,元素2)
###### **G:json数据**
5.7版本以后,支持存储json字符串数据
查看表中的数据
`select * from 表名`
添加数据
`insert into 表名(字段1,字段2,……)values(值1,值2)`