当前位置: 首页 > news >正文

SQL高级知识点

MySQL基础
1、安装
   1)设置编码
   2)设置密码
2、配置文件:my.ini、my.cnf
   1)设置端口号
     port=3306
   2)设置编码

     default-character-set=utf8character-set-server=utf8


   3)存储引擎 

  default-storage-engine=INNODB


   4)最大连接数

     max_connections=100


   注意:重启mysql服务
3、登陆mysql数据库

   mysql -h 主机地址 -u 用户名 -p密码mysql -u 用户名 -p密码mysql -u 用户名 -p


   问题:"mysql"不是系统内部或外部命令....
   解决:将mysql的bin目录配置到系统的path环境变量中
         变量名:Path
         变量值:adsfasdfasd;D:\mysql\bin
4、设置客户端窗口的编码

   set names gbk;


5、查看mysql编码

show variables like 'character%';


6、查看现存的所有库

show databases;


7、进入库(使用库)

use 库名;


8、查看现存的所有表

show tables;


9、查看表结构

desc 表名;


10、建库

create database 库名;
create database 库名 character set=utf8;


11、删除库

    drop database 库名;


12、建表

    create table 表名(字段名  数据类型  约束,字段名  数据类型  约束,字段名  数据类型  约束);


13、数据类型

    int  float  char  varchar  text   timestamp  enum


14、约束

    primary keyforeign keynot nullnulluniquedefaultauto_increment


15、修改表结构
    1)修改表名

   alter table 表名 rename to 新表名;


    2)添加字段

     alter table 表名 add column 字段名 数据类型 约束;alter table 表名 add 字段名 数据类型 约束;


    3)删除字段

      alter table 表名 drop column 字段名;alter table 表名 drop 字段名;


    4)修改字段

alter table 表名 change 原字段名 新字段名 数据类型 约束;


16、删除表

    drop table 表名;


17、添加记录

    insert into 表名(字段...)values(值...);


18、修改记录

    update 表名 set 字段=值,字段=值...;update 表名 set 字段=值,字段=值... where 条件;


19、删除记录

    delete from 表名;delete from 表名 where 条件;


20、清空表

    delete from 表名;     不恢复id  慢   可恢复   支持事务truncate table 表名;  恢复id    快   不恢复   不支持事务


21、普通查询

    select * from 表名;select 字段,字段... from 表名;


22、条件查询

select * from 表名 where 条件;


23、排序

    select * from 表名 order by 字段;#升序select * from 表名 order by 字段 desc;#降序select * from 表名 where 条件 order by 字段;


24、分组

select * from 表名 group by 字段;


25、聚合查询

    select count(*) from 表名 where 条件;select sum(字段) from 表名 where 条件;select avg(字段) from 表名 where 条件;select max(字段) from 表名 where 条件;select min(字段) from 表名 where 条件;


26、分页查询

    select * from 表名 limit 起始值,条数;select * from 表名 where 条件 order by 字段 limit 起始值,条数;


27、模糊查询

 select * from 表名 where 字段 like '%_内容';


    通配符
    %:任意长度的任意字符
    _:任意一个字符
    1)查询所有姓张的学生

      select * from 学生表 where 姓名 like '张%';


    2)查询所有姓张的学生,但名字必须是两个字

    select * from 学生表 where 姓名 like '张_';


    3)查询所有学生,但姓名中必须有"小"字

  select * from 学生表 where 姓名 like '%小%';

多表查询


子查询(嵌套查询)
1)子查询出现where中,充当条件

  select * from 表名 where 字段 in (select语句);


2)子查询出现在*中,充当字段

 select 字段,字段,(select语句) from 表名;

例子:子查询出现在where中,充当条件
1、查询"国际新闻"下的所有新闻

   select * from newsArticleswhere typeId in (select typeId from newsTypes where typeName='国际新闻');


2、删除typeId=3的所有分类

   delete from reviews where articleId in (select articleId from newsArticles where typeId=3);delete from newsArticles where typeId=3;delete from newsTypes where typeId=3;

例子:子查询出现在*位置,充当字段
歌手表:userId、userName、age....
演唱会表:id、userId、name、时间、地点...
查询结果:userId、userName、age...演唱会的次数

selectuserId,userName,(select count(*) from 演唱会表 where 演.userId=歌.userId)from 歌手表;


---------------

select typeId,typeName,(select count(*) from newsArticles a where a.typeId=b.typeId) as newsCountfrom newsTypes b;

