数据库的基础概念和代码例子(增删改查和其他操作-约束)(上)

简介: 什么是数据库?答:存储数据的仓库,数据是有组织的进行存储(DataBase,简称DB)

一、概念解析

1.什么是数据库?

答:存储数据的仓库,数据是有组织的进行存储(DataBase,简称DB)

2.什么是数据库管理系统?

答:管理数据库的大型软件(DataBase Management System,简称DBMS)

例子:MySQL

3.什么是SQL?

答:操作关系型数据库的编程语言,是一种结构化查询语言(Structured Query Language,简称SQL)

4.什么是关系型数据库?

答:由多张能互相连接的二维表组成的数据库

优点:

(1)都是使用表结构,格式一致,易于维护

(2)使用通用的SQL语言操作,使用方便,可用于复杂查询

(3)数据存储在磁盘中,安全

5.SQL通用语句?

答:SQL可以单行或者多行书写,以分号结尾,不分大小写,关键字建议大写

单行注释:--注释内容或者#注释内容

多行注释:/*注释*/

6.名词解释

DDL:操作数据库等

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

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

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

7.约束(列中的规则制定者)

(1)作用于表中列上的规则,用于限制加入的数据

(2)约束的存在保证了数据库中数据的正确性、有效性和完整性

分类:

非空约束:保证列中所有的数据不能有null值。

唯一约束:保证列中所有的数据各不相同

主键约束:主键是一列数据的唯一标识,一张表里面只能有一个。要求非空且唯一

检查约束:保证列中的值满足某一条件

默认约束:保存数据时,未指定值则采用默认值

外键约束:外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

二、查

1.查询全部数据库

show databases;

2.查询正在使用的数据库。

select database();

3.查询所有表(当前使用的库中)

show tables;

4.查询单个表结构

格式为:desc 表名;

desc func;

5.查询全部列中的详细数据

格式为:select * from 表名;

select * from mm;

6.查询列中的数据

格式为:select 列名,列名 from 表名;

select id,username from mm;

7.查出列中的数据并且起别名

格式为:select 原列名 as 改后列名,原列名 as 改后列名 from 表名;

select id as 情侣,username as 名字 from mm;

8.查询列中的数据并且去除重复的

格式为: select distinct 列名 from 表名;

select distinct hobby from mm;

条件查询

9.根据条件查询表中的数据

格式为:select * from 表名 where  列名 条件

select * from mm where hobby = '步兵';

10.根据条件查询表中的数据之区间

格式为:select * from 表名 where 列名 between 条件区间 and 条件区间;

select * from mm where id between 3 and 5;

条件查询之模糊查询

11.查询列中指定数据开头的

格式为:select * from 表名 where 列名 like '指定数据%';

select * from mm where hobby like '步%';

12.查询列中指定位置匹配的数据(比如那列中第2个是3的全要了,几个下划线就代表几个空格)

格式为:select * from 表名 where 列名 like '截取的下划线  需要的数据%';

select * from mm where password like '__3%';

13.查询列中的关键字

格式为:select * from 表名 where 列名 like '%关键字%';

select * from mm where hobby like '%兵%';

运行结果:

原表:



查询后:


排序查询

14.查询列中从小到大排序(默认)--升序

格式为:select * from 表名 order by 列名 asc;

select * from mm order by id asc;

15.查询列中从大到小排序   --降序

格式为:select * from 表名 order by 列名 desc;

select * from mm order by id desc;

16.多种要求排序

格式为:select * from 表名 order by 列名1 升或者降 ,列名2 升或者降;

select * from mm order by id asc,password desc;
--就是当第一个列条件相同时,才会排序第二个列条件

聚合函数 (数学运算)

17.统计表中有多少列数据

格式为:select count(*) from 表名;

select count(*) from mm;

18.对该列的数据进行各种计算

格式为:select 聚合函数名(列名) from 表名;

select avg(id) from mm;--例子
--count 统计数量
--max  最大值
--min  最小值
--sum  求和
--avg  平均值

分组查询

19.对表中的列进行聚合函数计算分组

格式为:select 分组的列,聚合函数(计算的列) from 表名 group by 分组的列;

select hobby,avg(id) from mm group by hobby;

20.对表中的列进行灵活分组查询

格式为:select 分组的列, 聚合函数(计算的列),count(*)  from 表名  判断条件 group by 分组的列;

select sex, avg(math),count(*) from home where math >50 group by sex;

21.对表中的列进行灵活查询基础上,再进行分组筛选

格式为:select 分组的列, 聚合函数(计算的列),count(*)  from 表名  判断条件 group by 分组的列

分组条件;

