当前位置: 首页 > backend >正文

数据库基础—SQL语句总结及在开发时

前言

最近不是刚写完苍穹外卖吗,然后我就试试开始看八股了,哇塞好难呐🤯,嗯我的学习路线是Java基础语法—JavaWeb—Web项目,其实并没有系统的学习数据库,我想把之前学的(也就够做一个简单的小项目)总结一下,然后在通过面经深入学习☆*: .。. o(≧▽≦)o .。.:*☆

🤔这里跳过MySql的安装直接介绍SQL语句

SQL(Structured Query Language)是一种用于管理、操作关系数据库的标准语言。它被设计用来访问和处理数据库中的数据。通过SQL,用户可以查询、插入、更新和删除数据库中的记录。

SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL 。

在这里插入图片描述

DDL语句:

数据定义语言(Data Definition Language,简称DDL)是SQL的一部分,主要用于定义或改变数据库结构、数据表以及其它数据库对象。DDL语句不会影响表中的实际数据,而是对数据库模式进行操作。根据它的操作对象不同来分为两部分讲:数据库操作和表操作

  1. 数据库操作:
  • 查询数据库:
//查询所有数据库
show databases;//查询当前数据库
select database();
  • 创建数据库
    语法:
create database [ if not exists ] 数据库名  [default charset utf8mb4];
//创建一个哈哈哈数据库。
create database hhhhh;
  • 切换到要使用的数据库
//切换到hhhhh数据
use hhhhh;
  • 删除数据库
    语法:
drop database [ if exists ] 数据库名 ;
drop database if exists hhhhhh; -- hhhhh数据库存在时删除
  1. 表操作
  • 创建表

语法:

create table  表名(字段1  字段1类型 [约束]  [comment  字段1注释 ],字段2  字段2类型 [约束]  [comment  字段2注释 ],......字段n  字段n类型 [约束]  [comment  字段n注释 ] 
) [ comment  表注释 ] ;

来看一个例子:

create table tb_user (id int primary key comment 'ID,唯一标识', username varchar(20) not null unique comment '用户名',name varchar(10) not null comment '姓名',age int comment '年龄',gender char(1) default '男' comment '性别'
) comment '用户表';

🧩扩展:

1.数据类型
MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型(我在讲义上截了几张图)。

1). 数值类型:

在这里插入图片描述2). 字符串类型
在这里插入图片描述
3). 日期时间类型
在这里插入图片描述
2. 约束:
在这里插入图片描述

  • 查询表
-- 查询当前数据库的所有表
show tables;-- 查看指定的表结构
desc 表名 ;   -- 可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息-- 查询指定表的建表语句
show create table 表名 ;
  • 修改表

1.添加字段:

-- 添加字段
alter table 表名 add  字段名  类型(长度)  [comment 注释]  [约束];-- 比如: 为tb_emp表添加字段qq,字段类型为 varchar(11)
alter table tb_emp add  qq  varchar(11) comment 'QQ号码';

2.修改字段

-- 修改字段类型
alter table 表名 modify  字段名  新数据类型(长度);-- 比如: 修改qq字段的字段类型,将其长度由11修改为13
alter table tb_emp modify qq varchar(13) comment 'QQ号码';
-- 修改字段名,字段类型
alter table 表名 change  旧字段名  新字段名  类型(长度)  [comment 注释]  [约束];-- 比如: 修改qq字段名为 qq_num,字段类型varchar(13)
alter table tb_emp change qq qq_num varchar(13) comment 'QQ号码';

3.删除字段

-- 删除字段
alter table 表名 drop 字段名;-- 比如: 删除tb_emp表中的qq_num字段
alter table tb_emp drop qq_num;

4.修改表名

-- 修改表名
rename table 表名 to  新表名;-- 比如: 将当前的emp表的表名修改为tb_emp
rename table emp to tb_emp;

DML语句

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

  • 添加数据(INSERT)
    语法:
insert into 表名 (字段名1, 字段名2) values (1,2);

例:

insert into emp2(id, username, password, name, gender, phone, job, salary, image, entry_date, create_time, update_time)values (1,'shinaian','123456','施耐庵',1,'13309090001',4,15000,'1.jpg','2000-01-01',now(),now()),
  • 修改数据(UPDATE)

语法:

update 表名 set 字段名1 =1 , 字段名2 =2 , .... [where 条件] ;

例:

update emp set name='张三', update_time=now() where id=1;
  • 删除数据(DELETE)

语法:

delete from 表名  [where  条件] ;

例:

delete from emp where id = 1;

DQL语句

DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。

语法:

SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP  BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMIT分页参数

对应:

  • 基本查询(不带任何条件)

