【查询表】

Select `Level` from tablename Where `CompID`='001' and `State`=0;

注意:字段名用” ` “包起来。字符串用单引号包起来。

插入,更新,删除:

INSERT INTO b_comp (`CompID`, `CompName`, `Level`, `MaxUsers`) VALUES (@CompID, pCompName, @Level, pMaxUsers); update b_comp set `CompName` = pCompName, `MaxUsers` = pMaxUsers where `State` = 0 and `CompID` = pCompID; Delete from b_module where `MID` = pMID and `Flag` = 0;

【变量】

变量定义

-- 使用set或select直接赋值,变量名以 @ 开头.
set @var=1; -- 以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量
DECLARE var1 INT DEFAULT 0; -- 区别:
/*
在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。
*/DECLARE c int DEFAULT 0;
SET c=a+b;
SELECT c AS C;

变量赋值

select into 语句句式:SELECT col_name[,...] INTO var_name[,...] table_expr [WHERE...];DECLARE v_employee_name VARCHAR(100);
DECLARE v_employee_salary DECIMAL(8,4);SELECT employee_name, employee_salary
INTO v_employee_name, v_employee_salary
FROM employees
WHERE employee_id=1;

-- 将字段 Level 的值赋给变量 @Level , 使用 into 将不会产生结果集Select `Level` into @Level from b_comp Where `CompID`='001' and `State`=0;

注意:mysql中变量可以不用定义,要用的时候直接用就行。变量不一定必须以”@"开头(SQLServer中必须)

-- 将字段 Level 的值赋给变量 @Level, 会产生一个结果集。Select @Level := `Level` from b_comp Where `CompID`='001' and `State`=0;

【条件判断】

IF表达式

IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

select *,if(sva=1,"男","女") as ssva from taname where sva != ""

在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。

SELECT CASE 1 WHEN 1 THEN 'one'WHEN 2 THEN 'two' ELSE 'more' END
as testCol

IFNULL(expr1,expr2)

假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

SELECT IFNULL(1,0);  -- 1
SELECT IFNULL(NULL,10); -- 10
SELECT IFNULL(1/0,'yes');  -- 'yes'

IF ELSE 做为流程控制语句使用

if实现条件判断,满足不同条件执行不同的操作,这个我们只要学编程的都知道if的作用了,下面我们来看看mysql 存储过程中的if是如何使用的吧。

IF search_condition THEN statement_list;
[ELSEIF search_condition THEN]  statement_list ...
[ELSE statement_list]
END IF;

示例:

create procedure dbname.proc_getGrade
(stu_no varchar(20),cour_no varchar(10))
BEGIN
declare stu_grade float;
select grade into stu_grade from grade where student_no=stu_no and course_no=cour_no;
if stu_grade>=90 then select stu_grade,'A';
elseif stu_grade<90 and stu_grade>=80 then select stu_grade,'B';
elseif stu_grade<80 and stu_grade>=70 then select stu_grade,'C';
elseif stu_grade70 and stu_grade>=60 then select stu_grade,'D';
else select stu_grade,'E';
end if;
END 

注意:IF作为一条语句,在END IF后需要加上分号“;”以表示语句结束,其他语句如CASE、LOOP等也是相同的。

【数据类型转换】

cast(value as type);convert(value,type); 

说明 value 为要转换原数据类型的值,type目的类型.但可以转换的类型是有限制的。类型可以是以下任何一个:

  • 二进制,同带binary前缀的效果 : BINARY
  • 字符型,可带参数 : CHAR()
  • 日期 : DATE
  • 时间: TIME
  • 日期时间型 : DATETIME
  • 浮点数 : DECIMAL
  • 整数 : SIGNED
  • 无符号整数 : UNSIGNED

【字符串】

-- 把字符串转成大小写.
select name,UPPER(name) from string_test where name='tank';-- 把字符串转成小写
select sex,LCASE(job) from string_test where job='DUCK';FIND_IN_SET(str,strlist);-- FIELD(str,str1,str2,str3,…) 返回str在str1, str2, str3, …清单的索引。如果str没找到,返回0。FIELD()是ELT()反运算。
SELECT id, name, FIELD( id, name, sex, job, hobby )-- ELT(N,str1,str2,str3,…)  如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。
SELECT id, name, ELT(1, id, name, sex, job, hobby ) FROM string_test where id < 4;
SELECT id, name, ELT(2, id, name, sex, job, hobby ) FROM string_test where id < 4;-- 替换字符串  REPLACE(str,from_str,to_str)
SELECT id,REPLACE(hobby,"firend",'living') FROM string_test WHERE id = 2;-- REPEAT(str,count)  返回由重复countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果str或count是NULL,返回NULL。
SELECT id,REPEAT(name,2) FROM string_test WHERE id > 1 and id < 4;-- REVERSE(str)  返回颠倒字符顺序的字符串str。
SELECT id,reverse(name) FROM string_test WHERE id > 1 and id < 4;-- INSERT(str,pos,len,newstr) 返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。
select id,name,INSERT(hobby,10,6,'living') from string_test where id = 2;-- SUBSTRING(str FROM pos)  从字符串str的起始位置pos返回一个子串。下面的sub2没有值,因为mysql数据库的下标是从1开始的。
SELECT id, substring( hobby, 1, 6) AS sub1, substring( hobby from 0 for 8) AS sub2,substring( hobby,2) AS sub3, substring( hobby from 4 ) AS sub4 FROM s
tring_test WHERE id =4;-- SUBSTRING_INDEX(str,delim,count)  返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。
SELECT id,SUBSTRING_INDEX(hobby,',',2) as test1,SUBSTRING_INDEX(hobby,','
,-1) as test2 FROM string_test WHERE id = 3;-- LTRIM(str); 返回删除了其前置空格字符的字符串str。
-- RTRIM(str);  返回删除了其拖后空格字符的字符串str。
-- TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
SELECT id,LTRIM(job) FROM string_test WHERE id = 4;-- MID(str,pos,len)  从字符串str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSI SQL92语法。-- LPAD(str,len,padstr)  返回字符串str,左面用字符串padstr填补直到str是len个字符长。
-- RPAD(str,len,padstr)  返回字符串str,右面用字符串padstr填补直到str是len个字符长。
SELECT id,RPAD(name,11," ying") FROM string_test WHERE id = 2;-- LEFT(str,len)  返回字符串str的最左面len个字符。
SELECT id,left(job,4) FROM string_test WHERE id = 4;-- RIGHT(str,len)  返回字符串str的最右面len个字符。
SELECT id,right(job,4) FROM string_test WHERE id = 4;-- 位置控制函数/*
POSITION(substr IN str)
返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.LOCATE(substr,str,pos)
返回子串substr在字符串str第一个出现的位置,从位置pos开始。如果substr不是在str里面,返回0。INSTR(str,substr)
返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。*/-- 得到字符串长度的函数
LENGTH(str),
OCTET_LENGTH(str),
CHAR_LENGTH(str),
CHARACTER_LENGTH(str)-- 合并多个字符串,或者表中的多个字段
CONCAT(str1,str2,…)
-- 返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。
SELECT id,CONCAT(name,job,hobby) FROM string_test WHERE id = 4;-- CONCAT_WS  可以在待拼接的字符串之间加入指定的分割符
SELECT CONCAT_WS(', ', FNumber,FAge, FDepartment, FSalary) FROM T_Employee-- 进制转换
/*
BIN(N)
返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT)数字,这等价于CONV(N,10,2)。如果N是NULL,返回NULL。OCT(N)
返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。如果N是NULL,返回NULL。HEX(N)
返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT)数字,这等价于CONV(N,10,16)。如果N是NULL,返回NULL。ASCII(str)
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
*/

【取整数的函数】

CEIL(x) 函数和CEILING(x)函数的意义相同,都用于返回大于或等于x的最小整数值,返回值转化为一个BIGINT。

使用CEIL(x)函数和CEILING(x)函数返回最小整数。SQL语句如下:

SELECT CEIL(0),CEIL(3.45),CEIL(-3.45),CEILING(3.45),CEILING(-3.45);

等于0的整数仍然为0,因此CEIL(0)的返回值为0;大于3.45的最小整数为4,因此返回值为4;-3.45是负数,大于-3.45的最小整数为-3,因此返回值为-3;

FLOOR(x) 函数用于返回小于或等于x的最大整数值。

SELECT FLOOR(0),FLOOR(3.45),FLOOR(-3.45);

等于0的整数仍然为0,因此FLOOR(0)的返回值为0;小于3.45的最大整数为3,因此返回值为3;-3.45是负数,小于-3.45的最大整数为-4,因此返回值为-4。

转载于:https://www.cnblogs.com/yangyxd/articles/8335829.html

【MySQL】基础知识相关推荐

  1. MySQL工作中的实际用_总结工作中经常用到的mysql基础知识

    总结工作中经常用到的mysql基础知识 发布时间:2020-06-08 11:27:30 来源:51CTO 阅读:217 作者:三月 本文主要给大家介绍工作中经常用到的mysql基础知识,文章内容都是 ...

  2. mysql基础知识(二)

    这一篇是第二部分,要查看第一部分,请查看这个链接 mysql基础知识(一) DQL语言 1.1简单的单表查询 查询表的通用格式:select [distinct] [*] [列名1,列名] from ...

  3. mysql基础知识(一)

    mysql是主流的关系型数据库管理系统(RDBMS---relation database management system),操作是需要用SQL(Structured Query Language ...

  4. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  5. 【MySQL基础知识】查询、过滤数据关键字

    MySQL基础知识 一.检索数据 1. SELECT select是使用最广泛的检索数据的语句. 检索要查的表的所有列: select * from (表名称)... 检索要查的表的某一列或多列: s ...

  6. 快速学习mysql_快速学习MySQL基础知识

    这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函数 子查询分类 如何选 ...

  7. MySQL基础知识之增删改查

    MySQL基础知识之增删改查 MySQL基本语法: 1.创建库:create database 库名: 创建带编码格式的库:create database 库名 character set 编码格式: ...

  8. linux增删查改语句,mysql基础知识之增删查改使用介绍

    mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的 ...

  9. MySql基础知识【一】

    Mysql基础知识 1. MySql是什么 2. 数据库设计的三大范式 2.1. 第一范式 2.2. 第二范式 2.3. 第三范式 3. Binlog的三种模式 3.1 Statement模式(默认) ...

  10. 2.MySQL 基础知识

    文章目录 MySQL 基础知识 知识点一 : MySQL命令行常用命令 知识点二 : 持久化 相关概念 知识点三 : 数据库 相关概念 知识点四 : DB 和 DBMS 关系图示 知识点五 : MyS ...

最新文章

  1. linux dd 截文件,Linux使用dd命令快速生成大文件(转)
  2. 【Python-ML】神经网络激励函数-双曲正切(hyperbolic tangent,tanh)函数
  3. Spring Boot—thymeleaf语法规则以及使用
  4. HDU - 4348 To the moon(主席树区间更新-标记永久化)
  5. 为什么我的会话状态在ASP.NET Core中不工作了?
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第32篇]基于博弈的证明和基于模拟的证明
  7. mysql如何大矩阵_如何打印矩阵
  8. undefined reference to `dlclose‘问题解决方法
  9. 物联网将如何改善社会运行效率?
  10. 表结构设计器(EZDML)1.98版公布
  11. 吃了核辐射食物怎么办_尿酸过高怎么办?这几种食物,平时可多吃
  12. 《JavaScript 高级程序设计(第四版)》
  13. 《创业时,我们在知乎聊什么》- 书摘
  14. 那些好玩的生成器网站(三)
  15. 论文:OIE@OIA: an Adaptable and Efficient Open Information Extraction Framework
  16. 基于Go语言Gin+Xorm+Layui实现RBAC权限管理系统
  17. Linux常用浏览器
  18. springboot+臻绿原客绿色食品商城 毕业设计-附源码161928
  19. POC_3COM NJ2000
  20. I2C接口的KSZ9897 Switch

热门文章

  1. SAP SD基础知识之组织结构
  2. Facebook开源最大规模并行语料,45亿语料,覆盖576种语言对
  3. SAP IDoc E1EDP04 Z8 数据错误之对策
  4. 管理已“死”,经营为王时代来临
  5. 零基础掌握极大似然估计
  6. python中若干关于类的问题
  7. 从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...
  8. IBM将收购Instana公司,持续推进其混合云和人工智能战略
  9. 中美德工业互联网路径比较
  10. 深度解读:人体防御病毒的免疫力究竟是什么?