MySQL-基础-数据库-MySQl-数据类型-变量-流程控制语句

数据库

为什么要学习数据库

数据库:是用于保存数据的容器

保存数据的容器存在问题
数据、集合(内存中)断电会丢失
文件存储没有问题,但它查找是有问题的
数据库好处
持久化数据到本地;实现结构化查询,方便管理

数据库的常见概念

DB

数据库(database):存储数据的“仓库”(存储数据的容器),它保存了一系列有组织的数据。

DBMS

数据库管理系统(Database Management System),又称为数据库软件或数据库产品,数据库是通过DBMS创建和操作的容器,用于管理DB中的数据。
<ˈmænɪdʒmənt>

SQL

结构化查询语言(Structure Query Language)专门用来与数据库管理系统(DBMS)的通信。<ˈkwɪəri>
特点:
①不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL;
②简单易学;
③虽然简单,但实际上是一种强有力的语言,灵活使用其他语言元素,可以进行非常复杂和高级的数据库操作;

DBA

数据库管理员(Database administrator)

常见的关系型数据库管理系统

数据库管理系统说明
MySQL瑞典MySQL AB公司开发,属于Oracle旗下产品
关系型数据库将数据保存在不同表中,而不是将所有数据保存在一个大仓库中
特点:体积小、速度快、总体成本低、源码开放
Oracle甲骨文公司推出,是以分布式数据库为核心的一组软件产品,是最流行的C/S 或 B/S 体系结构的 数据库之一
最大的特点就是贵,安装和维护都收费
DB2是IBM推出的,比较适合处理海量的数据
采用了数据分级技术,
SqlServer由微软microsoft推出的
具有伸缩性好 及 相关软件集成程度高等优点

区别

区别MySqlOracleDB2Sql Server
平台allallallwindows
安全性最高级别的ISO标准认证最高级别的ISO标准认证没有安全认证
性能性能最好适用于数据仓库和在线事物处理性能最高在多用户时性能不佳
可操作性较简单,同时有GUI及命令行,windows和unix下一样操作比较复杂,同时有GUI及命令行操作,windows和unix一样较简单,同时有GUI及命令行,windows和unix下一样操作简单,只有GUI

数据库存储数据的特点

  • 将数据放到表中,表再放到库中
  • 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己;表名具有唯一性
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似JAVA中的“类”的设计
  • 表由列组成,称为字段;所有表都是由一个或多个列组成的,每一列类似java中的“属性”
  • 表中的数据是按行存储的,每一行类似与java中的“对象”

数据库管理工具

Navicat、phpMyAdmin、DBeaver、MySQL Workbench、SQLyog

MySQL

概述

  • 背景:
    MySQL数据库隶属于MySQL AB公司,总部位于瑞典,08年被sun收购,09年被oracle收购
  • 优点:
    开源、免费、成本低;性能好、移植性好;体积小、便于安装;
  • 数据库管理系统分类:
    基于共享文件系统的DBMS
    基于客户机-服务器的DBMS(MySQL、Oracle、SqlServer)
    MySQL属于CS架构的软件,通常说的安装数据库 = 安装数据库的服务端。
  • 版本分类:
    社区版(免费)、企业版(收费)。

MySQL的启动与停止

启动停止方式说明
手动方式右键(此电脑)→管理→服务和应用程序→服务→找到要启动的服务名,设置手动开启
命令行设置 cmd启动 net start 服务名(MySQL57 )
停止 net stop 服务名(MySQL)

注意

2022/4/13
当在命令行输入命令启动服务时,提示:发生系统错误5,拒绝访问 的信息,则需要使用管理员权限启动cmd;

MySQL服务的登录和退出

两种方式

  • 通过mysql自带的客户端,只限于root用户
  • 通过windows自带的客户端

