数据库基础—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语句不会影响表中的实际数据,而是对数据库模式进行操作。根据它的操作对象不同来分为两部分讲:数据库操作和表操作
- 数据库操作:
- 查询数据库:
//查询所有数据库
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数据库存在时删除
- 表操作
- 创建表
语法:
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项目
小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)
…。。。。。。。。。。。…
…。。。。。。。。。。。…