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

简介: 什么是数据库?答:存储数据的仓库,数据是有组织的进行存储(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表呗。  

目录
相关文章
|
3月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
4月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
488 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
4月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
314 14
|
4月前
|
SQL 数据建模 关系型数据库
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
535 4
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
5月前
|
SQL 存储 关系型数据库
第二篇:关系型数据库的核心概念与 SQL 基础
本篇内容深入浅出地讲解了关系型数据库的核心概念与SQL基础,适合有一定计算机基础的学习者。文章涵盖数据库的基本操作(CRUD)、数据类型、表的创建与管理等内容,并通过实例解析SELECT、INSERT、UPDATE、DELETE等语句的用法。此外,还推荐了多种学习资源与实践建议,帮助读者巩固知识。学完后,你将掌握基础数据库操作,为后续高级学习铺平道路。
275 1
|
2月前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
105 11
|
7月前
|
人工智能 前端开发 JavaScript
代码采纳率从 22% 到 33%,通义灵码辅助数据库智能编码实践
通义灵码本质上是一个AI agent,它已经进行了大量的优化。然而,为了更完美或有效地调用模型的潜在能力,我们在使用时仍需掌握一些技巧。通常,大多数人在使用通义灵码时会直接上手,这是 AI agent 的一个优势,即 zero shot 使用,无需任何上下文即可直接使用通义灵码的能力。
|
5月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
557 77

热门文章

最新文章