MySQL数据库从0到1

article/2025/7/4 3:26:30

目录

数据库概述

基本命令

查询命令

函数

表的操作

增删改数据和表结构

约束

事务

索引

视图

触发器

存储过程和函数

三范式


数据库概述

SQL语句的分类:

        DQL:查询语句,凡是select语句都是DQL。

        DML:insert,delete,updata,对表当中的数据进行增删改查。

        DDL:create,drp,alter,对表结构的增删改。

        TCL:commit,rollback。

        DCL:grant,revoke。

对sql脚本的理解:

        以sql结尾的文件,被称为sql脚本。

        直接使用source命令可以执行sql脚本。

基本命令

mysql -uroot -p密码
show databases;
create database 数据库名;
use 数据库名;
show tables;
source 文件路径
drop database 数据库名;
select 数据库名();
select version();select * from stu;
desc stu;
show create table stu;

查询命令

select name from stu;
select name as na from stu;
select * from stu;
select name from stu where age > 20;as关键字可以省略
模糊查询中,%表示任意多个字符,_表示任意一个字符select max(name) from stu group by age;group by:按照某个字段或者某些字段进行分组
having:是对分组之后的数据进行再次过滤注意:
分组函数一般都会和group by联合使用
并且任何一个分组函数都是在group by语句执行结束后才会执行
当一条语句中有group by,select后面只能跟分组函数和参与分组的字段
select distinct name fron stu;
select name from stuwhere age between 20 and 50;select * from stu order by age asc;
select * from stu order by age asc, name desc;
select * from stu limit 5;select * from stu a inner join stu b on 条件;select * from stu a left | right join stu b on 条件;查询语句 union 查询语句union可以去重,union all 不可以子查询就是嵌套查询

函数

1、所有的分组函数都是对某一组的数据进行操作的
2、如果计算数据中有null,那么结果一定是null
3、分组函数不能直接使用在where子句当中count(*)和count(name),他们有什么区别?
count(*):统计总记录条数
count(字段):统计不为null的数据总条数

表的操作

create table stu(age int 约束,[constraint 约束名] 约束(name)
);desc stu;
alter table stu rename stu1;
alter table stu add age int;
alter table stu drop age;
alter table stu modify age int;数据类型
int
bigint
float
char
varchar
datecreate table t_student(no bigint,name varchar(255),sex char(1),classno varchar(255),birth char(10)
);

增删改数据和表结构

insert into stu(字段名) values(数据)
insert into stu(字段名) 查询语句update stu set age = 20 where name = 'java';delete from stu where age > 20;

约束

为了保证表中数据的合法性、有效性、完整性。

not null

unique

primary key

foreign key

check

事务

原子性:事务是最小的工作单元,不可再分。

一致性:事务必须保证多条DML语句同时成功或者同时失败。

隔离性:事务A与事务B之间具有隔离。

持久性:持久性说的是最终数据必须持久化到硬盘文件中,事务才算成功的结束。

索引

create table stu(属性名 数据类型,index | key 索引名(字段名)
);create index 索引名 on stu(name);
alter table stu add index | key 索引名(字段名)唯一索引在index前面加unique
全文索引在index前面加fulltext
drop index 索引名 on 表名

视图

视图的特点:

        视图的列可以用来不同的表,是表的抽象和在逻辑意义上建立的新关系。

        视图是由实表产生的虚表。

        视图的建立和删除不影响基本表。

        对视图内容的增删改直接影响基本表。

        当视图来自多个基本表时,不允许添加和删除数据。

        可以将试图看作为一个表来执行查询语句。

create view 试图名 as 查询语句;drop view 视图名;create or replace view 视图名 as 查询语句;alter view 视图名 as 查询语句;insert into 视图名(属性名...) values(数据...);update 视图名 set 属性名 = 数据 条件;delete from 视图名 条件;

触发器

create trigger 触发器名before | after      insert | update | deleteon 表名 for each row增删改语句;drop trigger 触发器名;

存储过程和函数

区别:

        存储过程:可以由0个返回值,也可以有多个返回值。

        函数:有且仅有一个返回值。

好处:

        提高代码重用性

        简化操作

        减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

存储过程:

        一组预先编译好的sql语句的集合,理解成批处理语句。

