数据库基础—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. 数据库操作:
  • 查询数据库:
sql 复制代码
//查询所有数据库
show databases;

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

语法:

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

来看一个例子:

sql 复制代码
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). 日期时间类型

  1. 约束:
  • 查询表
sql 复制代码
-- 查询当前数据库的所有表
show tables;

-- 查看指定的表结构
desc 表名 ;   -- 可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息

-- 查询指定表的建表语句
show create table 表名 ;
  • 修改表

1.添加字段:

sql 复制代码
-- 添加字段
alter table 表名 add  字段名  类型(长度)  [comment 注释]  [约束];

-- 比如: 为tb_emp表添加字段qq,字段类型为 varchar(11)
alter table tb_emp add  qq  varchar(11) comment 'QQ号码';

2.修改字段

sql 复制代码
-- 修改字段类型
alter table 表名 modify  字段名  新数据类型(长度);

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

-- 比如: 修改qq字段名为 qq_num,字段类型varchar(13)
alter table tb_emp change qq qq_num varchar(13) comment 'QQ号码';

3.删除字段

sql 复制代码
-- 删除字段
alter table 表名 drop 字段名;

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

4.修改表名

sql 复制代码
-- 修改表名
rename table 表名 to  新表名;

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

DML语句

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

  • 添加数据(INSERT)
    语法:
sql 复制代码
insert into 表名 (字段名1, 字段名2) values (值1, 值2);

例:

sql 复制代码
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)

语法:

sql 复制代码
update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;

例:

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

语法:

sql 复制代码
delete from 表名  [where  条件] ;

例:

sql 复制代码
delete from emp where id = 1;

DQL语句

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

语法:

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

对应:

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

语法:

sql 复制代码
select 字段1, 字段2, 字段3 from  表名;

🧩扩展:

别名:

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

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

常用聚合函数:

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

例:

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

语法:

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

排序方式:

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

例:

sql 复制代码
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)

语法:

sql 复制代码
select  字段列表  from  表名  limit  起始索引, 查询记录数 ;

例:

sql 复制代码
//从起始索引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项目

小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)

...。。。。。。。。。。。...

...。。。。。。。。。。。...

相关推荐
武昌库里写JAVA2 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
xiep14383335102 小时前
Ubuntu 安装带证书的 etcd 集群
数据库·etcd
Java小白程序员3 小时前
Spring Framework:Java 开发的基石与 Spring 生态的起点
java·数据库·spring
爱掘金的土拨鼠5 小时前
国产化dm数据库锁表解锁
数据库
庖丁解java5 小时前
N个Utils
数据库
Mr. zhihao6 小时前
SQL LEFT JOIN 与 WHERE 条件的隐藏坑
数据库·sql
2301_793086876 小时前
Redis 04 Reactor
数据库·redis·缓存
Sais_Z6 小时前
ClickHouse的学习与了解
数据库·clickhouse
代码的余温6 小时前
MySQL性能优化:10个关键参数调整指南
数据库·mysql·性能优化