Mysql基础与高级汇总

news2024/12/23 14:41:35

SQL语言分类

DDL:定义

DML:操作

DCL:控制(用于定义访问权限和安全级别)

DQL:查询

Sql方言 ->sql:结构化查询语言

mysql:limit 
oracle:rownum 
sqlserver:top 
但是存储过程:每一种数据库软件一样

SQL语法要求: ·SQL语句可以单行或多行书写,以分号结尾;

可以用空格和缩进来来增强语句的可读性;

关键字不区别大小写,建议使用大写;

表名,列名也不区分大小写

值可能区分,根据创建表,数据库的字节集决定

DCL

创建用户

create user zhangshan@localhost indentified by '123'
#创建用户名为张三 ,密码123 的本地用户
1396:用户名已经存在
创建一个远程用户:任何电脑都可以访问mysql服务器
用户名 : abc123 密码:123
create user abc123@'%' indentified by '123';

DCL了解

数据控制语句:DBA操作DCL:授权,撤销权限操怍
创建用户.除用户,修改用户属于DDL语句  

查看某个用户有什么权限:

show grants for 用户名;


撤销权限:

revoke 权限1,权限2 on 数据库名.*/表名  from  用户 

改root用户:

DDL

-- "select * from user";
-- create database [if not exit] 数据库名称 -- 防止数据库名称存在时创建失败
-- charset :字符集 COLLATE:排列规则数据集(默认是)
--  utf8:中文占三个字节  24位的话,它的大小int类型:4个字节
-- 使用utf8mb4

-- 排序规则推荐使用:utf8mb4_bin

#创建数据库
create database if not exists mydb
default character set utf8mb4
collate utf8mb4_bin
#删除数据库
drop database if exists mydb
#修改 字符集
alter database mydb character set utf8
#查看排序编码
show variables like 'collation_%'
#查看字符集
show variables like 'character_set_%'

修改表:

修改列名:alter tablename change tell iphone varchar(20)
删除某一列:alert tablename drop tell 
修改表明:alert tablename rename to anothertablename
实际开发尽量不要修改表,尽量在表修改之前设计好
查看表结构:desc tablename; 

CRUD增删改查

create table tablename(
	id in comment '主键',
	name varchar(20) comment '姓名',
	sex char(1) comment '性别',
	borthday date comment '出生日期',
	address varchar(200) comment '地址'
) comment '学生表';
insert into 表名 values (值1,值12,值3)
sex char(1) -> 2个字节   插入'男' 不报错,可以存下,

给列赋值的顺序,跟创建表的列的顺序一致

值:char varchar date  -> '',就是说字符串,日期都用''引起

日期赋值格式:1999-12-23

alter tablename modify id int not null;
#设置这一属性后,插入或者修改数据是必须要有id不为空这一准则
#修改
1.全表修改
update 表名 set 列名1 = 值1 ,列名2 = 值2......;

删除(物理删除,硬删除) ->实际开发中,你自己在软件中删除自己的账号更多的是一种软删除
物理:delete from 表名(后面没写就是全表删除)
只能一行一行的删除

加条件的删除(部分行删除)
delete from tbname where name = "李四";

DDL删除(删数据) -> 也是全表删除 但是不同于delete:1.delete是DML语句 truncate是DDL语句,delete删除表中的数据,truncate是删除表中的数据(drop table),再重新创建表,delete自增列不会还原,truncate删除表,自增列会还原,delete可以添加条件,部分删除,但是truncate只能全表删除
truncate tablename 表名;
#example:
alert table tablename modify id int primary key auto_increment ;
desc tb_name;
insert into tablename(name,sex) values ('张山','男');
insert into tablename(name,sex) values ('张山','男');
insert into tablename(name,sex) values ('张山','男');
select * from tablename;
delete from tablename;
insert into tablename(name,sex) values ('张山','男');
select * from tablename;
此时id从4开始 不会还原为1
但是truncate可以还原为id = 1
alter table;
软删除

