数据库--SQL

Web:全球广域网(万维网:www),能够通过浏览器访问的网站;

JavaWeb:用Java技术来解决相关web互联网领域的技术栈

  网页(展现数据)→JavaWeb程序(逻辑处理)→数据库(存储和管理数据)

  数据库(存储和管理数据)→JavaWeb程序(逻辑处理)→网页(展现数据)

 

关系型数据库:建立在关系模型基础上的数据库,是由多张能互相连接的二维表组成的数据库。数据存储在磁盘中,安全。

常见的关系型数据库:Oracle、MySQL、Microsoft SQL Server(C#,.net等语言常用)、PostgreSQL、DB2、SQLite(嵌入式微型数据库)、MariaDB。

 

SQL通用语法:

1.SQL语句可单行或多行书写,以分号结尾;

2.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

3.注释

  #/--:(--和注释内容中间有空格:-- 注释)单行注释

  /*注释*/:多行注释

 

SQL分类:

  DDL:操作数据库、表等

  DML:对表中数据进行增删改

  DQL:对表中的数据进行查询

  DCL:对数据库进行权限控制

 

 

 

 

①DDL

1.操作数据库

查询:

SHOW DATABASES;

 

创建数据库:

create database  数据库名;

 

先判断是否存在,不存在则创建:

create database if not exists  数据库名;

 

 

删除数据库:

drop database  数据库名;

 

先判断是否存在,存在则删除:

drop database if exists  数据库名;

 

 

查看当前使用的数据库:

SELECT DATABASE();

 

使用数据库:

USE  数据库名;

 

2.操作表

  • 创建(Create):
create table 表名(字段名 数据类型1,字段名 数据类型1,字段名 数据类型1);

 

  • 查询(Retrieve):

  查询当前数据库下所有表名称:

show tables;

 

  查询表结构:

DESC   表名;

 

  • 修改(Update)

  修改表名:

alter table 表名 rename to 新表名;

 

  添加一列:

alter table 表名 add 列名 数据类型;

 

  修改数据类型:

alter table 表名 modify 列名 新数据类型;

 

  修改列名和数据类型:

alter table 表名 change 列名 新列名 新数据类型;

 

  删除列:

alter table 表名 drop 列名;

 

  • 删除(Delete)

  删除表:

DROP TABLE 表名;

 

  删除表时判断表是否存在:

DROP TABLE IF EXISTS 表名;

 

 

 

 

②DML

1、增:

  给指定列添加数据:

insert into 表名(列名1,列名2) values(值,值2);

 

  给所有列添加数据:

insert into 表名 values(值1,值2);

 

  批量添加数据:

insert into 表名(列名1,列名2) values(值1,值2),(值1,值2),(值1,值2);

insert into 表名 values(值1,值2),(值1,值2),(值1,值2);

 

2、删: 

delete from 表名 [where 条件]

 

  *删除语句中如果不加条件,则所有数据都删除!

3、修改数据 

update 表名 set 列名1=值1,列名2=值2,[where 条件]

 

  *修改语句中如果不加条件,则所有数据都修改!

 

 

③DQL

查询:

select 字段列表
from 表名列表
where 条件列表
group by 分组字段
having 分组后条件
order by 排序字段
limit 分页限定

 

1、基础查询

  查询多个字段

select 字段列表 from 表名;
select * from 表名;#查询所有数据,不要使用!

 

   去除重复记录

select distinct 字段列表 from 表名;

   起别名

AS-- AS也可以省略

2、条件查询【where】

  条件查询语法

select 字段列表 from 表名 where 条件列表;

  条件

复制代码
>
<
>=
<=
=
<>或!=:不等于
between...and...:在某个范围之内(都包含)
in(...):多选...
like 占位符:模糊查询 _单个任意字符 %多个任意字符
is null:是null
is not null:不是null
and或&&:并且
or或||:或者
not或!:非,不是
复制代码

3、排序查询【order by】

select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名1 [排序方式1].....;
ASC:升序排列(默认值)
DESC:降序排列

*如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

4、分组查询【group by】

  聚合函数:将一列数据作为一个整体,进行纵向计算。

函数名 功能
count(列名) 统计数量(一般选用不为null的列)
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值
select 聚合函数名(列名) from 表;
-- null值不参与所有聚合函数运算

  分组查询语法:

复制代码
select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
-- 分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
/*where和having区别:
    
    执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
    可判断的条件不一样:where不能对聚合函数进行判断,having可以

    执行顺序:where>聚合函数>having
*/
复制代码

5、分页查询【limit】

复制代码
select 字段列表 from 表名 limit 起始索引,查询条目数;
*起始索引:从0开始
-- 计算公式:起始索引=(当前页码-1)*每页显示的条数
/*
tips:
    分页查询limit是mysql数据库独有的
    Oracle分页查询使用rownumber
    SQL Server分页查询使用top
*/
复制代码

 

posted @   醭酹  阅读(300)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示