登录
mysql -h主机名 -P端口号 -u用户名 -p密码

  • 如果是本机,且端口号是默认的3306,则可以简写为:mysql -u用户名 -p密码
  • 其中,-h主机名 -P端口号 -u用户名 字母与名字之间加或不加空格都可以;但是-p密码之间不能加空格;
  • 可以写完-p之后回车,再输入密码,这时输入的密码就是隐藏起来的。

退出

  • exit
  • Ctrl + C

注意

2022/4/14
当命令行输入登录命令后,显示有问题,则需要配置环境变量。
计算机(右键)→属性→设置环境变量→将MySQL的安装目录下的bin路径添加到path中,之后登录就不会出错了。

MySQL常见命令

命令说明
show databases;查看当前所有的数据库
use 数据库名;进入某个数据库
显示Database changed 说明已经进入该数据库
use b; → show tables;
show tables from b;
进入某个数据库a后看另一个数据库b中的表
select database();查看当前所在数据库
create table 表名(
列名 列类型,
列名 列类型,…
);
创建表
desc 数据表名;查看表的结构
select * from 数据表名;查看表中的全部数据

show databases;
show databases
use 数据库名;

show tables;
在这里插入图片描述
select database();
在这里插入图片描述
table相关操作-创建-查看表结构-查看表数据
在这里插入图片描述

查看当前MySQL的版本号

登录到mysql服务端:select version();
使用电脑dos命令:mysql --version 或者 mysql -V
在这里插入图片描述

MySQL语法

  • 不区分大小写,但建议关键字大写,表名、列名小写;
  • 每条命令最好用分号结尾,也可以使用\g;
  • 每条命令根据需要,可以进行缩进 或 换行;
  • 注释
注释符号
单行注释#注释文字
单行注释–(空格)注释文字
多行注释/* 注释文字*/

注释
在这里插入图片描述
命令缩进
在这里插入图片描述

SQL语句的学习涉及内容

内容说明
DQL语言(Data Query Language,数据查询语言)
<ˈkwɪəri>
DML语言(Data Manipulation Language,数据操作语言)
<məˌnɪpjʊˈleɪʃən>
DDL语言(Data Defined Language,关于库和表的定义)
TCL语言(Transaction control Language,事务控制语言)

数据类型

数值型:整型、小数:定点数、浮点数
字符型:较短文本—char varchar、较长文本—text blob(二进制数据)
日期型。
类型选择原则
所选择的类型越简单越好,能保存数值的类型越小越好。

数值型—整型

类型介绍

数据类型字节范围
Tinyint1有符号 :-128~ +127
无符号 0-255
Smallint2有符号 :-32768 ~ +32767
无符号 0 ~ 65535
Mediumint3
Int
Integer
4
Bigint8

特点

  • 都可以设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字。
  • 如果插入的数值超出了整型的范围,会报out of range 异常,并且插入临界值。但是自己使用mysql workbench 则会报错误,不执行。
  • 长度可以不指定,会有默认的长度。
    长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用。
# 定义格式为:
变量名 变量类型(长度) zerofill

在这里插入图片描述

数值型—小数

类型介绍

类型字节数
浮点型
float(M,D)4
double(M,D)8
定点型
DEC(M,D)
DECIMAL(M,D)
M + 2

特点

  • DEC和double 数值范围一样,但具有更高的精确度;

  • MD介绍:
    M : 整数部分 + 小数部分 总长度
    D : 小数部分 总长度

  • 如果超过范围,则报out orrange,则插入临界值;但是mysql workbench 会报错,具体原因没有解决。

  • M和D都可以省略
    如果是decimal/dec,则M默认为10,D默认为0;
    如果是float和double,则会根据插入的 数值的精度来决定精度。

  • 定点型的精确度较高,如果要求插入数值的精度较高,如货币运算则考虑使用。

案例
在这里插入图片描述
分析
小数位数超过设置位数,则会进行四舍五入;
插入的数值小数位小于设置的位数,则尾部补零;
当总位数一样,整数设置3,小数设置2,输入的数值整数4、小数1 会给小数位数补零,这样最终的位数就超了,会报错。