参数列表包含三部分:

        举例,in name varchar(20)

        in,可以作为输入

        out,可以作为输出,返回值

        inout,即可以输入,又可以输出

delimiter $
create procedure 存储过程名
begin一组sql语句
end $call 存储过程名();declare 变量名 数据类型set @名字 = 数据;drop procedure 存储过程名show create procedure 存储过程名;drop function 函数名;create procedure pro_4(score int)
begincasewhen score >= 90 && score <= 100 then select 'A';when score >= 80 then select 'B';when score >= 60 then select 'C';else select 'D';end case;
end$create function fun_4(score int) returns char
beginif score >= 90 and score <= 100 then return 'A';elseif score >= 80 then return 'B';elseif score >= 60 then return 'C';else return 'D';end if;
end $

三范式

第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。

第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。

第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。


http://www.hkcw.cn/article/baerFrHqmC.shtml

相关文章

STM32CubeDAC及DMA配置

STM32CubeDAC及DMA配置 一&#xff0c;问题1二&#xff0c;解决11&#xff0c;宏观思路CubeMX配置2&#xff0c;HAL_TIM_Base_Start(&htim6) 的作用1&#xff0c;作用1&#xff1a;使能TIM6的时钟并让它开始计数2&#xff0c;作用2&#xff1a;当 TIM6 溢出时&#xff0c;会…

c++ 赋值函数和拷贝构造函数的调用时机

测试代码&#xff1a; void testcopyAndFuzhi() {class Dog {private:string name;public:Dog(string myname) : name(myname) {}Dog(Dog& otherDog) {std::cout << "调用拷贝构造函数." << endl;this->name otherDog.name;}Dog& operator …

Python列表、字典、元组、集合

列表 list 基本格式&#xff1a;列表名 [元素1,元素2,元素3] 所有元素放在[ ]之中&#xff0c;元素之间用逗号","隔开&#xff0c;元素可以是不同的类型 列表的类型也是列表 li [1,"hello",2] print(type(li)) 列表是可迭代对象&#xff0c;可以用fo…

sctpscan:用于发现 SCTP 网络扫描器!全参数详细教程!Kali Linux教程!

简介 用于发现和安全的 SCTP 网络扫描器 sctpscan 是一款 SCTP 协议端口扫描工具&#xff0c;主要用于识别目标主机上开放的 SCTP&#xff08;Stream Control Transmission Protocol&#xff09;服务端口。 sctpscan 的主要功能是&#xff1a; 探测目标主机 SCTP 协议是否开…

力扣题解654:最大二叉树

一、题目内容 题目要求根据一个不重复的整数数组 nums 构建最大二叉树。最大二叉树的构建规则如下&#xff1a; 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大值右边的子数组后缀上构建右子树。返回由 nums 构…

车载诊断架构 --- DTC消抖参数(Trip Counter DTCConfirmLimit )

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

75.解决当编辑完用户消息,确认重新生成AI回答时,已有的AI回答还是存在,并且新生成的回答并没有显示到气泡里bug

在上一个bug解决完后&#xff0c;又出来一个bug&#xff0c;我真是服了哈哈哈 新的bug是&#xff1a; 当编辑完用户消息&#xff0c;确认重新生成AI回答时&#xff0c;已有的AI回答还是存在&#xff0c;并且新生成的回答并没有显示到气泡里 出现这个bug的原因还是出现在rege…

C# 用户控件(User Control)详解:创建、使用与最佳实践

在C#应用程序开发中&#xff0c;用户控件&#xff08;User Control&#xff09;是一种强大的工具&#xff0c;它允许开发者将多个标准控件组合成一个可复用的自定义组件。无论是Windows Forms还是WPF&#xff0c;用户控件都能显著提高UI开发的效率&#xff0c;减少重复代码&…

SpringBoot-配置Spring MVC

一、Spring MVC回顾 Spring MVC是一种常用的Java Web框架&#xff0c;它提供了一种基于MVC模式的开发方式&#xff0c;可以方便地实现Web应用程序。在Spring MVC中&#xff0c;WebMvcConfigurer是一种常用的配置方式&#xff0c;可以允许我们自定义Spring MVC的行为&#xff0c…

Python训练营打卡 Day26