Mysql函数

#获取当前日期
select curdate();
#获取日期加时间
select now()
#时间
select curtime()


create table order(
	id int primary key,
    createtime datatime sysdate()#设置时间为系统时间
)
insert into order values(1,now());

##获取日期各部分的值
select year(now()),month(now()),dayofyear(now())-1,dayofmonth(now());


#日期的加减  -- #定时推送
select adddate(date(),7)#当前日期加7天  返回的是指定天数的日期

日期格式化 %表示
select date_format(now(),'%年Y年%m月%d日 %H:%i:%s');
#某个日期/月最后一天的日期
#两百天的日期 ,该月的最后一天的日期
select last_day(addDate(now(),200))

#流程函数
三个 
 if ifnull case
 select e.*,if(sal>=1500,'高薪水','底薪水') 薪水条件 from emp;
 ifnull(表达式,值) --> if(表达式 is null,值,表达式)

 

 

存储过程-游标-索引

修改存储过程需要重新编译(先删除后编译)

变量赋值用set 

变量赋值用set 

repeat

游标

游标解决(类似java迭代器):由于变量只能存一个值,不能存多个值注意!!!!

 

索引

普通查询(一行一行对比,叫全表扫描)

未完

多表查询

  1. 联合查询 交集 并集(mysql只支持这一种) 差集

  2. 表连接查询 内连接 外连接 自连接(内连接,外连接) 自然连接 全连接(mysql不支持)

  3. 子查询

  4. 函数查询

联合查询

把多个sql语句的结果集进行处理(交,并,差的处理) mysql只支持并集处理,但是可以sql实现差,交
交集关键字:union/union all
union可以去重
union all不可以去重
select 的sq语句
    union/union all
    
要求:要求两个sql语句的结果集有相同数量/名字字段  
union:可以达到去重的目的
union可以去重复

union all:不去重

交集intersect:mysql5.7不支持 -> intersect

select * from emp where deptno = 20
intersect
select * from emp where job = 'CLERK'; 
--->不能实现,但是可以间接实现->内连接
替代法:内连接
要求:是同一张表
select * from emp where deptno = 20
and job = 'CLERK';
​
select * from emp where deptno = 'BM02'
and empno = 'E103';

差集(mysql也不支持)

A - B:两个集合的相差 存在与A但不存在于B

间接实现:

select * from where deptno = 20 and job != 'CLERK';

联合查询结束

外连接的方式

表连接
1.自然连接 笛卡尔积

带条件的筛选:(利用笛卡尔积)

其中大部分是基于外键的等值条件

1.1内连接:

inner select *|列名from 表1(表名,查询结果集,一定取别名)

内连接:要求A中的数据,在B表中必须有一条数据对应,查筛选出来

查询员工信息以及部门信息(emp表没有) ->需要两张表(只能:要求A中的数据,在B表中必须有一条数据对应,查筛选出来)

查询所有员工信息以及部门信息(内连接就不能使用,员工可能没有对应的部门,但是内连接要求要求A中的数据,在B表中必须有一条数据对应,查筛选出来)

emp:14条 dept:4条数据 ->查出14条数据

内连接另一种写法:(主流数据库都支持)

1.2外连接
#左外连接:left[ outer] join  
# join左边的表的数据要全部显示,右边的表数据,满足条件才显示
#右外连接right [outer] join
# join右边的表的数据要全部显示,左边的表数据,满足条件才显示
A left [outer] join B; == B right [outer] join A;

查询所有员工信息以及部门信息:

之前TOM显示不出来,因为dept=50不能对应在之前的内连接里面不成立,emp表只有10-30的数据,不能对应,这里外连接没有50对应的?怎么班,那就是null来对应

前者先显示员工,后者先显示部门

显示默认顺序可以改:

#表连接,如果某个字段在两张表名字一样,一定使用表别名.字段名区分

