Mysql入门

Mysql入门01

一、什么是数据库?

  • 数据库: Data Base (DB),是存储和管理数据的仓库。
  • 数据库管理系统: Data Base Management System (DBMS),操纵和管理数据库的大型软件。
  • SQL: Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

二、Mysql数据模型

  • 关系型数据库(RDBMS) :建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

特点:

  • 使用表存储数据,格式统一,便于维护。
  • 使用SQL语言操作,标准统一,使用方便,可用于复杂查询。

三、SQL简介

  • SQL :一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

1、通用语法:

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL语句可以使用空格 / 缩进来增强语句的可读性。
  • Mysql数据库的SQL语句不区分大小写。
  • 注释:
    1. 单行注释:-- 注释内容# 注释内容
    2. 多行注释:/* 注释内容 */

2、SQL语句通常被分为四大类:

分类 全称 说明
DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

四、SQL语句

1、DDL

​ DDL英文全称是Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表)。

1.1数据库操作
1.11查询
  • 查询所有数据库:show databases;
  • 查询当前数据库:select database();
1.12使用
  • 使用数据库:use 数据库名;
1.13创建
  • 创建数据库:create database [ if not exists ] 数据库名;
1.14删除
  • 删除数据库:drop database [ if exists ] 数据库名;
1.15注意事项
  • 上述语法中的database,也可以替换成schema
1.2表的操作
1.21创建
mysql 复制代码
create table 表名(
	字段1 字段类型 [约束] [comment 字段1注释],
	......
	字段n 字段类型 [约束] [comment 字段n注释]
) [comment 表注释];
1.22约束
  • 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
  • 目的:保证数据库中的数据的正确性、有效性和完整性。
约束 描述 关键字
非空约束 限制该字段值不能为null not null
唯一约束 保证字段的所有数据都是唯一、不重复的 unique
主键约束 主键是一行数据的唯一标识,要求非空且唯一 primary key (auto_ increment自增)
默认约束 保存数据时,如果未指定该字段值,则采用默认值 default
外键约束 让两张表的数据建立连接,保证数据的一致性和完整性 foreign key
1.3三种数据类型

Mysql中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

1.31. 数值类型

用于存储数字,包括整数和浮点数。常见的数值类型有:

  • 整数类型 :如tinyintIntsmallintbigint,用于存储没有小数的整数。
  • 浮点数类型 :如floatdoubledecimal,用于存储包含小数的数值。
1.32. 字符串类型

用于存储文本数据,包括定长和变长字符串。常见的字符串类型有:

  • 定长字符串 :如char,用于存储固定长度的字符串。
  • 变长字符串 :例如varchar,用于仓储可变长度的字符串。
  • 大文本 :如text,用于存储大量文本数据。
1.33. 日期时间类型

用于存储日期和时间信息。常见的日期时间类型有:

  • 日期 :例如date,只存储日期(年月日)。
  • 时间 :如time,仅存储时间。
  • 年份值 :如year,仅存储年份值。
  • 日期时间 :如datetimetimestamp,同时存储日期和时间。
1.4DDL的表操作
1.41查询
  • 查询当前数据库所有表:show tables;
  • 查询表结构:desc 表名;
  • 查询建表语句:show create table 表名;
1.42修改
  • 添加字段:alter table 表名 add 字段名 类型(长度)[comment 注释] [约束];
  • 修改字段类型:alter table 表名 modify 字段名 新数据类型(长度);
  • 修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
  • 删除字段:alter table 表名 drop column 字段名;
  • 修改表名:rename table 表名 to 新表名;

2、DML

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

2.1添加数据(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...);
mysql 复制代码
-- DML : 插入数据 - insert
-- 1、 为 tb_emp 表的username, name, gender 字段插入值
insert into tb_emp(username, name, gender, create_time, update_time) values ('wuji', '张无忌', 1, now(), now());

-- 2、 为 tb_emp 的所有字段插入值
insert into tb_emp(id, Username, password, name, gender, image, job, entrydata, create_time, update_time)
            values (null, 'zhiruo', '123', '周芷若', 2, '1.jpg', 1, '2024-10-03', now(), now());

insert into tb_emp values (null, 'zhiruo01', '123', '周芷若', 2, '1.jpg', 1, '2024-10-03', now(), now());

-- 3、 批量为 tb_emp 的username, name, gender 字段插入数据
insert into tb_emp (username, name, gender, create_time, update_time) values ('guojing', '郭靖', 1, now(), now()),
                                                                             ('yangguo', '杨过', 1, now(), now());

注意事项

  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
  • 字符串和日期型数据应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。
2.2修改数据(update)

修改数据语法: update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , ...[where 条件];

mysql 复制代码
-- DML : 更新数据 - update
-- 1、 将 tb_emp 表的ID为1的员工 姓名name修改为'张三'
update tb_emp set name = '张三', update_time = now() where id = 1;

-- 2、 将 tb_emp 表的所有员工入职时间更新为 '2023-10-03'
update tb_emp set entrydata = '2023-10-03', update_time = now();

注意事项

  • 修改语句的条件可有可无,如果没有条件,则会修改整张表的所有数据。
2.3删除数据(delete)

删除数据语法: delete from 表名 [ where 条件];

mysql 复制代码
-- DML : 删除数据 - delete
-- 1、 删除 tb_emp 表中 ID为5的员工
delete from tb_emp where id = 5;

-- 2、 删除 tb_emp 表中的所有员工
delete from tb_emp;
相关推荐
Leo18720 小时前
MySQL 回表(Back to Table)详解
数据库·mysql
遇见火星20 小时前
MySQL 8.0复制架构主从自动切换脚本
mysql·adb·架构·mysql8.0·mysql主从
不知江月待何人..20 小时前
MySQL服务无法启动问题
数据库·mysql
李少兄21 小时前
一文搞懂什么是关系型数据库?什么是非关系型数据库?
数据库·redis·mysql·mongodb·nosql
会开花的二叉树21 小时前
即时通讯系统核心模块实现
数据库·mysql·elasticsearch
四谎真好看1 天前
MySQL 学习笔记(运维篇1)
运维·数据库·笔记·学习·mysql·学习笔记
遇见火星1 天前
MySQL 5.7/8.0 物理备份实战:XtraBackup 全量+增量+验证+恢复
数据库·mysql·adb·xtrabackup·mysql8.0
妄汐霜1 天前
小白学习笔记(MySQL增删改查)
笔记·学习·mysql
咕噜企业分发小米1 天前
阿里云函数计算如何与ECS共享MySQL数据库?
数据库·mysql·阿里云
嘟嘟w1 天前
B + 树索引的工作原理?
mysql