MySql基本语法

Wesley13
• 阅读 633

复习一下MySql的基础语法,如有问题的地方,麻烦看到的各位提出来,我好做修改!

一般基本语法包括以下几类:

数据类型,变量,运算符,流程控制

1.数据类型

只做简单列表,不做详细的描述,用到时在详细看文档

   1:  整数:TINYINT ,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT

   2:   

   3:  浮点数:FLOAT,DOUBLE,DECIMAL,NUMERIC

   4:   

   5:  日期类型:DATE,DATETIME,TIMESTAMP,YEAR

   6:   

   7:  字符类型:CHAR,VARCHAR

   8:   

   9:  大数据:TINYBLOB,TINYTEXT,TEXT,MEDIUMBLOB,MEDIUMTEXT,LONGBLOB,LONGTEXT

  10:   

  11:  集合类型:ENUM,SET

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

2.变量

简单的来说,变量分为用户变量系统变量

    按照作用范围来说,也就是变量的生命周期,可以分为

全局变量:系统全局变量,作用于所有地方,一般以"@@"开头,有些不以"@@"开头的系统变量,比如:CURRENT_USER,这样做是为了与其他的SQL产品保持一致

会话变量:只对连接的客户端有效,一般以"@"开始命名,形式为"@变量名"

局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量declare语句专门用于定义局部变量

用户可以创建会话变量和局部变量,创建会话变量 SET @test=1,局部变量一般是在存储过程中进行声明

   1:  CREATE PROCEDURE test_pro()

   2:  BEGIN

   3:      DECLARE test INT DEFAULT 1;  -- 声明了一个变量test 设置默认值为1

   4:      SELECT test;

   5:  END;

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

系统变量是不能声明的,只能改变系统变量的值。

会话变量和全局变量赋值操作有两种:

    一种是:set @xxxx = 1;

    第二种是: select @xxxx:=t.xxx  from xxxx t;

局部变量赋值也有两种

    一种是:set xxxx = 1;

    第二种是:select t.xxx into xxxx from xxxx t;

3.运算符

1.算术运算符

+    加   SET var1=2+2;      4
-     减   SET var2=3-2;       1
*     乘   SET var3=3*2;       6
/     除   SET var4=10/3;     3.3333

DIV  整除 SET var5=10 DIV 3;    3
%     取模 SET var6=10%3 ;      1

2.比较运算符
>            大于 1>2 False
<            小于 2<1 False
<=           小于等于 2<=2 True
>=           大于等于 3>=2 True
BETWEEN      在两值之间 5 BETWEEN 1 AND 10 True
NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False
IN           在集合中 5 IN (1,2,3,4) False
NOT IN       不在集合中 5 NOT IN (1,2,3,4) True
=             等于 2=3 False
<>, !=       不等于 2<>3 False
<=>          严格比较两个NULL值是否相等 NULL<=>NULL True
LIKE          简单模式匹配 "Guy Harrison" LIKE "Guy%" True
REGEXP       正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
IS NULL      为空 0 IS NULL False
IS NOT NULL 不为空 0 IS NOT NULL True

3.逻辑运算符

逻辑运算符又称为布尔运算符,用来确认表达式的真和假

运算符

作用

NOT  或者 !

逻辑非

AND  或 &&

逻辑与

OR  或 ||

逻辑或

XOR

逻辑异或

select not 0, not 1,not null;

select (1 and 1),(0 and 1),(3 and 1);

select (1 or 0),(0 or 0),(1 or null ),(1 or 1)

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

4.位运算符
|   或
&   与
<< 左移位
>> 右移位
~   非(单目运算,按位取反)

注释:

mysql存储过程可使用两种风格的注释
双横杠:--

该风格一般用于单行注释
c风格:/* 注释内容 */ 一般用于多行注释

5.运算符的优先级

前面介绍了mysql支持的各种运算符的使用方法,在实际应用中,很可能将这些运算符进行混合运算,那么应该先进行哪些运算符的操作呢?下表一一列出优先级顺序

1

=

2

|| OR XOR

3

&&;AND

4

NOT

5

BETWEEN,CASE,WHEN,THEN,ELSE

6

=,<=>,>=,>,<,<=,!=,IS,LIKE,REGEXP,IN

7

|

8

&

9

<<,>>

10

-,+

11

*,/,div,%,MOD

12

^

13

-,~

14

!

4.流程控制

1.分支结构
if
case

2.循环结构
for循环
while循环
loop循环
repeat until循环

注:
区块定义,常用
begin
......
end;
也可以给区块起别名,如:
lable:begin
...........
end lable;
可以用leave lable;跳出区块,执行区块以后的代码

begin和end如同C语言中的{ 和 }。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这