【MySQL】基础知识
【查询表】
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】基础知识相关推荐
- MySQL工作中的实际用_总结工作中经常用到的mysql基础知识
总结工作中经常用到的mysql基础知识 发布时间:2020-06-08 11:27:30 来源:51CTO 阅读:217 作者:三月 本文主要给大家介绍工作中经常用到的mysql基础知识,文章内容都是 ...
- mysql基础知识(二)
这一篇是第二部分,要查看第一部分,请查看这个链接 mysql基础知识(一) DQL语言 1.1简单的单表查询 查询表的通用格式:select [distinct] [*] [列名1,列名] from ...
- mysql基础知识(一)
mysql是主流的关系型数据库管理系统(RDBMS---relation database management system),操作是需要用SQL(Structured Query Language ...
- MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物
MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...
- 【MySQL基础知识】查询、过滤数据关键字
MySQL基础知识 一.检索数据 1. SELECT select是使用最广泛的检索数据的语句. 检索要查的表的所有列: select * from (表名称)... 检索要查的表的某一列或多列: s ...
- 快速学习mysql_快速学习MySQL基础知识
这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函数 子查询分类 如何选 ...
- MySQL基础知识之增删改查
MySQL基础知识之增删改查 MySQL基本语法: 1.创建库:create database 库名: 创建带编码格式的库:create database 库名 character set 编码格式: ...
- linux增删查改语句,mysql基础知识之增删查改使用介绍
mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的 ...
- MySql基础知识【一】
Mysql基础知识 1. MySql是什么 2. 数据库设计的三大范式 2.1. 第一范式 2.2. 第二范式 2.3. 第三范式 3. Binlog的三种模式 3.1 Statement模式(默认) ...
- 2.MySQL 基础知识
文章目录 MySQL 基础知识 知识点一 : MySQL命令行常用命令 知识点二 : 持久化 相关概念 知识点三 : 数据库 相关概念 知识点四 : DB 和 DBMS 关系图示 知识点五 : MyS ...
最新文章
- linux dd 截文件,Linux使用dd命令快速生成大文件(转)
- 【Python-ML】神经网络激励函数-双曲正切(hyperbolic tangent,tanh)函数
- Spring Boot—thymeleaf语法规则以及使用
- HDU - 4348 To the moon(主席树区间更新-标记永久化)
- 为什么我的会话状态在ASP.NET Core中不工作了?
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第32篇]基于博弈的证明和基于模拟的证明
- mysql如何大矩阵_如何打印矩阵
- undefined reference to `dlclose‘问题解决方法
- 物联网将如何改善社会运行效率?
- 表结构设计器(EZDML)1.98版公布
- 吃了核辐射食物怎么办_尿酸过高怎么办?这几种食物,平时可多吃
- 《JavaScript 高级程序设计(第四版)》
- 《创业时,我们在知乎聊什么》- 书摘
- 那些好玩的生成器网站(三)
- 论文:OIE@OIA: an Adaptable and Efficient Open Information Extraction Framework
- 基于Go语言Gin+Xorm+Layui实现RBAC权限管理系统
- Linux常用浏览器
- springboot+臻绿原客绿色食品商城 毕业设计-附源码161928
- POC_3COM NJ2000
- I2C接口的KSZ9897 Switch
热门文章
- SAP SD基础知识之组织结构
- Facebook开源最大规模并行语料,45亿语料,覆盖576种语言对
- SAP IDoc E1EDP04 Z8 数据错误之对策
- 管理已“死”,经营为王时代来临
- 零基础掌握极大似然估计
- python中若干关于类的问题
- 从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...
- IBM将收购Instana公司,持续推进其混合云和人工智能战略
- 中美德工业互联网路径比较
- 深度解读:人体防御病毒的免疫力究竟是什么?