select sex, avg(math),count(*) from home where math >50 group by sex having count(*)>2;

20和21的总语法结构

格式为: select 分组的列,from 表名 where 分组前条件限定 group by 分组的列 having 分组后条件筛选

注意:执行顺序:where>聚合函数>having

分页查询

22.从索引值开始查多少条数据

格式为:select * from 表名 limit 起始值,查询条目数;

select * from home limit 0,3;
--注意数据库的第一条是从索引值0开始的
--当上万条数据时需要按页面展示,只需要改变索引值就好了,索引值可以设置成一个动态的公式
--起始索引值 = (当前页码-1) * 每页显示的条数

23.查看外键名称

格式为: show create table 从表的表名;

show create table BM;--BM:从表的表名

运行结果:

多表查询

简介:多表查询有连接查询和子查询两种方式

(1)连接查询:内连接(即A和B的交集)、外连接

(2)子查询

24.隐式内连接查询 (即A和B两张表的交集)

格式为 :select * from 表1的表名,表2的表名 where 表1的表名.id = 表2的表名.id;

注意点:这个*号是表示交集里面全部查询出来,如果有需要查特定的,就把*号换成需要的表名.列名

select * from mm,home where mm.id =home.id;

25.显式内连接查询 (即A和B两张表的交集)

格式为:select * from 表1的表名 inner join 表2的表名 on 表1的表名.id = 表2的表名.id;

select * from mm inner join home on mm.id = home.id;

26.左外连接查询(即取A表所有部分和AB的交集)

格式为:select * from 表1的表名 left join 表2的表名 on 表1的表名.列名 = 表2的表名.列名;

select * from mm left join home on mm.id = home.id;

27.右外连接查询(即取B表所有部分和AB的交集)

格式为:select * from 表2的表名 right join 表1的表名 on 表2的表名.列名 = 表1的表名.列名;

select * from home right join mm on mm.id = home.id;

注意点:左右外连接可以互换,A表也可以是B表,灵活变换,想让哪个是A表哪个就是A表呗。  

目录
相关文章
|
6天前
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
10天前
|
SQL NoSQL Java
彻底革新你的数据库操作体验!Micronaut数据访问技巧让你瞬间爱上代码编写!
【9月更文挑战第10天】Java开发者们一直在寻找简化应用程序与数据库交互的方法。Micronaut作为一个现代框架,提供了多种工具和特性来提升数据访问效率。本文介绍如何使用Micronaut简化数据库操作,并提供具体示例代码。Micronaut支持JPA/Hibernate、SQL及NoSQL(如MongoDB),简化配置并无缝集成。通过定义带有`@Repository`注解的接口,可以实现Spring Data风格的命名查询。
26 6
|
11天前
|
前端开发 数据库
数据库表设计生成代码
BizWorks ToolKit插件集成Mybatis-Plus代码生成工具,支持从数据库表生成代码,便于研发过程中数据模型变更后的代码同步。本文介绍批量生成代码的方法、配置说明及项目示例。配置文件`*.mp.yaml`用于描述生成行为,可放置于`src/main/resource/bizworks/mybatis-plus/`路径下。配置包括数据库信息、输出目录及包名等。通过IDEA右键菜单即可启动代码生成。具体配置和示例详见文档。
22 2
|
12天前
|
存储 关系型数据库 MySQL
MySQL数据库基础:约束
约束是对数据库表中字段施加的规则,确保数据的正确性、有效性和完整性。主要分为非空约束、唯一约束、默认约束、主键约束和外键约束。非空约束禁止字段值为null;唯一约束确保字段值唯一,允许null值重复;默认约束设定默认值;主键约束结合非空与唯一约束,并可设为自增型;外键约束则通过关联其他表的主键,保证数据一致性。检查约束确保字段值满足特定条件。
27 1
|
1月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
20天前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
19 1
|
12天前
|
前端开发 数据库 开发者
数据模型(数据库表设计)生成代码
BizWorks ToolKit 插件集成 Mybatis-Plus 代码生成工具,支持从数据库表批量生成代码,简化开发流程。本文详细介绍配置方法及项目示例,包括配置文件格式、生成选项及具体操作步骤,帮助开发者快速实现代码同步更新。配置文件 `.mp.yaml` 支持自定义输出目录、生成组件等,适用于多种项目结构。
25 0
|
12天前
|
关系型数据库 数据库 网络虚拟化
Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例
由于时间和空间限制,我将在后续的回答中分别涉及到“Python中采用lasso、SCAD、LARS技术分析棒球运动员薪资的案例集锦”以及“Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例”。如果你有任何一个问题的优先顺序或需要立即回答的,请告知。
22 0
|
1月前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
16天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
35 0