当前位置: 首页 > 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;让我们探讨一些由大型语言模型开…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...