知识点回顾&#xff1a; 函数的定义变量作用域&#xff1a;局部变量和全局变量函数的参数类型&#xff1a;位置参数、默认参数、不定参数传递参数的手段&#xff1a;关键词参数传递参数的顺序&#xff1a;同时出现三种参数类型时 ——————————————————————…

【Delphi】接收windows文件夹中文件拖拽

本文根据EmailX45的视频文件&#xff0c;进行了优化改进&#xff0c;原文参见&#xff1a;Delphi: Drag and Drop Files from Explorer into TPanel / TMemo - YouTube 在Windows中&#xff0c;如果将选择的文件拖动到Delphi程序的控件上&#xff0c;有很多实现方法&#xff0c…

电脑的ip地址会自动变怎么办?原因解析和解决方法

在当今互联网时代&#xff0c;IP地址是每台联网设备的"身份证"&#xff0c;但很多用户都遇到过IP地址自动变化的情况。这种现象既可能发生在内网&#xff08;局域网&#xff09;环境中&#xff0c;也可能出现在外网&#xff08;公网&#xff09;连接中。要理解IP地址…

CppCon 2014 学习: C++11 in the Wild

介绍了三个现代 C 的实用工具或功能。下面是对每部分的解释和总结&#xff1a; 1. Auto() 宏 用途&#xff1a;在作用域结束时自动执行清理代码&#xff0c;类似于 RAII 的机制。功能&#xff1a;你可以定义一段代码&#xff0c;在作用域结束时自动执行&#xff08;不需要手动…

三大模块曝光:分钟级搭建专属平台,解锁算力灵活操控新体验,重新定义智能开发效率天花板

一. 蓝耘元生代 MaaS介绍及简单使用 背景介绍 创新产品定位&#xff1a; 蓝耘元生代 MaaS 平台于 2024 年 11 月 28 日推出&#xff0c;非传统智算平台&#xff0c;以资源聚合能力整合上下游资源&#xff0c;为用户提供优质全面服务。 核心模块功能&#xff1a; 集成智算算…

乾坤qiankun的使用

vue2 为主应用 react 为子应用 在项目中安装乾坤 yarn add qiankun # 或者 npm i qiankun -Svue主应用 在main.js中新增 &#xff08;需要注意的是路由模型为history模式&#xff09; registerMicroApps([{name: reactApp,entry: //localhost:3011,container: #container,/…

FreeRTOS实时操作系统学习笔记

一 RTOS入门 1.1 裸机与RTOS介绍&#xff08;了解&#xff09; 裸机编程是指在嵌入式系统中&#xff0c;直接在硬件上运行代码&#xff0c;没有操作系统的支持。这种方式下&#xff0c;开发者需要完全掌握硬件资源&#xff0c;包括时钟、中断、外设等。任务调度和资源管理都由…

MCP还是A2A?AI未来技术选型深度对比分析报告

引言 MCP&#xff08;Multi-Core Processor&#xff09;与A2A&#xff08;Asynchronous to Asynchronous&#xff09;分别代表了计算架构发展中的两种重要范式。前者延续传统冯诺依曼体系的并行优化路径&#xff0c;后者则试图突破同步时钟的物理限制。理解二者的本质差异&…

逐步检索增强推理的跨知识库路由学习

摘要 多模态检索增强生成&#xff08;MRAG&#xff09;在多模态大语言模型&#xff08;MLLM&#xff09;中通过在生成过程中结合外部知识来减轻幻觉的发生&#xff0c;已经显示出了良好的前景。现有的MRAG方法通常采用静态检索流水线&#xff0c;该流水线从多个知识库&#xff…

OpenRouter使用指南

OpenRouter 是一个专注于大模型&#xff08;LLM&#xff09;API 聚合和路由的服务平台&#xff0c;旨在帮助开发者便捷地访问多种主流大语言模型&#xff08;如 GPT-4、Claude、Llama 等&#xff09;&#xff0c;并提供统一的接口、成本优化和智能路由功能。以下是它的核心功能…

【Linux】权限chmod命令+Linux终端常用快捷键

目录 linux中权限表示形式 解析标识符 权限的数字序号 添加权限命令chmod 使用数字表示法设置权限 使用符号表示法设置权限 linux终端常用快捷键 &#x1f525;个人主页 &#x1f525; &#x1f608;所属专栏&#x1f608; 在 Linux 系统里&#xff0c;权限管理是保障系…