4.MySQL(数据模型,SQL简介,DDL,DML)

发布时间 2023-11-24 17:53:53作者: 回家太晚太悲催

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);
注意事项:
  1. 插入数据时,指定的字段顺序需要与值的顺序是一一对应的;
  2. 字符串和日期型数据应该包含在引号中;
  3. 插入的数据大小,应该在字段的规定范围内;
DML(UPDATE):
update语法:
  • 修改数据:update 表名 set 字段名1 = 值1,字段名2 = 值2,...[where 条件];
注意实现:
  • 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据;
DML(DELETE):
delete语法:
  • 删除数据:delete from 表名 [where 条件];
注意事项:
  1. DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据;
  2. DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL);