MySQL(数据模型,SQL简介,DDL,DML)
概述:
-
数据库:DataBase(DB),是存储和管理数据的仓库;
-
数据库管理系统:DataBase Management System(DBMS),操纵和管理数据库的大型软件;
-
SQL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准;
-
MySQL是一个关系型数据库管理系统;
-
登录数据库:
mysql [-h数据库服务器IP地址 -P端口号] -u用户名 -p密码
MySQL数据模型:
- 关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库;
特点:
- 使用表存储数据,格式统一,便于维护;
- 使用SQL语言操作,标准统一,使用方便,可用于复杂查询;
SQL简介:
- SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准;
通用语法:
- SQL语句可以单行或多行书写,以分号结尾;
- SQL语句可以使用空格/缩进来增强语句的可读性;
- MySQL数据库的SQL语句不分大小写;
- 注释:
- 单行注释:--注释内容 或 # 注释内容(MySQL特有);
- 多行注释:/* 注释内容 */;
SQL分类:
- SQL语句通常被分为四大类:
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库、表、字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据库查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
DDL:
DDL(数据库操作):
查询:
- 查询所有数据库:show databases;
- 查询当前数据库:select database();
使用:
- 使用数据库:use 数据库名;
创建:
- 创建数据库:create database [if not exists] 数据库名;
删除:
- 删除数据库:drop database [if exists] 数据库名;
注意实现:
- 上述语法中的database,也可以替换成schema。如:create schema db01;
DDL(表操作):
创建:
create table 表名(
字段1 字段类型 [约束] [comment 字段1注释],
......
字段n 字段类型 [约束] [comment 字段n注释]
)[comment 表注释];
约束:
- 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据;
- 目的:保证数据库中数据的正确性、有效性和完整性;
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 限制该字段值不能为null | not null |
唯一约束 | 保证字段的所有数据都是唯一、不重复的 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key(auto_increment自增) |
默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
常用数据类型:
数值类型:
类型 | 大小(byte) | 有符合(SIGNED范围) | 无符号(UNSIGNED范围) | 备注 |
---|---|---|---|---|
tinyint | 1 | (-128,127) | (0,255) | |
int | 4 | (-2147483648,2147483647) | (0,4294967295) | |
bigint | 8 | (-263,263-1) | (0,2^64-1) | |
double | 8 | double(5,2): 5表示整个数字长度,2表示小数位个数 | ||
decimal |
字符串类型:
类型 | 大小 | 描述 | 优缺点 |
---|---|---|---|
char | 0-255 bytes | 定长字符串 | 性能高, 浪费空间(空间换时间) |
varchar | 0-65535 bytes | 变长字符串 | 性能低, 节省空间(时间换空间) |
日期类型:
类型 | 大小(byte) | 范围 | 格式 | 描述 |
---|---|---|---|---|
date | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
datetime | 8 | 1000-01-01 00:00:00至9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
DML:
DML(INSERT):
insert语法:
- 指定字段添加数据:insert into 表名(字段名1,字段名2) values(值1,值2);
- 全部字段添加数据:insert into 表名 values(值1,值2);
- 批量添加数据(指定字段):insert into 表名(字段名1,字段名2) values(值1,值2),(值1,值2);
- 批量添加数据(全部字段):insert into 表名 values(值1,值2),(值1,值2);
注意事项:
- 插入数据时,指定的字段顺序需要与值的顺序是一一对应的;
- 字符串和日期型数据应该包含在引号中;
- 插入的数据大小,应该在字段的规定范围内;
DML(UPDATE):
update语法:
- 修改数据:update 表名 set 字段名1 = 值1,字段名2 = 值2,...[where 条件];
注意实现:
- 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据;
DML(DELETE):
delete语法:
- 删除数据:delete from 表名 [where 条件];
注意事项:
- DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据;
- DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL);