MySQL数据库(SQL分类)

ops/2025/1/15 21:10:53/

SQL分类

分类全称解释
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户,控制数据库的访问权限

DDL

数据库操作

sql">-- 查询
--查询所有数据库
show databases;
--查询当前数据库
select database();
--创建数据库
create database [if not exists] 数据库[defaul charset 字符集] [collate 排序规律];
--删除
drop database [if exists]数据库;
--使用
use 数据库; 

注:数据库语言不区分大小写
数据库语言都以分号结尾

表操作

查询表

sql">--查询当前数据库所有表show tables;-- 查询表结构desc 表名;-- 查询指定表的建表语句show create table 表名;

创建表

sql">create table 表名(
字段1 字段1类型[comment 字段1注释]
字段2 字段2类型[comment 字段1注释]
字段3 字段3类型[comment 字段1注释]
.......
) [comment 表注释];

comment 为可选项,作用类似是注释,解释字段或表

sql"> create table user(id int comment '编号',name varchar(50) comment '姓名',age int comment '年龄',gender varchar(50) comment '性别') comment '用户表';

查询表结构
在这里插入图片描述
查询建表语句
在这里插入图片描述

修改表

添加字段
alter table 表名 add 字段名 类型(长度)[comment 注释] [约束];

sql">-- 在emp表增加一个新的字段“昵称”为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment "昵称";

修改字段
1.修改数据
alter table 表名 modify 字段名 新数据类型(长度);
2.修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束]
3.修改表名
alter table 表名 rename to 新表名;

sql">--将emp表中的nickname字段修改为username,类型为varchar(30)
alter table emp nickname username varchar(30) comment '昵称';
-- 将emp表的表名修改为employee
alter table emp rename to employee;

在这里插入图片描述
删除表
1.删除表
drop table [if exists] 表名;
2.删除指定表,并重新创建该表
truncate table 表名;
在这里插入图片描述

数据类型概览

分类类型大小有符号范围 (SIGNED)无符号范围 (UNSIGNED)描述
整数类型TINYINT1 字节(-128, 127)(0, 255)小整数值
SMALLINT2 字节(-32,768, 32,767)(0, 65,535)小整数值
MEDIUMINT3 字节(-8,388,608, 8,388,607)(0, 16,777,215)中整数值
INT/INTEGER4 字节(-2,147,483,648, 2,147,483,647)(0, 4,294,967,295)标准整数值
BIGINT8 字节(-2^63, 2^63-1)(0, 2^64-1)大整数值
浮点类型FLOAT4 字节~(-3.4028236E+38, 3.4028236E+38)~ (0, 3.4028236E+38)单精度浮点数
DOUBLE8 字节~(-1.7976931348623157E+308, …308)~ (0, 1.7976931348623157E+308)双精度浮点数
DECIMAL可变大小精确的定点数值精确的定点数值 ,依赖M(精度)D(标度)小数值 (精确度高)

解释:精度指整个小数的长度,标度指小数位数。
举例:age TINYINT UNSIGNED占用字节小且不会出现负数
score DOUBLE(4,1)一位小数,长度为4

以下是表格清晰化后的内容,用中文并使用 Markdown 格式:


字符串/文本类型数据类型概览

分类类型大小描述
字符串类型CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
二进制类型TINYBLOB0-255 bytes不超过 255 个字节的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65535 bytes二进制形式的长文本数据
TEXT0-65535 bytes长文本数据
MEDIUMBLOB0-16,777,215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16,777,215 bytes中等长度的文本数据
LONGBLOB0-4,294,967,295 bytes二进制形式的超长文本数据
LONGTEXT0-4,294,967,295 bytes超长文本数据

  1. 字符串类型
    CHAR:定长字符串,适合长度固定的文本数据。
    VARCHAR:变长字符串,适合长度可变的文本数据。
    区别:char(10)即使只有一个长度也会占用10个字节;varchar(10)最多占用10个字节,真正占用字节数取决于长度
  2. 二进制类型和文本类型
    BLOB:用于存储二进制数据,例如图片或文件。
    TEXT:用于存储文本数据,按长度分为 TINYTEXTTEXTMEDIUMTEXTLONGTEXT
    数据大小根据具体需求选择合适的类型,超长数据需要使用 LONGBLOBLONGTEXT

以下是日期类型数据清晰化后的表格,用中文并使用 Markdown 格式展示:


分类类型大小范围格式描述
日期类型DATE3 字节1000-01-01 至 9999-12-31YYYY-MM-DD日期值
时间类型TIME3 字节-838:59:59 至 838:59:59HH:MM:SS时间值(时分秒)
年份类型YEAR1 字节1901 至 2155YYYY年份值
日期时间类型DATETIME8 字节1000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
时间戳类型TIMESTAMP4 字节1970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS记录联合日期和时间的值,用于标记时间

解释

  1. DATE 类型:

    • 存储纯日期值(例如:生日、节假日)。
    • 格式为 YYYY-MM-DD
  2. TIME 类型:

    • 用于表示时间值(时、分、秒),支持负值,适用于持续时间表示。
  3. YEAR 类型:

    • 用于存储年份值,适合年份相关数据(如生产年份)。
  4. DATETIME 类型:

    • 组合日期和时间的值,精确到秒,适用于完整的日期时间记录。
  5. TIMESTAMP 类型:

    • 表示自 1970 年以来的时间点,用于记录操作时间,受时区影响。

示例:
在这里插入图片描述

sql">create table emp(id int comment '编号',workno varchar(10) comment '工号',name varchar(10) comment '姓名',gender char(1) comment '性别',age tinyint unsigned comment '年龄',sno char(18) comment '身份证号',time date comment '入职时间'
) comment '员工表';   

输入后形成的表结构:
在这里插入图片描述

DML

添加数据

  1. 给指定字段添加数据
    insert into 表名 (字段1,字段2,....) values(值1,值2,....);
  2. 给全部字段添加数据
    insert into 表名 values(值1,值2,值3,....);
  3. 批量添加数据
    inset into 表名 (字段名1,字段名2,....) values (值1,值2,值3,...) (值1,值2,值3,....);
    insert into 表名 values(值1,值2,值3,....),(值1,值2,值3,....);
sql">-- 给指定字段添加数据
insert into employee(id,workno,name,gender,age,sno,time) values (1,'1','hong','女',19,123456789123456789,'2024-12-16');
-- 查询所有数据
SELECT * from employee;
-- 给全部字段添加数据
insert into employee values (2,'2','kang','男',20,123456789456789123,'2025-05-06');
-- 批量添加数据
insert into employee values (3,'3','tong','女',20,123456789456723123,'2025-05-06'),(4,'4','miaomiao','女',20,145456789456789123,'2024-05-06');

在这里插入图片描述

修改数据

update 表名 set 字段名1 = 值1,字段2 = 值2,....[where 条件]
注:where条件为可选项,但是如果不加默认为修改所有数据

sql"> -- 修改id为1的数据,将name改为'rora'update employee set name = 'rora' where id = 1;-- 修改id为4的数据,将age改为23update employee set age = 23 where id = 4;-- 修改所有数据,将日期改为2020-06-16update employee set time = '2020-06-16';

在这里插入图片描述

删除数据

delete from 表名 [where 条件];
注:
1.delete语句的条件为可选项,如果没有,会删除表中的所有数据
2.delete语句不能删除某一个字段的值(可以使用update)

sql">-- 删除gender为女的数据
delete from employee where gender = "女";

在这里插入图片描述

DQL

数据查询语言,用来查询数据库中表的记录
关键字:select
语法
select : 字段列表
from:表名列表
where:条件列表
group by:分组字段列表
having:分组后条件列表
order by:排序字段列表
limit:分页参数
基本查询
条件查询WHERE
聚合查询count,max,min,avg,sum
分组查询group by
排列查询order by
** 分页查询**(limit

1.查询多个字段
select 字段1,字段2,字段3...from 表名;
select * from 表名;
2.设置别名
select 字段1[as 别名],字段2[as 别名2]...from 表名;
3.取出重复记录
select distinct 字段列表 from 表名;

重新创建emp表,并输入信息:

sql">CREATE TABLE emp (id INT COMMENT '编号',workno VARCHAR(10) COMMENT '工号',name VARCHAR(10) COMMENT '姓名',gender CHAR(1) COMMENT '性别',age TINYINT UNSIGNED COMMENT '年龄',idcard CHAR(18) COMMENT '身份证号',workaddress VARCHAR(50) COMMENT '工作地址',entrydate DATE COMMENT '入职时间'
) COMMENT '员工表';

输入信息后:
在这里插入图片描述

sql"> -- 查询指定字段 name,workno,age,返回
select name,workno,age from emp;
-- 查询所有字段
select * from emp;
select id,workno,name,gender,age,idcard,workaddress,entrydate from emp;
-- 查询所有员工工作地址,起别名
select workaddress as '工作地址' from emp;
-- 查询员工地址,去重
select distinct workaddress from emp;

http://www.ppmy.cn/ops/150386.html

相关文章

基于Springboot的汽车维修预约服务系统设计与实现

博主介绍:java高级开发,从事互联网行业多年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…

windows和linux的抓包方式

1.实验准备: 一台windows主机,一台linux主机 wireshark使用: 打开wireshark,这些有波动的就代表可以有流量经过该网卡,选择一张有流量经过的网卡 可以看到很多的流量,然后可以使用过滤器来过滤想要的流量…

Linux 常见运营维护,从安装软件开始,到mysql,php,redis,tomcat等软件安装,配置,优化,持续更新中。。。

下载centos7 CentOS 7 完整版(DVD): https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.isoCentOS 7 最小化版(Minimal): https://mirrors.aliyun.com/centos/7/isos/x86_64/C…

《自动驾驶与机器人中的SLAM技术》ch9:自动驾驶车辆的离线地图构建

目录 1 点云建图的流程 2 前端实现 2.1 前端流程 2.2 前端结果 3 后端位姿图优化与异常值剔除 3.1 两阶段优化流程 3.2 优化结果 ① 第一阶段优化结果 ② 第二阶段优化结果 4 回环检测 4.1 回环检测流程 ① 遍历第一阶段优化轨迹中的关键帧。 ② 并发计算候选回环对…

41_Lua函数

在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。Lua函数主要有两种用途: 完成指定的任务,这种情况下函数作为调用语句使用。计算并返回值,这种情况下函数作为赋值语句的表达式使用。此外,Lua还提供了许多的内建函…

常见安全风险及防护(如CSRF,XSS) 配置SSL/TLS

Web应用程序在互联网的开放环境中运行时,会面临各种安全风险。了解这些风险及其防护措施不仅可以使你的应用更安全,还能提高用户信任。在这篇文章中,我们将讨论一些常见的Web应用安全风险,如CSRF和XSS,以及如何配置SSL…

Table-Augmented Generation(TAG):Text2SQL与RAG的升级与超越

当下AI与数据库的融合已成为推动数据管理和分析领域发展的重要力量。传统的数据库查询方式,如结构化查询语言(SQL),要求用户具备专业的数据库知识,这无疑限制了非专业人士对数据的访问和利用。为了打破这一壁垒&#x…

单细胞组学大模型(8)--- scGenePT,scGPT和GenePT的结合,实验数据和文本数据的交融模型

–https://doi.org/10.1101/2024.10.23.619972 研究团队和单位 Theofanis Karaletsos–Head Of AI - Science at Chan Zuckerberg Initiative (Chan Zuckerberg Initiative是扎克伯格和他妻子Chan成立的科研&教育机构) 研究简介 研究背景&…