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

数据库基础—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.dtcms.com/a/329334.html

相关文章:

  • 如何使用 Ollama 在本地设置并运行 Qwen3
  • 2025年高效能工程项目管理软件推荐榜单:AI重构工程进度可视化与资源动态调度体系
  • 【国内电子数据取证厂商龙信科技】RAID存储技术
  • Spring Boot 集成 机器人指令中枢ROS2工业机械臂控制网关
  • Linux系统之K8S基本命令概述
  • PyTorch基础(Numpy与Tensor)
  • 集成 OceanBase 并打印 SQL 日志
  • 老生常谈智能指针:《More Effective C++》的条款28
  • PCIe Base Specification解析(十一)
  • nginx高性能web服务器实验
  • 【114页PPT】基于SAPSRM数字化采购解决方案(附下载方式)
  • Java面试宝典:G1垃圾收集器下
  • hadoop 前端yarn查看
  • 完整源码+技术文档!基于Hadoop+Spark的鲍鱼生理特征大数据分析系统免费分享
  • 以太坊的下一个十年:Vitalik Buterin的愿景与挑战
  • Day51--图论--99. 岛屿数量(卡码网),100. 岛屿的最大面积(卡码网)
  • 互联网大厂Java求职面试实录:Spring Boot到微服务与AI的技术问答
  • day50 图论基础 卡码网98. 所有可达路径
  • Day52--图论--101. 孤岛的总面积(卡码网),102. 沉没孤岛(卡码网),103. 水流问题(卡码网),104. 建造最大岛屿(卡码网)
  • java学习 leetcode 二分查找 图论
  • 【25-cv-09259】Keith律所代理Macneil Studio发起TRO狙击!
  • AI产品:从功能固化到动态进化
  • 职场与生活如何在手机中共存?(二)
  • 斯坦福大学联合项目 | ReKep 方法论文解读:机器人操作中关系关键点约束的时空推理
  • AutoCAD 各版本与插件合集详解:Architecture、Plant 3D、Civil 3D 等
  • 猿大师中间件:Chrome网页内嵌PhotoShop微信桌面应用程序
  • [Linux]学习笔记系列 -- [arm][process]
  • Node.js面试题及详细答案120题(16-30) -- 核心模块篇
  • AXIOS 入门
  • 2025 环法战车科技对决!维乐 Angel Glide定义舒适新标