1.3全连接
全连接:两边表的数据要全部显示.full join在mysql不支持 
间接实现 left join和right join还有union(去重)
两个左外,一个Union实现  
oracle可以直接用full关键字实现

1.4自连接:自己跟自己连

例子:查员工的领导信息

因为员工和领导的信息都在一张表里面,查员工以及他的领导信息需要用到自连接,这张表要连两次

例子:查找员工的姓名和领导的姓名

select e1.ename 员工姓名,e2.ename 领导姓名 from emp e1 join emp e2
on e1.mgr = e2.empno;
员工表的领导编号mgr对应领导表的编号empno

备份数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1119281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

msvcp110.dll无法继续执行代码怎么办?msvcp110.dll丢失的解决方法

msvcp110.dll 丢失通常意味着你的计算机上缺少一个名为 msvcp110.dll 的动态链接库文件。这个文件是 Microsoft Visual C 2010 Redistributable Package 的一个组件,它包含了一些运行时库文件。当你的计算机缺少这个文件时,可能会出现一些问题&#xff0…

有哪些靠谱的获客渠道? 大家都在说精准大数据获客,你了解过没?

如何获取准确、实际的客户信息是众多企业在获客阶段最头疼的问题,想要精准获客就需要了解客户的真实需求,若企业无法满足又无法预估到客户意向,那么将会浪费双方的时间,费力不讨好,企业获客难题是这么多年最难以解决的…

接口自动化测试难点:数据库验证解决方案

接口自动化中的数据库验证:确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环,而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码,帮…

关于Mysql中的索引与事务

索引 定义 索引:为了提高查找效率而使用的一种数据结构把数据组织起来,可以把索引理解在书的目录或字典的检索表(拼音检索) 索引是一种特殊的文件,可以包含着对数据表里的所有记录的引用指针,对表中的一…

jQuery实现输入框提示并点击回显功能呢

html代码: <input type"text" id"affOrganization" name"affOrganization" class"form-control" placeholder"Search..." style"width: 300px" > <div class"search_suggest" id"gov_se…

模拟退火算法(SA)求解旅行商问题(TSP)python

目录 一、模拟退火算法求解TSP&#xff08;city14&#xff09;的python代码 二、city14的运行结果 三、 模拟退火算法求解TSP&#xff08;city30&#xff09;的python代码 四、city30的运行结果 一、模拟退火算法求解TSP&#xff08;city14&#xff09;的python代码 impor…

中文编程开发语言工具构件说明:屏幕截取构件的编程操作

屏幕截取 用于截取指定区域的图像。 图 标&#xff1a; 构件类型&#xff1a;不可视 重要属性 l 截取类型 枚举型&#xff0c;设置在截取屏幕时的截取类型。包括&#xff1a;全屏幕、指定区域、活动窗口三种。当全屏幕截取时相当于执行了硬拷屏&#xff08;PrintScre…

优化Scrum敏捷需求管理流程,敏捷需求如何管理。

​优化敏捷需求管理流程的方法可以参照如下&#xff1a; 明确需求 。在项目开始时&#xff0c;要确保清楚地理解客户需求&#xff0c;明确项目的目标和范围&#xff0c;以便能够在敏捷迭代中快速响应需求变更。 使用用户故事 。采用用户故事的方式&#xff0c;让客户和开发团…

虚拟化、容器与Docker基本介绍以及安装部署(Docker 基本管理)

目录 1 Docker 概述 1.1 Docker与虚拟机的区别 1.2 容器在内核中支持2种重要技术 1.3 Docker核心概念 2 安装 Docker 2 Docker 镜像操作 2.1 搜索镜像 2.2 获取镜像 2.3 镜像加速下载 2.4 查看镜像信息 2.4.1 查看下载的镜像文件信息 2.4.2 查看下载到本地的所有镜像…

【STL】bitset的模拟实现

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C进阶 ⭐代码仓库&#xff1a;C进阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

HTML5有哪些新特性?移除了哪些元素?