内连接:将多张表的结果集,合为一个结果集(合并字段)

select * from 表1 inner join 表2 on 关联的字段相等;
select * from 表1,表2,表3... where 关联的字段相等;


外连接:将多张表的结果集,合为一个结果集(合并字段)
1、左外连接:以左表为主、右表为副

  select * from 表1 left outer join 表2 on 关联的字段相等;


2、右外连接:以右表为主、左表为副

   select * from 表1 right outer join 表2 on 关联的字段相等;

多表查询
1、子查询:显示的只是一张表中的数据(被动)
2、内连接:合并字段
3、外连接:不用
-----------------------------------------------------------
MySQL高级
1、视图
2、触发器
3、存储过程
4、T-SQL编程
5、索引
6、存储引擎
7、事务
8、备份与还原
-----------------------------------------------------------
视图View:简化查询语句

创建视图

create view 视图名
as
select语句;
create view myview
as
select articleId,typeName,title,content from newsArticles a,newsTypes b where a.typeId=b.typeId;


修改视图

alter view 视图名
as
select语句;


查看视图
1、查看当前库中现存的表

   show tables;


2、information_schema库->views表

select table_schema,table_name from information_schema.views;


使用视图:把视图当表用

select * from 视图名 where 条件 order by 字段 limit 起始值,条数;
select * from myview;
select articleId,typeName,title from myview;

建议:只对视图执行查询操作


删除视图
1、删除视图所在的库

drop database 库名;


2、删除视图

drop view 视图名;


视图知识点
1、作用
2、创建、修改、查看、使用、删除


视图注意:
1、视图中只能存放select查询语句
2、建议只对视图执行查询操作


视图的使用场合
一个复杂的查询语句经常使用
-----------------------------------------------------------
触发器Trigger:数据库中的事件

作用:当用户对表进行增、删、改操作的同时,是否要执行其他操作

触发器的执行时间
before:当用户对表进行增、删、改之前,先调用触发器,后执行增、删、改操作
after:当用户对表进行增、删、改之前,先执行增、删、改操作,后调用触发器

触发器的类型
insert:当对表进行insert操作时,系统将自动调用触发器
update:当对表进行update操作时,系统将自动调用触发器
delete:当对表进行delete操作时,系统将自动调用触发器

修改mysql语句的定界符

delimiter 符号


创建触发器

delimiter //
drop trigger if exists 触发器名//
create trigger 触发器名
before|after  insert|update|delete
on 表名
for each row
beginsql语句;sql语句;sql语句;
end//
delimiter ;


删除触发器
1、删除触发器所在的库
2、删除触发器所施加的表
3、删除触发器

   drop trigger 触发器名;


查看触发器:information_schema库->triggers表

select * from information_schema.triggers;
select trigger_schema,trigger_name from information_schema.triggers;


例子:修改bbsInfo表中的记录,触发器自动向userInfo添加一条记录

delimiter //
drop trigger if exists updateBbs//
create trigger updateBbs
after update
on bbsInfo
for each row
begininsert into userInfo(userName,password,age)values('tom','111',30);
end//
delimiter ;update bbsInfo set clickTimes=100 where bbsId=3;

例子:统计表功能

create table bumen
(bmId   int    auto_increment primary key,bmName  varchar(20) not null
);
create table employee
(empId  int   auto_increment primary key,userName varchar(20) not null,tel  varchar(20) not null
);
create table tongji
(bmCount int default 0,#记录部门总数empCount int default 0#记录员工总数
);
insert into tongji values(0,0);


部门表添加记录的触发器

delimiter //
drop trigger if exists addBm//
create trigger addBm
after insert
on bumen
for each row
beginupdate tongji set bmCount=bmCount+1;
end//
delimiter ;

部门表删除记录的触发器

delimiter //
drop trigger if exists delBm//
create trigger delBm
after delete
on bumen
for each row
beginupdate tongji set bmCount=bmCount-1;
end//
delimiter ;insert into bumen(bmName)values('开发部');
insert into bumen(bmName)values('测试部');
insert into bumen(bmName)values('市场部');
delete from bumen where bmId=3;


触发器知识点
1、作用
2、创建、查看、删除


触发器注意
1、一个触发器最多只能有一个类型
2、一个触发器只能监听一张表的操作
3、触发器由系统自动来调用
4、触发器没有参数、没有返回值
----------------------------------------------------------
存储过程Procedure:自定义函数

特点:
1、一次编写,多次调用
2、有参数
3、有返回值