字符型

较短文本

类型char(M)varchar(M)
最多字符数M最大字符数可以省略,默认为1最大字符数 不可省略
特点固定长度的字符串可变长度的字符串
空间耗费比较耗费比较节省
效率

较短的文本
text blob(较大的二进制)

enum类型
又称为枚举类型,要求插入的值必须属于列表中指定的值之一。
在这里插入图片描述
枚举类型注意
字段名 enum(具体值);
如果具体值是小写字符,插入内容是大写,不会报错,而是会直接插入小写字符。

set类型
和enum类型类似,里面可以保存0-64个成员;
与enum最大的区别是:set类型一次选取多个成员,而enum只能选一个。根据成员个数不同,存储所占的字节也不同。

在这里插入图片描述
其他类型
binary 和 varbinary 用于保存较短的二进制;

日期型

类型字节最小值最大值
date41000-01-019999-12-31
datetime81000-01-01
00:00:00
9999-12-31
23:59:59
timestamp419700101 08:00:012038年的某个时刻
time3-838:59:59838:59:59
year119012155

datetime 和 timestamp 比较

类型datetimetimestamp
字节84
范围1000-99991970-2038
时区等的影响不受

timestamp:比较容易受时区、语法模式、版本的影响,更能反映当前时区的真实时间。

变量

变量分为:系统变量 和 自定义变量
系统变量 = 全局变量、会话变量
自定义变量 = 用户变量、局部变量

系统变量(全局/会话)

概述

定义
变量由系统提供,不是用户定义,属于服务器层面。

全局变量
服务器层面上的,必须拥有super权限才能为系统变量赋值。
作用域:服务器每次启动将为所有的全局变量赋初值,针对于所有的会话(连接),但是不能跨重启。

会话变量
服务器为每一个连接的客户端提供了系统变量。
作用域:仅仅针对当前会话(连接)有效。

语法

查看所有的系统变量

show global variables; # 系统变量
show [session] variables; # 会话变量

查看满足条件的部分系统变量

show global | [session] variables like "" ; # 模糊查询

查看指定的某个系统变量的值

select @@global.系统变量; # 全局变量
select @@[session.] 系统变量; # 会话变量

为某个系统变量赋值

set global | [session] 系统变量名 =;

set @@global. | [session.] 系统变量名 =;

注意
全局级别,需要加global;
会话级别,需要加session;
如果不加,默认是会话级别;

案例

全局变量
在这里插入图片描述
会话变量
在这里插入图片描述

自定义变量

概念
变量是用户自定义的,不是由系统定义的。
使用步骤:声明、赋值、使用(查看、比较、运算等)。
自定义变量 = 用户变量 、 局部变量。

用户变量set@

作用域
针对于当前会话(连接)有效,同于会话变量。

位置
应用在任何地方,也包括begin end 里面。

使用步骤
赋值的操作符: = 或者 :=

  • 声明并初始化
set @用户变量名 =;
set @用户变量名 :=;
select @用户变量名:=;
  • 赋值(更新用户变量的值)

方式1:set 或 select

set @用户变量名=;
set @用户变量名 :=;
select @用户变量名:=;

方式2:通过select into

select 字段 into @变量名 from;
# 含义:将字段的值给了变量。
  • 使用(查看用户变量的值)
select @用户变量名;
局部变量declare

作用域
仅仅在定义它的begin end中有效。

位置
应用在begin end中的第一句话。

使用步骤

  • 声明
declare 变量名 类型;
declare 变量名 类型 default;
  • 赋值

方式1:通过set 或 select

set 局部变量名 =;
set 局部变量名 :=;
select @局部变量值:=;

方式2:通过select into

select 字段 into 局部变量名 from;
# 含义:将字段赋值给了变量
  • 使用
select 局部变量;
用户变量与局部变量比较
区别用户变量局部变量
作用域当前会话begin end中
定义和使用位置会话中的任何位置只能在begin end中,且为第一句
语法必须加@;不用限定类型一般不加@ ,除非赋值使用select @局部变量名:= 值;
需要限定类型

案例

# 用户变量:
set @m = 1;
set @n = 2;
set @sum = @m + @n;
select @sum;

# 局部变量:
begin 
    declare m int default 1;
    declare n int default 2;
    declare sum int;
    set sum = m + n;           或者   select @sum= m+n;
    select sum;
end

流程控制语句

总结概述

顺序结构:程序从上往下依次执行;
分支结构:程序从两条或多条路径汇总选择一条去执行;
循环结构:程序在满足一定条件的基础上,重复执行一段代码;

分支结构

if函数

功能
实现简单的双分支

语法

if(表达式1,表达式2,表达式3

执行顺序
如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值。

应用
任何地方

case结构

分类
类似于java中的switch语句,一般用于实现等值判断;
类似于java中的多重if语句,一般用于实现区间判断;

语法:类似switch

# 搭配其他sql语句使用
case 变量 | 表达式 | 字段
when 要判断的值 then 返回的值1
when 要判断的值 then 返回的值2
......
else 要返回的值n
end

# 单独作为语句执行的语法
case 变量 | 表达式 | 字段
when 要判断的值 then 返回的语句1when 要判断的值 then 返回的语句2.....
else 返回的语句n;
end case

语法:类似多重if

# 搭配sql语句执行的语法
case 
when 要判断的条件1 then 返回的值1
when 要判断的条件2 then 返回的值2
.....
else 要返回的值n
end

# 单独做语句执行
case 
when 要判断的条件1 then 返回的语句1when 要判断的条件2 then 返回的语句2......
else 返回的语句n;
end case

特点
可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,begin end 中或begin end 的外面;
可以作为独立的语句去使用,只能放在begin end中。
如果when中的值满足或条件成立,则执行对应的then后面的语句,并且结束case。
如果都不满足,则执行else中的语句或值。
else可以省略,如果else省略了,并且所有when条件都不满足,则返回null。

案例
在这里插入图片描述
在这里插入图片描述
分析2022/8/3
相当于case when结构 重新定义字段内容了

在这里插入图片描述
分析2022/8/3
注意将case作为字段的时候,各字段间需要加逗号。

if结构

功能
实现多重分支

语法

if     条件1 then 语句1;
elseif 条件2 then 语句2......
[else 语句n;]
end if;

应用
应用在begin end中。

案例
在这里插入图片描述

循环结构while loop repeat

分类
while、loop、repeat
位置:只能在begin end 中

循环控制

标识符含义
interate类似于 continue,继续,结束本次循环,继续下一次;
leave类似于 break 跳出,结束当前所在的循环。

语法:while

[标签:] while 循环条件 do
		循环体;
end while [标签];

java中的:

while(循环条件){
	循环体;
}

语法:loop

[标签:] loop
		循环体;
end loop[标签];

# 可以用来模拟简单的死循环;

语法:repeat

[标签:] repeat
		循环体;
until 结束循环的条键
end repeat[标签];

案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

循环结构总结

while

  • 语法:
[标签:] while 循环条件 do
		循环体;
end while [标签];
  • 特点:
    先判断 后执行
  • 位置:
    begin end中

repeat

  • 语法:
[标签:] repeat
	循环体;
until 结束条件;
end repeat[标签];
  • 特点:
    先执行后判断

  • 位置:
    begin end中

loop

  • 语法:
[标签:] loop
		循环体;
end loop [标签];
  • 特点:
    没有条件的死循环

  • 位置:
    begin end中

对比:
这三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或interate)则必须添加名称;
实现:loop一般用于实现简单的死循环。while 先判断后执行。repeat 先执行后判断,无条件至少执行一次。

案例

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值