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

BlazorServer中C#与JavaScript的相互调用

BlazorServer中C#与JavaScript的相互调用 前言&#xff1a; ​ 虽然BlazorServer中推荐使用C#在razor页面中的替代JavaScript来完成逻辑的编写&#xff0c;但当需要使用第三方的javascript文件/组件里的内容时&#xff0c;则难免要在C#中调用其方法或对象。反之当你的(用到第…...

深入理解 MD5 消息摘要算法和在密码存储中的应用及安全隐患

MD5 算法相信很多开发人员都听说过, 一个最常见的使用到它的地方就是密码的存储. 当然, 很多人会说, 这个算法已经不太安全了, 确实如果你想更安全的保存密码, 则应该考虑其它更安全的算法, 不过这不属于此次讨论的主题. 什么是 MD5 MD5 是一种算法, MD5 中的 MD 代表 Message…...

python网络爬虫指南二:多线程网络爬虫、动态内容爬取(待续)

文章目录 一、多线程网络爬虫1.1 线程的基础内容、GIL1.2 创建线程的两种方式1.3 threading.Thread类1.4 线程常用方法和锁机制1.5 生产者-消费者模式1.5.1 生产者-消费者模式简介1.5.2 Condition 类协调线程 1.6 线程中的安全队列1.6 多线程爬取王者荣耀壁纸1.6.1 网页分析1.6…...

华为AirEgine9700S AC配置示例

Vlan97为管理Vlan <AirEgine9700S>dis cu Software Version V200R021C00SPC100 #sysname AirEgine9700S #http timeout 60http secure-server ssl-policy default_policyhttp secure-server server-source -i allhttp server enable #set np rss hash-mode 5-tuple # md…...

VUE3基础

一、vue-router v4.x 介绍 | Vue Router 1、安装 yarn add vue-routernext next代表最新的版本 2、路由配置 在src目录下&#xff0c;新建router/index.ts&#xff0c;具体配置如下 import {RouteRecordRaw,createRouter,createWebHashHistory} from vue-router const r…...

Qt应用开发(基础篇)——日历 QCalendarWidget

一、前言 QCalendarWidget类继承于QWidget&#xff0c;是Qt设计用来让用户更直观的选择日期的窗口部件。 时间微调输入框 QCalendarWidget根据年份和月份初始化&#xff0c;程序员也通过提供公共函数去改变他们&#xff0c;默认日期为当前的系统时间&#xff0c;用户通过鼠标和…...

Python学习笔记:正则表达式、逻辑运算符、lamda、二叉树遍历规则、类的判断

1.正则表达式如何写&#xff1f; 序号实例说明1.匹配任何字符(除换行符以外)2\d等效于[0-9]&#xff0c;匹配数字3\D等效于[^0-9]&#xff0c;匹配非数字4\s等效于[\t\r\n\f]&#xff0c;匹配空格字符5\S等效于[^\t\r\n\f]&#xff0c;匹配非空格字符6\w等效于[A-Za-z0-9]&…...

【滑动窗口】leetcode1004:最大连续1的个数

一.题目描述 最大连续1的个数 这道题要我们找最大连续1的个数&#xff0c;看到“连续”二字&#xff0c;我们要想到滑动窗口的方法。滑动窗口的研究对象是一个连续的区间&#xff0c;这个区间需要满足某个条件。那么本题要找的是怎样的区间呢&#xff1f;是一个通过翻转0后得到…...

力扣:73. 矩阵置零(Python3)

题目&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚…...

VB|基础语法 变量定义 函数定义 循环语句 IF判断语句等

文章目录 变量定义函数定义控制台输入输出switch case语句IF语句FOR循环语句不等于逻辑运算符 变量定义 int Dim 变量名 As Int32 0 string Dim 变量名 As String "" bool Dim 变量名 As Boolean False 枚举 Dim 变量名 As 枚举名 数组 Dim array(256) As String…...

长沙法律咨询网站设计开发/seo关键词优化价格

1.git shelve的使用 shelve是idea提供的特有暂存&#xff08;搁置&#xff09;代码的功能。使用场景&#xff1a;当你在一个分支上修改代码后但暂时不想提交&#xff0c;这时你需要切换到另外一个分支上去工作&#xff0c;这时候就需要暂存现在修改的代码。&#xff08;git 提供…...

网站建设费应开具互联网信息服务吗/百度客服在哪里找

1、侯先生经常说“凡走过必留下足迹”&#xff0c;所谓“走弯路”&#xff0c;未必不是一件好事。 2、排队的时候&#xff0c;你会发现一个规律——另一排总是动的比较快&#xff1b;你换到另一排&#xff0c;你原来站的那一排&#xff0c;就开始动的比较快了&#xff1b;你站的…...

急招钟点工4小时220元/上海优化seo排名

【准备工作】如果本机访问报 530 错误&#xff1a;1、检查用户名、密码&#xff1b;2、检查 ftp 目录的用户权限。如果远程主机无法访问&#xff0c;检查防火墙。关于 ftp 的端口&#xff1a;控制端口为21&#xff1b;数据端口在主动模式(PORT)下为20&#xff0c;被动模式(PASV…...

最新网站架构/他达拉非的副作用和危害

用过数据库的都知道&#xff0c;数据库索引与书籍的索引类似&#xff0c;都是用来帮助快速查找的。MongoDB的索引跟关系型数据库的索引几乎一致。1. 索引的创建mongodb采用ensureIndex来创建索引&#xff0c;如&#xff1a;db.user.ensureIndex({"name":1})表示在use…...

重庆忠县网站建设公司哪家好/seo和点击付费的区别

文章目录七、再谈初始化八、protected关键字九、继承方式十、final关键字1.修饰变量或字段&#xff0c;表示常量&#xff08;即不可修改&#xff09;2.修饰类&#xff1a;表示此类不能被继承十一、继承和组合七、再谈初始化 继承关系上的执行顺序 代码如下&#xff08;示例&a…...

怎么查网站是那个公司做的/互联网推广的好处

传送门 二分答案 \(k\)&#xff0c;考虑如何 \(hash\) 使得做起来方便 把每个点挂在 \(k1\) 级祖先上&#xff0c;考虑在祖先上删除 这道题巧妙在于其可以对于 \(dfs\) 序/括号序列 \(hash\) 这样在 \(k1\) 级祖先上暴力删除就好了 # include <bits/stdc.h> using namesp…...