1.数据库介绍
数据库:分为关系型数据库和非关系型数据库,
MySQL概述:免费的中小型数据库管理系统 ,操作关系型数据库的一种,
关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库,
二维表:由行和列组成的表,
- 优点:格式统一,便于维护
- 使用SQL语句操语言,使用方便,可用于复杂查找
SQL简介:操作关系型数据库的编程语言,定义操作所以关系型数据库的统一标准
通用语法:
- 可以书写多行,以分号结尾,
- 可以使用空格/缩进来增强语句的可读性,
- 语句不区分大小写,
- 注释,单行注释:-- 注释内容,(--与注释内容中间有一个空格),# 注释内容(同上) 多行注释:/*注释内容*/
SQL语句分类:DDL,DML,DQL,DCL
- DDL:数据定义语言,用来创建数据库对象,数据库,表,字段(数据库中表列的名称)
- DML:数据操作语言,用来对数据库表中的数据进行增删改,
- DQL:数据查询语言,用来对数据库表中的数据进行查询,
- DCL:数据控制语言,用来创建数据库用户,控制用户的权限,
项目开发流程:
阅读需求+文档,1.设计数据库,2.数据库操作,3.数据库优化
2.数据库设计(DDL操作)
1.数据库操作
查询所以数据库:show database;
查询当前使用的数据库:select database();
创建数据库:create database [if not exists] 数据库名(中括号中的为可选,下同),
使用数据库:use 数据库名,
删除数据库:drop database [if exists] 数据库名,
数据库操作软件:SQLyog,Navicat,Datagrip,
2.表操作
创建表
create table 表名(
字段1 字段类型 [约束] [comment 字段注释],
字段2 字段类型 [约束] [comment 字段注释],
....
)[comment 表注释];
约束条件
| **约束** | **描述** | **关键字** |
| -------- | ------------------------------------------------| ----------- |
| 非空约束 | 限制该字段值不能为null | not null |
| 唯一约束 | 保证字段的所有数据都是唯一、不重复的 | unique |
| 主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
| 默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
| 外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
数据类型
1.数值类型
| 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
| ----------- | ------ | ----------------------------------------------------- | ---------------------------------------------------------- | ------------------ |
| TINYINT | 1byte | (-128,127) | (0,255) | 小整数值 |
| SMALLINT | 2bytes | (-32768,32767) | (0,65535) | 大整数值 |
| MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
| INT/INTEGER | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
| BIGINT | 8bytes | (-2^63,2^63-1) | (0,2^64-1) | 极大整数值 |
| FLOAT | 4bytes | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 |
| DOUBLE | 8bytes | (-1.7976931348623157 E+308,1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308) | 双精度浮点数值 |
| DECIMAL | | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
2.字符串类型
| 类型 | 大小 | 描述 |
| ---------- | --------------------- | ---------------------------- |
| CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
| VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) |
| TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
| TEXT | 0-65 535 bytes | 长文本数据 |
| MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
| MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
| LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
| LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
3.时间类型
| 类型 | 大小 | 范围 | 格式 | 描述 |
| --------- | ---- | ------------------------------------------ | ------------------- | ------------------------ |
| DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
| TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 |
| YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
| DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
查询表
show tables; -- 查询所以表
desc 表名; -- 查询表结构
show create table 表名; -- 查询建表语句
修改表
-- 添加字段
alter table 表名 add 字段名 字段类型 [comment 注释] [约束];
-- 修改字段数据类型
alter table 表名 modify 字段名 新数据类型;
-- 修改整个字段
alter table 表名 change 旧字段名 新字段名 字段类型 [comment 注释] [约束];
-- 删除字段
alter table 表名 drop 字段名;
-- 修改表名
rename table 旧表名 to 新表名;
-- 删除表
drop table [if exists] 表名;
3.数据库操作(DML操作)
增加数据:insert
修改数据:update
删除数据:delete
-- 向指定字段添加数据
insert into 表名 (字段名1,字段名2,....) values (值1,值2,....);
-- 向全部字段添加数据
insert into 表名 values (值1,值2,....);
-- 向指定字段批量添加数据
insert into 表名 (字段名1,字段名2,....)
values (值1,值2,....),
values (值1,值2,....),
...;
-- 向全部字段批量添加数据
insert into 表名 values (值1,值2,....),(值1,值2,....),....;
-- 修改数据 没有where条件则修改表中所以数据
update 表名 set 字段名1=值1,字段名1=值1,....[where 条件];
注意:在修改数据时,一般需要同时修改update_time,将其修改为当前操作时间
-- 删除数据 如果没有where条件,则删除整张表数据
delete from 表名 [where 条件];
注意:delete 不能删除某个字段的数据