创建存储过程

delimiter //
drop procedure if exists 存储过程名//
create procedure 存储过程名()
beginsql语句;sql语句;sql语句;
end//


调用存储过程

call 存储过程名(值,值...);


删除存储过程
1、删除存储过程所在的库
2、删除存储过程

 drop procedure 存储过程名;


查看存储过程:mysql库->proc表

select * from mysql.proc;
select db,name from mysql.proc;


例子一:查询bbsInfo表的记录

delimiter //
drop procedure if exists getBbsInfo//
create procedure getBbsInfo()
beginselect * from bbsInfo;
end//
delimiter ;call getBbsInfo();

例子二:查询bbsInfo表的记录,但传bbsId参数

delimiter //
drop procedure if exists hello//
create procedure hello(id int)
beginselect * from bbsInfo where bbsId=id;
end//
delimiter ;call hello(7);


例子:删除指定的新闻分类  typeId=3

delimiter //
drop procedure if exists delType//
create procedure delType(tid int)
begindelete from reviews where articleId in (select articleId from newsArticles where typeId=tid);delete from newsArticles where typeId=tid;delete from newsTypes where typeId=tid;
end//
delimiter ;call delType(4);

存储过程知识点
1、介绍、作用
2、创建、调用、删除、查看
3、参数


存储过程注意
1、一次编写,多次调用
2、有参数、有返回值
3、必须通过用户显式的来调用


存储过程的使用场合
实现网站上的一个功能,必须要执行多个sql语句


存储过程与触发器的区别?
1、存储过程是由用户来调用,触发器是由系统自动调用
2、存储过程有参数有返回值,触发器没有参数也没有返回值
------------------------------------------------------------
总结:
1、多表查询语句
2、视图View
3、触发器Trigger
4、存储过程Procedure

相关文章:

SQL高级知识点

MySQL基础 1、安装 1)设置编码 2)设置密码 2、配置文件:my.ini、my.cnf 1)设置端口号 port3306 2)设置编码 default-character-setutf8character-set-serverutf8 3)存储引擎 default-storage-engineINNODB 4)最大连接数 max_connections100 注意&…...

【安全】原型链污染 - Code-Breaking 2018 Thejs

目录 准备工作 环境搭建 加载项目 复现 代码审计 payload 总结 准备工作 环境搭建 Nodejs BurpSuite 加载项目 项目链接 ① 下载好了cmd切进去 ② 安装这个项目 可以检查一下 ③运行并监听 可以看到已经在3000端口启动了 复现 代码审计 const fs require(fs) cons…...

【架构】探索计算机处理器的世界:ARM和x86架构解析及指令集

目录 导语ARM架构x86架构AMD公司对比与应用不同架构处理器的指令集结语 导语 计算机处理器是数字化时代的核心引擎,而在众多处理器架构中,ARM和x86是备受关注的三个。本文将带您深入探索这三个架构,介绍它们的特点、公司背景以及应用领域。让…...

SpringBoot权限认证

SpringBoot的安全 常用框架:Shrio,SpringSecurity 两个功能: Authentication 认证Authorization 授权 权限: 功能权限访问权限菜单权限 原来用拦截器、过滤器来做,代码较多。现在用框架。 SpringSecurity 只要引入就可以使…...

OpenGL-入门-BMP像素图glReadPixels

glReadPixels函数用于从帧缓冲区中读取像素数据。它可以用来获取屏幕上特定位置的像素颜色值或者获取一块区域内的像素数据。下面是该函数的基本语法: void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *da…...

同源策略以及SpringBoot的常见跨域配置