语法:

select 字段1, 字段2, 字段3 from  表名;

🧩扩展:
别名:

select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ]  from  表名;
  • 条件查询(where)
select  字段列表  from   表名   where   条件列表 ; -- 条件列表:意味着可以有多个条件
  • 聚合函数

之前我们做的查询都是横向查询,就是根据条件一行一行的进行判断,而使用聚合函数查询就是纵向查询,它是对一列的值进行计算,然后返回一个结果值。(将一列数据作为一个整体,进行纵向计算)

常用聚合函数:

  • count :按照列去统计有多少行数据。
    • 在根据指定的列统计的时候,如果这一列中有null的行,该行不会被统计在其中。
  • sum :计算指定列的数值和,如果不是数值类型,那么计算结果为0
  • max :计算指定列的最大值
  • min :计算指定列的最小值
  • avg :计算指定列的平均值

例:

-- count(字段)
select count(id) from emp;
  • 分组查询(group by)
    分组: 按照某一列或者某几列,把相同的数据进行合并输出。
    • 分组其实就是按列进行分类(指定列下相同的数据归为一类),然后可以对分类完的数据进行合并计算。
    • 分组查询通常会使用聚合函数进行计算。

语法:

select  字段列表  from  表名  [where 条件]  group by 分组字段名  [having 分组后过滤条件];
select gender, count(*)
from emp
group by gender; -- 按照gender字段进行分组(gender字段下相同的数据归为一组)
  • 排序查询(order by)
    语法:
select  字段列表  
from   表名   
[where  条件列表] 
[group by  分组字段 ] 
order  by  字段1  排序方式1 , 字段2  排序方式2;

排序方式:

  • ASC :升序(默认值)
  • DESC:降序

例:

select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
order by entry_date ASC; -- 按照entrydate字段下的数据进行升序排序select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
order by  entry_date; -- 默认就是ASC(升序)
  • 分页查询(limit)

语法:

select  字段列表  from  表名  limit  起始索引, 查询记录数 ;

例:

//从起始索引0开始查询员工数据, 每页展示5条记录
select id, username, password, name, gender, phone, salary, job, image, entry_date, create_time, update_time
from emp
limit 0 , 5; -- 从索引0开始,向后取5条记录

因为我只做过苍穹外卖一个小项目,SQL语句学的也比较少,因此以上都是比较简单的,但也足够支撑一个比较小的Web项目
小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)

…。。。。。。。。。。。…请添加图片描述

…。。。。。。。。。。。…

http://www.xdnf.cn/news/17672.html

相关文章:

  • 第六章 二次型
  • 深度学习-卷积神经网络CNN-CNN、卷积层(卷积核、卷积计算)、池化层(最大池化、平均池化)
  • 10、系统规划与分析
  • 【计算机网络】王道考研笔记整理(4)网络层
  • 用vscode开发和调试golang超简单教程
  • HCIP——OSPF综合实验
  • Linux 服务部署:自签 CA 证书构建 HTTPS 及动态 Web 集成
  • [C语言]第二章-从Hello World到头文件
  • Java研学-RabbitMQ(七)
  • Dots.ocr:告别复杂多模块架构,1.7B参数单一模型统一处理所有OCR任务22
  • 脑电分析——ICLabel的一对多成分关系与手工阈值
  • Java Spring框架最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
  • Linux 5.15.189-rt87 实时内核安装 NVIDIA 显卡驱动
  • 【WonderTrader源码详解 1】【环境搭建 2】【编译安装WonderTrader】
  • 从 VLA 到 VLM:低延迟RTSP|RTMP视频链路在多模态AI中的核心角色与工程实现
  • Java 大视界 -- 基于 Java 的大数据可视化在能源互联网全景展示与能源调度决策支持中的应用
  • 《工程封装》(Python)
  • 解决 HTTP 请求 RequestBody 只能被读取一次的问题
  • 【PyTorch学习笔记 - 03】 Transforms
  • 串口超时参数深度解析:ReadTotalTimeoutMultiplier、ReadIntervalTimeout等
  • Day24|学习前端CSS
  • scikit-learn/sklearn学习|岭回归python代码解读
  • 数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(上篇)
  • vue-cli搭建项目脚手架
  • -bash: ll: 未找到命令
  • RabbitMQ-知识技能图谱(总结篇)
  • leetcode3258:统计满足K约束的子字符串数量Ⅰ(变长滑动窗口详解)
  • Windows server服务器上部署python项目域名访问(超详细教程)
  • Web攻防-业务逻辑篇Fuzz技术数据并发条件竞争JS挖掘参数盲猜Turbo插件SRC
  • pyside控件_左右范围滑动控件