HTML5引入了许多新特性&#xff0c;以下是其中一些主要的新特性&#xff1a; 1&#xff1a;语义化元素&#xff1a;HTML5引入了一些新的语义化元素&#xff0c;如 <header>、<footer>、<nav>、<article>、<section>等&#xff0c;使得页面结构…

计算机组成原理 new09 定点数的移位运算

文章目录 原码/正数反码/正数补码的算术移位负数反码的算术移位负数补码的算术移位算术移位总结符号扩展算术移位的应用真值的算术移位逻辑移位逻辑移位的运用 循环移位不带进位位的循环移位(小循环)带进位位的循环移位(大循环)原码定点一位乘法原码定点一位乘法(手算) (这里我…

【Qt控件之QToolBox】介绍及使用

概述 QToolBox类提供了一个列式的带有选项卡的小部件条目。工具箱是一个小部件&#xff0c;以一个列式的选项卡显示在上方&#xff0c;并在当前选项卡下方显示当前的小部件条目。每个选项卡在选项卡列中有一个索引位置。选项卡的小部件条目是一个QWidget。 每个小部件条目都有…

婚纱摄影行业,还在使用电梯广告?不如试试大数据精准营销

以武汉为例&#xff0c;婚纱摄影的以薇拉&#xff0c;青禾&#xff0c;韩国艺匠&#xff0c;果石&#xff0c;等品牌为主&#xff0c;竞争尤其惨烈&#xff0c;婚纱摄像婚庆行业主要依赖于线下推广&#xff08;如依靠与酒店、婚礼策划等上下游产业合作&#xff09;&#xff0c;…

Google Colab免费GPU使用教程

目录 前言一、Google Colab介绍二、使用步骤1、创建谷歌云盘2、创建一个新的Colab Notebook3、设置免费的GPU4、挂载Google Drive5、运行代码 三、防止掉线措施四、参考 前言 有时候本地跑代码可能耗时比较久&#xff0c;而且还会耽误你本地电脑的使用&#xff0c;购买云服务器…

智能矩阵系统解决的问题?

智能矩阵系统可以解决的问题多种多样&#xff0c;它主要通过人工智能技术应用于矩阵系统&#xff0c;解决一些传统方法难以处理的问题。 以下是一些常见的应用场景&#xff1a; 1. 数据管理&#xff1a;智能矩阵系统可以有效地管理大量的数据&#xff0c;包括数据的存储、检索…

【已解决】Unity 使用NPOI 写word文档报错:System.TypeLoadException:……0.86.0.518

报错显示 System.TypeLoadException: Could not resolve type with token 01000080 from typeref (expected class ICSharpCode.SharpZipLib.Zip.UseZip64 in assembly ICSharpCode.SharpZipLib, Version0.86.0.518, Cultureneutral, PublicKeyToken1b03e6acf1164f73) at NPOI.…

C++初阶--类与对象(1)

文章目录 类的引入类的定义访问限定符类成员的注意事项变量名的冲突 类的实例化类成员的声明与定义类的大小this指针特性 总结 类的引入 在c语言中&#xff0c;我们会这样写一个栈&#xff1a; struct Stack {int* a;int top;int capacity; };void StackInit(struct Stack* p…

利用Bootstrap的分页组件实现分页效果

在网页开发过程中&#xff0c;如果碰到内容过多的情况&#xff0c;一般都会使用分页处理。 在<ul>元素上添加pagination类&#xff0c;在<li>元素上添加page-item类&#xff0c;在超链接中添加 page-link类&#xff0c;即可实现一个简单的分页。 目录 00-基础知识…

STM32项目工程的搭建

视频连接&#xff1a; [2-1]--入门 新建工程 及 工程搭建 -------------_哔哩哔哩_bilibili 1.STM32开发方式 1.标志库 表示直接调用已经写好的程序&#xff0c;通过类似于函数调用直接使用即可。 2.HAL库 程序员自己手动的操作寄存器进行编程 2.工程模板 3.搭建工程的步骤 1…