常量

  数值

  字符串:单引号或者双引号括起来。包括普通字符串或者日期格式的字符串。

  布尔值:false(FALSE)对应数字值为0、true(TRUE)对应数字值为1。

  NULL:可以参考http://www.cnblogs.com/-beyond/p/8554483.html

变量

定义用户变量

  mysql中变量分为用户变量和系统变量。

  用户变量要先定义和初始化赋值,否则变量的值为NULL。

  用户变量只在本次连接阶段有效,其他用户的连接不能使用另外一个用户定义的变量,并且当连接释放后,变量就会销毁。

  声明变量格式:set @key = value,可以一次性声明多个。

  如果变量名中有特殊符号,那么可以用引号将变量名括起来,比如 set @'abc def' = 123;

访问用户变量

  select @name;

系统变量

  系统变量是以2个@@开头。

mysql> select @@version;

获得系统变量列表  

mysql> show variables;
mysql> show variables like '%test%';

 

 

算数运算符

  + - * / %

   +和-还可以用来计算日期;  

mysql> select now(),now() + interval 22 day;
+---------------------+-------------------------+
| now() | now() + interval 22 day |
+---------------------+-------------------------+
| 2018-06-19 22:55:02 | 2018-07-11 22:55:02 |
+---------------------+-------------------------+
1 row in set (0.00 sec)  

  

比较运算符

  在mysql里面,判断等于只用一个等号=,不像其他编程语言一样使用双等或者三等。判断不等使用!=和<>。

  其他比较运算符和其他编程语言一样使用。

逻辑运算符和位运算符

  和其他语言一样。注意or比and的优先级低,所以在where子句中进行判断时,为了保证准确性,尽量使用()保证顺序。

选择判断

  mysql的选择判断一般是使用case,格式如下:

case
when 条件1 then 表达式1
when 条件2 then 表达式2
else 表达式n
end

  示例:

mysql> select id,name,
-> case
-> when price>10 then "expensive"
-> when price>0 then "cheap"
-> else "free"
-> end as level
-> from cate;

  

循环结构

  while

delimiter $$
create procedure test_while()
begin
declare sum int default 0;
declare t int default 5;
while t>0 do
set sum=sum+1;
set t=t-1;
end while;
select sum;
end $$
delimiter ;

  

  repeat

delimiter $$
create procedure _repeat()
begin
declare a int default 10;
repeat
set a=a-1;
until a<5
end repeat;
select a;
end $$
delimiter ;

  注意使用repeat的时候,在判断条件(until 条件)的那一行句末不加分号,这个很容易出错! 

  loop

delimiter $$
create procedure test_loop()
begin
declare t int default 0;
label:loop
set t=t+1;
if t>10 then leave label;
end if;
end loop label;
select t;
end $$
delimiter ;

注意 loop 一般要和一个标签(此处为label,名称可以自定义,不过要保证前后一致)一起使用,且在 loop 循环中一定要有一个判断条件,能够满足在一定的条件下跳出 loop 循环(即 leave )!

存储过程

  创建和使用存储过程

mysql> create procedure insert_into_two_table(in id int, in name char(30), out res char(10))
-> begin
-> insert into user values (id,name);
-> insert into person values (id, name);
-> set res = "success";
-> select res;
-> end $$
Query OK, 0 rows affected (0.00 sec) mysql> call insert_into_two_table(1,"aaaaa",@res);
+---------+
| res |
+---------+
| success |
+---------+
1 row in set (0.03 sec) mysql> select @res;
+---------+
| @res |
+---------+
| success |
+---------+
1 row in set (0.00 sec)

  删除存储过程

mysql> drop procedure if exists insert_into_two_table;

  

  

存储函数

  存储过程不能有输出参数;不用call调用,而是使用select来调用 ;必须包含return语句,存储过程不能有return。

delimiter $$
create function find_stu(s_id int)
returns boolean
begin
declare cnt int;
select id into cnt from user where id=s_id;
if cnt > 0 then
return true;
else
return false;
end if;
end $$
delimiter ;

  测试:

mysql> select * from user;
+----+-------+
| id | name |
+----+-------+
| 1 | aaaaa |
+----+-------+
1 row in set (0.00 sec) mysql> select find_stu(1);
+-------------+
| find_stu(1) |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec) mysql> select find_stu(2);
+-------------+
| find_stu(2) |
+-------------+
| 0 |
+-------------+
1 row in set (0.00 sec)

  删除函数

mysql> drop function if exists find_stu;

  

触发器

事件

MySQL基础~~编程语法的更多相关文章

  1. mysql基础知识语法汇总整理(二)

    mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...

  2. mysql基础知识语法汇总整理(一)

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  3. mysql基础查询语法

    一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...

  4. mysql 基础sql语法总结(一)DDL

    mysql数据库: SQL数据库语言可分为四部分: 1.DDL:对数据库或表的进行操作结构操作 2.DML:对表的记录进行更新(增.删.改)* 3.DQL:对表的内容进行查询 **(重难点) 4.DC ...

  5. mysql 基础sql语法总结 (二)DML

    二.DML(增.删.改) 1)插入数据 第一种写法:INSERT INTO 表名 (列名1,列名2,,......)VALUES(列值1,列值2,......) 第二种写法:INSERT INTO 表 ...

  6. 【转】mysql基础汇总

    mysql基础知识语法汇总整理(二)  原文:https://www.cnblogs.com/cxx8181602/p/9525950.html 连接数据库操作 /*连接mysql*/ mysql - ...

  7. MySQL基础之事务编程学习笔记

    MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...

  8. Linux下MySQL基础及操作语法

    什么是MySQL? MySQL是一种开源关系数据库管理系统(RDBMS),它使用最常用的数据库管理语言-结构化查询语言(SQL)进行数据库管理.MySQL是开源的,因此任何人都可以根据通用公共许可证下 ...

  9. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

随机推荐

  1. EJB3.0中的session bean以及MDB解析

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/aboy123/article/details/24587133 大型业务系统面临的主要问题就是高并发 ...

  2. 【转】mysql explain执行计划详解

      1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询.   2).select_type列常见的有: A:simp ...

  3. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

  4. matlab sign函数用法及实例

    在MATLAB科学计算过程当中,我们经常需要对我们的计算公式或者计算结果检验其符号,,sign函数就给我们提供了这种方便,下面就通过实例介绍一下matlab sign函数 的用法,希望能够给您带来帮助 ...

  5. ubuntu 安装json

    命令行中输入:sudo apt-get install libjsoncpp-dev

  6. luogu P2706 巧克力

    题目 (第一道绿题) 有点像最大子矩阵qwq 用前缀和存图,l,r代表横向的一段区间,区间和就是a[r]-a[l-1] 然后用一个k从上到下dp...因为每次l,r变化的时候原来的k就没有用了,所以k ...

  7. java语言基础1问题汇总

    1.一个Java类文件中真的只能有一个公有类吗? 程序实验: public class test1 { public static void main( String args[] ){ } publ ...

  8. 2-关于单片机通信数据传输(中断接收,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)

    上一篇链接 http://www.cnblogs.com/yangfengwu/p/8628219.html 先说明一点这种方式,不光对于单片机类的,,对于上位机接收数据同样适用----不骗人的,自己 ...

  9. HashMap 的实现原理

    hashMap用了一个名字为table的数组:还有若干个名字为entry的链表.看hashMap是如何应用这些数据结构的.用插 入<key,value>举例:hashMap首先会通过key ...

  10. [02] mybatis-config.xml 全局配置文件解析

    本篇会摘录mybatis全局配置文件中比较常见常用的一些配置进行说明,其实官方文档已经写得足够清晰了(关键是还有中文版完全不慌),此处记录重要还是作为个人的巩固记录. 1.properties 在全局 ...