先说明一个坑。在跨域的情况下,浏览器针对复杂请求,会发起预检OPTIONS请求。如果服务端对OPTIONS进行拦截,并返回非200的http状态码。浏览器一律提示为cors error。 一、了解跨域 1.1 同源策略 浏览器的同源策略(Same-Origin Po…...

基于jeecg-boot的flowable流程跳转功能实现

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/nbcio-boot 前端代码:https://gitee.com/nbacheng/nbcio-vue.git 在线演示(包括H5) : http://122.227.135.243:9888 今天我…...

react图片预加载

道阻且长,行而不辍,未来可期 图片预加载的原理:new一个image对象,用这个对象加载图片,等这个对象将这个图片请求完后,再将这个图片放入原本应该放置的位置 代码如下: import React, { useEffe…...

数据库管理

SQL语言分类: DDL:数据定义语言,用于创建数据库对象,如库、表、索引等 DML:数据操纵语言,用于对表中的数据进行管理 DQL:数据查询语言,用于从数据表中查找符合条件的数据记录 DCL&am…...

【2023年11月第四版教材】《第8章-整合管理》(第3部分)

《第8章-整合管理》(第3部分) 9 监控项目工作9.1 监控项目工作★★★9.2 数据分析9.4 决策9.5 工作绩效报告 10 实施整体变更控制10.1 实施整体变更控制★★★ (18上36)10.2 变更请求★★★10.3变更控制工具★★★10.4 数据分析10…...

初阶数据结构(三)链表

💓博主csdn个人主页:小小unicorn💓 ⏩专栏分类:c 🚚代码仓库:小小unicorn的学习足迹🚚 🌹🌹🌹关注我带你学习编程知识 前面我们讲的线性表的顺序存储结构。它…...

Python小知识 - 八大排序算法

八大排序算法 排序算法是计算机科学中非常重要的一个研究领域。排序算法可以分为内部排序和外部排序,内部排序是数据记录在计算机内部,而外部排序是数据记录在计算机外部,这里我们主要讨论内部排序。 内部排序中的算法大致可以归纳为四类&…...

安卓动态申请权限

我们在使用一些官方app时&#xff0c;刚下载进去之后经常会弹出各种各样的权限获取请求&#xff0c;今天简单学习了下&#xff0c;希望不会误人子弟哈哈哈哈。 一、将需要用到的权限添加到Manifest清单里 <uses-permission android:name"android.permission.WRITE_EXT…...

关于亚马逊云科技云技能孵化营学习心得

1、活动介绍 本活动主要是面向想要全面了解亚马逊云科技 (Amazon Web Services) 云的个人&#xff0c;而不受特定技术角色的限制。内容包括亚马逊云科技云概念、亚马逊云科技服务、安全性、架构、定价和支持等等&#xff0c;此外还可以参加亚马逊的认证考试。 2、学习过程 该…...

计算机安全学习笔记(III):强制访问控制 - MAC

基本概念 强制访问控制是一种高级访问控制机制&#xff0c;旨在通过强制执行事先定义的安全策略&#xff0c;实现资源和信息的严格保护。与自主访问控制&#xff08;Discretionary Access Control&#xff0c;DAC&#xff09;不同&#xff0c;MAC 的控制权不由用户自身决定&am…...

java判断ip是否为指定网段

具体网络知识原理请看这个博文 /**** param address servletRequest.getRemoteAddr();* param host servletRequest.getRemoteHost();* return* Description 检验IP是否符合安全限定*/private boolean ipIsInNet(String address, String host){Set<String> iPset allow…...

如何通过人工智能和自动化提高供应链弹性?

全球供应链中的数字化转型已经引起了广泛关注&#xff0c;尽管在过去的十年中&#xff0c;这一话题被广泛讨论&#xff0c;但许多公司仍然对如何实现这一不明确的目标感到困惑。人们普遍认识到这种转变的重要性&#xff0c;而新冠疫情及其带来的巨大影响也为行业向数字化转型方…...

【Apollo学习笔记】——规划模块TASK之PATH_REUSE_DECIDER

文章目录 前言PATH_REUSE_DECIDER功能简介PATH_REUSE_DECIDER相关配置PATH_REUSE_DECIDER总体流程PATH_REUSE_DECIDER相关子函数IsCollisionFreeTrimHistoryPathIsIgnoredBlockingObstacle和GetBlockingObstacleS Else参考 前言 在Apollo星火计划学习笔记——Apollo路径规划算…...

框架分析(6)-Ruby on Rails

框架分析&#xff08;6&#xff09;-Ruby on Rails 专栏介绍Ruby on Rails核心概念以及组件讲解MVC架构模式约定优于配置强大的ORM支持自动化测试丰富的插件生态系统RESTful路由安全性总结 优缺点优点快速开发简单易学MVC架构强大的ORM支持大量的插件和Gem支持 缺点性能问题学习…...

LLMs NLP模型评估Model evaluation ROUGE and BLEU SCORE

在整个课程中&#xff0c;你看到过类似模型在这个任务上表现良好&#xff0c;或者这个微调模型在性能上相对于基础模型有显著提升等陈述。 这些陈述是什么意思&#xff1f;如何形式化你的微调模型在你起初的预训练模型上的性能改进&#xff1f;让我们探讨一些由大型语言模型开…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...