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时,刚下载进去之后经常会弹出各种各样的权限获取请求,今天简单学习了下,希望不会误人子弟哈哈哈哈。 一、将需要用到的权限添加到Manifest清单里 <uses-permission android:name"android.permission.WRITE_EXT…...
关于亚马逊云科技云技能孵化营学习心得
1、活动介绍 本活动主要是面向想要全面了解亚马逊云科技 (Amazon Web Services) 云的个人,而不受特定技术角色的限制。内容包括亚马逊云科技云概念、亚马逊云科技服务、安全性、架构、定价和支持等等,此外还可以参加亚马逊的认证考试。 2、学习过程 该…...
计算机安全学习笔记(III):强制访问控制 - MAC
基本概念 强制访问控制是一种高级访问控制机制,旨在通过强制执行事先定义的安全策略,实现资源和信息的严格保护。与自主访问控制(Discretionary Access Control,DAC)不同,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…...
如何通过人工智能和自动化提高供应链弹性?
全球供应链中的数字化转型已经引起了广泛关注,尽管在过去的十年中,这一话题被广泛讨论,但许多公司仍然对如何实现这一不明确的目标感到困惑。人们普遍认识到这种转变的重要性,而新冠疫情及其带来的巨大影响也为行业向数字化转型方…...
【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
框架分析(6)-Ruby on Rails 专栏介绍Ruby on Rails核心概念以及组件讲解MVC架构模式约定优于配置强大的ORM支持自动化测试丰富的插件生态系统RESTful路由安全性总结 优缺点优点快速开发简单易学MVC架构强大的ORM支持大量的插件和Gem支持 缺点性能问题学习…...
LLMs NLP模型评估Model evaluation ROUGE and BLEU SCORE
在整个课程中,你看到过类似模型在这个任务上表现良好,或者这个微调模型在性能上相对于基础模型有显著提升等陈述。 这些陈述是什么意思?如何形式化你的微调模型在你起初的预训练模型上的性能改进?让我们探讨一些由大型语言模型开…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
