关键词:
✨ 目录
🎈 初级语法之登录、库操作、表操作、数据操作,索引
- 登录数据库:
mysql –u用户名 [-h服务器IP地址] [-P端口] -p密码
- 数据库操作之显示所有数据库:
show databases;
- 数据库操作之创建数据库:
create database 数据库名;
- 数据库操作之选择数据库:
use 数据库名称;
- 数据操作之查看执行查询效率:
explain sql语句
- 数据库操作之删除数据库
drop database 数据库名;
drop database if exists 数据库;
- 数据表操作之显示所有数据表
show tables;
show tables in 数据库名;
- 数据表操作之创建数据表
create table 表名(
-- code
)engine=innodb comment '用户表';
- 数据表操作之删除数据表
drop table 表名;
drop table if exists 表名;
- 数据表操作之显示表结构
describe 表名;
describe 表名\\G;
-- 推荐简写方式
desc 表名;
- 数据表操作之显示建表语句
show create table 表名;
show create table 表名\\G;
- 数据表操作之修改表的属性
alter table 表名 属性名=新属性值;
alter table test engine=MyISAM;
- 数据表操作之修改表名或者将表迁移数据库
rename table [库名.]旧表名 to [库名.]新表名;
- 数据表操作之向已有的一个表中添加字段
alter table 表名 add 新字段名 字段类型 [字段属性列表];
- 数据表操作之删除表字段
alter table 表名 drop 字段名
- 数据表操作之修改已有字段名称
alter table 表名 change 旧字段名 新字段名 新字段类型 [字段属性];
- 数据表操作之修改表字段类型和属性
alter table 表名 modify 字段名 字段新类型 [字段新属性列表];
- 数据操作之新增数据
insert into 表名 values (字段1值, 字段2值, … 字段n值);
insert into 表名 (字段1, 字段2, … 字段n) values (字段1值, 字段2值, … 字段n值);
- 数据操作之查询数据
select 字段列表 from [库名.]表名 [where 查询条件];
- 数据操作之更新数据
update 表名 set 字段1=字段1新值, 字段2=字段2新值, …. 字段n=字段n新值 where 条件语句;
- 数据操作之删除数据
delete from 表名 where 条件语句;
- 数据操作之清空表并重新规划索引
truncate [库名.]表名;
- 主键索引之建立字段自增
Alter table 表名 modify 字段名 字段类型 auto_increment
- 主键索引之建立主键索引
alter table 表名 add primary key(字段名称)
- 主键索引之删除主键索引
Alter table 表名 drop primary key;
- 主键索引之删除字段自增
alter table 索引名 modify id int unsigned;
- 唯一索引之创建唯一索引
create unique index 索引的名称 on 表名(字段名称)
- 唯一索引之删除唯一索引
alter table 表名 drop index 索引的名称
- 普通索引之创建普通索引
create index 索引的名称 on 表名(字段名称);
- 普通索引之删除普通索引
alter table 表名 drop index 索引的名称
- 前缀索引之创建前缀索引
alter table 表名 add index 索引名称(字段名称(长度))
- 前缀索引之删除前缀索引
alter table 表名 drop index 索引名称
🎈 高级语法之主键、试图、变量、流程、函数、存储过程
- 高级语法之主键
- 使用外键的前提:外键所存在的表必须是
Innodb
引擎的、 - 默认情况下被关联的外键数据是
无法删除
的 - 默认情况下被关联的字段值是无法被修改的,非关联字段可以修改
- 主表关联字段修改后,会影响外键字段的值
- 主表数据删除后,外键字段会自动修改为
NULL
值
-- 创建外键
create table tableName(
foreign key (外键字段) references 主表 (主表关联字段) [删除时执行语句] [更新时执行语句];
)engine=Innodb charset=utf-8;
-- 删除外键
alter table 表名 drop foreign key 外键标识;
-- 删除索引
alter table 表名 drop index 索引字段名;
-- 添加外键
alter table 表名 add foreign key (外键字段) references 主表 (主表关联字段) [删除时执行语句] [更新时执行语句];
- 高级语法之视图
- 应用场景:有一个查询语句非常复杂,写太多很麻烦,可以用一个视图来代替这个
select
语句,充当一个变量
角色 - 视图其实是以表子查询的
SQL
语句的形态存在的 - 操作视图就相当于操作原表,
一般不会直接操作视图,保持视图数据的干净
- 重启
MYSQL
后,在不同的黑窗口客户端中依然能够使用重启之前创建的视图 - 视图
可以
在多个客户端进程中通用,视图必须在选择数据库之后
才能进行操作
-- 创建视图
create view 视图名称 as (查询SQL语句);
-- 删除试图,删除的时候不会影响源表
drop view 视图名称;
drop view if exists 视图名称;
-- 查看数据库中所有视图
select * from information_schema.views;
- 高级语法之变量
mysql
变量分类:系统变量
、用户变量
、局部变量
- 查看全局所有变量:
show global variables;
- 查看所有的会话:
show session variables;
- 修改全局变量:
set @@global.变量名=变量值;
,重启数据库后,set
方式修改的全局变量将会被重新初始化 - 修改会话变量:
set @@session.变量名=变量值;
,重启数据库之后,set
方式修改的会话变量的值将会被还原 - 定义用户变量:
set @变量名=变量值;
- 定义局部变量:
declare 变量名 变量数据类型 [default 默认值];
- 定义
mysql
结束符:delimiter 符号
-- 定义用户变量
set @变量名=变量值;
set @变量名=变量值,@变量名=变量值;
-- 获取用户变量
select @变量名,@变量名;
-- 通过select语句定义用户变量,将查询结果中的最后一条数据的name,age,email分别赋值给不同的用户变量
select @var1=name,@var2=age,@var3=email from table where 1;
-- 定义局部变量示例
declare var1 int default 0;
- 高级语法之流程分支
- 流程分支:
if分支
、while循环
if 条件语句 then
if结构体
[elseif 条件语句 then
elseif结构体]
else
else结构体
end if;
-- if分支示例
if @var > 100 then
insert into values('');
else
insert into values('');
end if;
-- while循环
while 条件 do
循环结构体
end while;
- 高级语法之函数
-- 定义函数
create function 函数名(形参1 形参1数据类型, 形参2 形参2数据类型,…, 形参n 形参n数据类型)
returns 预估的函数返回值数据类型
[begin]
函数的结构体
[end]
-- 使用函数
select 函数名(实参列表);
-- 删除函数
drop function 函数名;
- 高级语法之存储过程
- 参数的传递类型:
in
:只进不出(只传值不传名) 在存储过程中修改值将不影响外部变量out
:只出不进(只传名不传值) 在存储过程中无法获得值inout
:能够进也能够出(即传名也传值) 最常用的类型
-- 创建存储过程
create procedure 存储过程名(数据传递类型 形参1 形参1数据类型, 数据传递类型 形参2 形参2数据类型,…, 数据传递类型 形参n 形参n数据类型)
begin
存储过程结构体
end
-- 调用存储过程
call 存储过程名(实参列表);
-- 删除存储过程
drop procedure 存储过程名;
🎈 查询语法之联合查询、子查询、链接查询
联合查询
:联合两条查询数据
-- 如果存在相同的数据,则保留其中一条
(select * from table where id>200)
union
(select * from table where id>200);
-- 如果存在相同的数据,则全部保留
(select * from table where id>200)
union all
(select * from table where id>200);
标量子查询
:本条查询语句的查询条件 是 另一个查询语句查询出来的单个值
-- 查询id为10的老师所带的所有班级信息
select * from class where teacher_name = (
select name from teacher where id = 10
);
列子查询
:本条查询语句的查询条件 是 另一个查询语句查询出来的一列结果
-- 查询id为10和30的老师所带的所有班级
select * from class where teacher_name in (
select name from teacher where id = 10 or id=30
);
行子查询
:本条查询语句中的查询条件 是 另一个查询语句所查出来的一行记录
select * from class where (teacher_name,teacher_num)=(
select name,num from teacher where id = 10
)
表子查询
:本条查询语句所查询的表 是 另一个查询语句查询出来的一个虚拟表结果集
-- 蠕虫复制
insert into table values(select * from teacher where 1);
exists
查询
-- 查询出table1和table2表name字段同时存在相同值的数据
select * from table1 where exists (select * from table2 where table1.name == table2.name);
- 连接查询之内连接:在两张表中,如果任意一张表的数据根据条件连不上另外一张表中的数据,则这条记录直接被忽略不展示出来
select * from table1 inner join table2 on table1.name = table2.name;
-- 内连接的简写方式可以省略inner关键字
select * from table1 join table2 on table1.name = table2.name;
-- 在内连接中,where关键字可以代替on关键字
select * from table1 join table2 where table1.name = table2.name;
-- using演示案例 两个表存在相同的name字段且值相同才连接
select * from table1 join table2 on using(name);
- 连接查询之交叉连接:所谓的交叉连接,指的是将左表的每条数据都与右表的每条数据连接一次
-- 如果内连接不指定条件,就是交叉连接。
select * from table1 inner join table2;
- 连接查询之左外连接
select * from table left outer join table2 on table.name = table2.name;
-- 简写
select * from table left join table2 on table.name = table2.name;
- 连接查询之右外连接
select * from table right outer join table2 on table.name = table2.name;
-- 简写
select * from table right join table2 on table.name = table2.name;
- 连接查询之全外连接
-- 左外连接 和 右外连接 联合起来
(select * from table right join table2 on table.name = table2.name)
union
(select * from table right join table2 on table.name = table2.name);
- 连接查询之自然连接:两张表有且仅有一个相同的字段,否则数据会出错,所以,实际项目中并没有什么卵用
-- 自然内连接 等同于 内连接使用using条件
select * from table join table2 using(name);
-- 等同于
select * from table natural join table2;
-- 自然左外连接
select * from table natural left join table2;
-- 自然右外连接
select * from table natural right join table2;
一文搞懂│mysql的语法操作命令从入门到精通(代码片段)
✨目录🎈初级语法之登录、库操作、表操作、数据操作,索引🎈高级语法之主键、试图、变量、流程、函数、存储过程🎈查询语法之联合查询、子查询、链接查询🎈初级语法之登录、库操作、表操作、数据... 查看详情
一文搞懂│mysql的语法操作命令从入门到精通(代码片段)
✨目录🎈初级语法之登录、库操作、表操作、数据操作,索引🎈高级语法之主键、试图、变量、流程、函数、存储过程🎈查询语法之联合查询、子查询、链接查询🎈初级语法之登录、库操作、表操作、数据... 查看详情
python入门到精通一文让你彻底搞懂python的函数(代码片段)
🚀作者:“大数据小禅”🚀粉丝福利:加入小禅的大数据社群🚀欢迎小伙伴们点赞👍、收藏⭐、留言💬目录Python中的函数及其调用对于函数的理解:python中的自定义函数自定义空函数Python特性之... 查看详情
快速从入门到精通!进入mysql数据库命令(代码片段)
...时候,应用程序会被无情的挂起,等待内核完成操作,因为此时的内核可能将CPU时间切换到了其他需要的进程中,在我们的应用程序看来感觉被卡主(阻塞)了。非阻塞IO当使用非阻塞函数的时候, 查看详情
精通spark系列一文搞懂spark的运行架构,文末附带大数据spark的学习路线
🚀作者:“大数据小禅”🚀**文章简介**:本篇文章属于Spark系列文章,专栏将会记录从spark基础到进阶的内容,,内容涉及到Spark的入门集群搭建,核心组件,RDD,算子的使用,底层原... 查看详情
精通spark系列一文搞懂spark的运行架构,文末附带大数据spark的学习路线
🚀作者:“大数据小禅”🚀**文章简介**:本篇文章属于Spark系列文章,专栏将会记录从spark基础到进阶的内容,,内容涉及到Spark的入门集群搭建,核心组件,RDD,算子的使用,底层原... 查看详情
androidjetpack架构组件从入门到精通,一文通解!
AndroidJetpack集合了一系列的开发库,旨在帮助开发者更容易地创作高质量的应用,同时也更好地兼容老旧版本的Android系统。在正式发布Jetpack两年后的今天,我们已经看到大量的应用开发开始采用Jetpack中的开发库,... 查看详情
从零入门serverless|一文搞懂函数计算及其工作原理
作者|孔德慧(夏莞)?阿里云函数计算开发工程师本文整理自《Serverless技术公开课》,关注“Serverless”公众号,回复“入门”,即可获取Serverless系列文章PPT。什么是函数计算?大家都了解,Serverless并不是没有服务器,而是开发... 查看详情
从零入门serverless|一文搞懂函数计算及其工作原理
作者|孔德慧(夏莞)?阿里云函数计算开发工程师本文整理自《Serverless技术公开课》,关注“Serverless”公众号,回复“入门”,即可获取Serverless系列文章PPT。什么是函数计算?大家都了解,Serverless并不是没有服务器,而是开发... 查看详情
mysql一文搞懂mysql语法(进阶)(代码片段)
数据库语法进阶前言一、数据库约束1.2NOTNULL约束1.3UNIQUE:唯一约束1.4DEFAULT:默认值约束1.5PRIMARYKEY:主键约束1.6FOREIGNKEY:外键约束1.7CHECK约束(了解)二、表的设计三、新增四、查询4.1聚合查询4.1.1聚合函... 查看详情
wpfmvvm从入门到精通4:命令和事件(代码片段)
原文:WPFMVVM从入门到精通4:命令和事件 ?WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:PasswordBox的... 查看详情
awk从入门到精通
...管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行运用,本章主要 查看详情
matlab从入门到精通:图像可视化基础操作(代码片段)
...(1)掌握图形窗口的创建与控制,以及图形窗口的基本操作;(2)熟练掌握二维和三维绘图基本的命令、线型控制;(3)初步掌握用特殊的图形来表现特殊数据的性质,如面积图、直方图、饼图等。(4)掌握坐标轴的控制和... 查看详情
git版本控制软件结合github从入门到精通常用命令学习手册
...Git客户端相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略官方中文手册:http://git-scm.com/book/zhGIT学习手册简介本站为Git学习参考手册。目的是为学习与记忆Git使用中最重要、最普遍的命令提供快速翻阅。这些命令以... 查看详情
git版本控制软件结合github从入门到精通常用命令学习手册
...、最普遍的命令提供快速翻阅。这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数。本手册将从入门到精通指导大家。首先,我们要从如何以Git的思维方式管理源代码开始。如何以GIT... 查看详情
vim从入门到精通
...参数列表按键映射映射前置键寄存器范围标注补全动作,操作符,文本对象自动命令变更历史,跳转历史内容变更 查看详情
mysql数据库基础从入门到精通
...点击查看↓↓↓↓↓↓↓↓↓↓MySQL(一)数据库操作MySQL(二)DML语言MySQL(三)Select查询详解及常用函数MySQL(四)Select总结及补充聚合函数及分组过滤MD5加密M 查看详情
mysql从入门到精通50讲(三十二)-scylladb生产环境集群搭建
...公有云ECS:32C/128G/8T(存储优化IO型本地NVMeSSD直通盘)×5台操作系统版本CentOSLinuxrelease7.4.1708(Core)操作系统内核版本3.10.0-693.el7.x86_64ScyllaDB版本4.4.4因为ScyllaDB集群的数据最终会以SSTable文件方式落盘,所以对磁盘的性能要求非常高, 查看详情