目录

1、常量

1.1、字符串常量

1.2、数值常量

1.3、日期时间常量

1.4、布尔值

2、变量

2.1、用户变量

2.2、系统变量

3、运算符与表达式

3.1、算术运算符

3.2、比较运算符

3.3、逻辑运算符

3.4、运算符优先级

3.5、表达式

4、系统内置函数

4.1、数学函数

4.1.1、GREATEST()和LEAST()函数

4.1.2、FLOOR()和CEILING()函数

4.1.3、ROUND()和TRUNCATE()函数

4.1.4、ABS()函数

4.1.5、SIGN()函数

4.1.6、SQRT()函数

4.2、字符串函数

4.2.1、ASCII()函数

4.2.2、CHAR()函数

4.2.3、LEFT()和RIGHT()函数

4.2.4、TRIM()、LTRIM()和RTRIM()函数

4.2.5、REPLACE()函数

4.2.6、SUBSTRING()函数

4.3、日期和时间函数

4.3.1、NOW()函数

4.3.2、CURTIME()和CURDATE()函数

4.3.3、YEAR(dstr)函数

4.3.4、MOTNTH()和MONTHNAME()函数

4.3.5、DAYNAME()函数

4.4、加密函数

4.4.1、AES_ENCRYPT()和AES_DECRYPT()函数

4.4.2、ENCODE()和DECODE()函数

4.4.3、PASSWORD()函数

4.5、控制流函数

4.6、类型转换函数

1、常量

1.1、字符串常量

字符串是指用单引号或双引号括起来的字符序列。如'你好',每个汉字字符用2个字节存储,而每个ASCII字符用1个字节存储。

在字符串中不仅可以使用普通的字符,也可以使用特殊字符如换行符、单引号(“ ' ”)、反斜线(“ \ ”)等,但如果要使用特殊字符,需要使用转义符。每个特殊字符以一个反斜杠开始,指出后面的字符使用转义字符来解释,而不是普通字符。

1.2、数值常量

数值常量可以分为整数常量和浮点数常量。

整数常量即不带小数点的十进制数。

浮点数常量是使用小数点的数值常量。

1.3、日期时间常量

日期时间常量是由单引号将表示日期时间的字符串括起来构成。日期型常量包括年、月、日,数据类型为date,表示为1970-01-01这样的值。时间型常量包括小时数、分钟数、秒数及微秒数,数据类型为time,表示为12:30:52.01这样的值。MySQL还支持日期/时间的组合,数据类型为datetime或timestamp,如“1970-01-01 12:30”。datetime和timestamp的区别:datetime的年份在1000-9999之间,而timestamp的年份在1970-2037之间,还有就是timestamp在插入带微秒的日期时间时将忽略微秒。timestamp还支持时区,即在不同时区转换为相应时间。

1.4、布尔值

布尔值只包含两个可能的值:true和false。false的数字值是0,true的数字值是1。

2、变量

2.1、用户变量

用户可以在表达式中使用自己定义的变量,这样的变量叫做用户变量。用户可以先在用户变量中保存值,然后在以后引用它,这样可以将值从一个语句传递到另一个语句。在使用用户变量前必须定义和初始化。如果使用没有初始化的变量,其值为NULL。

用户变量与连接有关。也就是说,一个客户端定义的变量不能被其他客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。

定义和初始化一个变量可以使用set语句。

语法格式:SET @用户变量=表达式

例:创建用户变量name并赋值为“张华”

SET @name='张华';

可以同时定义多个变量,中间用逗号隔开。

例:创建用户变量u1并赋值为1,u2赋值为2

SET @u1=1,@u2=2;

定义用户变量是变量值可以是一个表达式

例:创建用户变量u1,其值为u2的值加1

SET @u1=@u2+1;

在SELECT语句中,表达式发送到客户端后才进行计算。因此在HAVING、GROUP BY或ORDER BY子句中,不能使用包含SELECT列表中所设变量的表达式。

对于SET语句,可以使用“=”或“:=”作为分配符。分配给每个变量的值可以为整数、实数、字符串或NULL值,也可以用其他SQL语句代替SET语句来为用户变量分配一个值。在这种情况下,分配符必须为“:=”,而不能用“=”,因为在非SET语句中“=”被视为比较操作符。

2.2、系统变量

系统变量是MySQL的一些特定设置。当MySQL数据库服务器启动时,这些设置被读取出来决定下一步骤。例如,有些设置定义了数据如何被存储,有些设置则影响处理速度,还有些与日期有关,这些设置就是系统变量。和用户变量一样,系统变量也有一个值和一个数据类型,但不同的是,系统变量在MySQL服务器启动时就被引入并初始化为默认值。

例:获得现在使用的MySQL版本号

SELECT @@VERSION;

在MySQL中,系统变量VERSION的值设置为版本号。在变量名前必须加两个@符号才能正确返回该变量的值。

大多数的系统变量应用于其他SQL语句中时,必须在名称前加两个@符号,而为了与其他SQL产品保持一致,某些特定的系统变量是要省略这两个@符号的,如CURRENT_DATE(系统日期)、CURRENT_TIME(系统时间)、CURRENT_TIMESTAMP(系统日期和时间)和CURRENT_USER(SQL用户的名字)。

例:获取系统当前时间

SELECT CURRENT_TIME;

MySQL对于大多数系统变量都有默认值。当数据库服务器启动时,就使用这些值。也可以在C盘MYSQL文件夹下的my.ini选项文件中修改这些值。但数据库服务器启动时,该文件被自动读取。

使用SHOW VARIABLES语句可以得到系统变量清单。

例:显示系统变量清单

SHOW VARIABLES;

3、运算符与表达式

3.1、算术运算符

算术运算符在两个表达式上执行数学运算,这两个表达式可以是任何数值数据类型。算术运算符有+(加)、-(减)、*(乘)、/(除)和%(求模/取余)5种运算。

3.2、比较运算符

比较运算符(又叫关系运算符),用于比较两个表达式的值,其运算结果为逻辑值,可以为1(真)、0(假)和NULL(不能确定)中的一种。

比较运算符可以用于比较数字和字符串。数字作为浮点值比较,而字符串以不区分大小写的方式进行比较(除非用特殊的BINARY关键字)

注意:MySQL在运算过程中能够自动地把数字转换为字符串,而在比较运算过程中,MySQL能够自动地把字符串转换为数字。

3.3、逻辑运算符

逻辑运算符用于对某个条件进行测试,运算结果为true(1)或false(0)。

这些具体的运算符在博主以前发布的《MySQL之数据查询(WHERE)》一文中有写到,所以这里便不具体写出了。

3.4、运算符优先级

当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序。执行的顺序会影响所得到的运算结果。在一个表达式中按先高(优先级数字小)后低(优先级数字大)的顺序进行运算。

优先级从小到大:

+(正)、-(负)1级

*(乘)、/(除)、%(模)2级

+(加)、-(减)3级

=,>,<,>=,<=,<>,!=,!>,!< 4级

NOT 5级

AND 6级

OR 7级

=(赋值) 8级

3.5、表达式

表达式就是常量、变量、列名、运算符和函数的组合。一个表达式通常可以得到一个值。与常量和变量一样,表达式的值也具有某种数据类型,可能的数据类型有字符类型、数值类型、日期时间类型,这样,根据表达式值的类型,表达式可分为字符型表达式、数值型表达式和日期表达式。

表达式按照形式还可分为单一表达式和复合表达式。单一表达式就是一个单一的值,如一个常量或列名。复合表达式是由运算符将多个单一表达式连接而成的表达式。

4、系统内置函数

4.1、数学函数

数学函数用于执行一些比较复杂的算术操作。MySQL支持很多数学函数。若发生错误,所有的数学函数都会返回NULL。

 4.1.1、GREATEST()和LEAST()函数

功能为获得一组数中的最大值和最小值。

# 例
SELECT GREATEST(10,9,20,5),LEAST(1,2,3);

 4.1.2、FLOOR()和CEILING()函数

FLOOR()用于获得小于一个数的最大整数值,CEILING()函数用于获得大于一个数的最小整数值。

4.1.3、ROUND()和TRUNCATE()函数

ROUND()函数用于获得一个数的四舍五入的整数值。

TRUNCATE()函数用于把一个数字截取为一个指定小数个数的数字,逗号后面的数字表示指定小数的位数。例:SELECT TRUNCATE(3.1415,2)

4.1.4、ABS()函数

ABS()用于获得一个数的绝对值

4.1.5、SIGN()函数

SIGN()函数返回数值的符号,返回的结果是正数(1)、负数(-1)或者零(0)

 4.1.6、SQRT()函数

用于返回一个数的平方根

4.2、字符串函数

在字符串函数中,包含的字符串必须用单引号括起。MySQL提供了很多字符串函数。

 4.2.1、ASCII()函数

ASCII(char)

返回的字符表达式最左端字符的ASCII值。参数char的类型为字符型的表达式,返回值为整型。例:SELECT ASCII('A');     返回的便是字母A的ASCII码值

 4.2.2、CHAR()函数

CHAR(X1,X2,X3)

将X1,X2,X3的ASCII码转换为字符并将结果组合成一个字符串。参数X1,X2,X3为介于0-255之间的整数,返回值为字符型。例:SELECT CHAR(65,66,67);  返回ASCII码值为65、66、67的字符,组成一个字符串。

4.2.3、LEFT()和RIGHT()函数

LEFT | RIGHT(str,x)

分别返回从字符串str左边和右边开始指定x个字符

例:返回Book表中书名最左边的3个字符

SELECT LEFT(书名,3) FROM Book;

4.2.4、TRIM()、LTRIM()和RTRIM()函数

TRIM | LTRIM | RTRIM(str)

使用LTRIM()和RTRIM()分别删除字符串中前面的空格和尾部的空格,返回值为字符串。参数str为字符型表达式,返回值类型为varchar。

TRIM()删除字符串首部和尾部的所有空格。

# 例
SELECT TRIM('   MySQL   ');# 结果:返回MySQL5个字符

 4.2.5、REPLACE()函数

REPLACE(str1,str2,str3)

REPLACE()函数的作用是用字符串str3替换str1中所有出现的字符串str2,返回替换后的字符串。

4.2.6、SUBSTRING()函数

SUBSTRING(expression,Start,Length)

返回expression中指定的部分数据。参数expression可为字符串、二进制串、text、image字段或表达式。Start、Length均为整型,前者指定子串的开始位置,后者指定子串的长度(需要返回的字节数)。如果expression是字段类型和二进制类型,则返回值类型与expression的类型相同。如果为text类型,返回的是varchar类型。

例:显示Members表中会员姓名,要求在一列中显示姓,在另一列中显示名。

SELECT SUBSTRING(会员姓名,1,1)AS 姓,
SUBSTRING(会员姓名,2,LENGTH(会员姓名)-1)AS 名
FROM Members
ORDER BY 会员姓名;

LENGTH函数的作用是返回一个字符串的长度。

4.3、日期和时间函数

4.3.1、NOW()函数

使用NOW()函数可以获得当前的日期和时间,它以YYYY-MM-DD HH:MM:SS的格式返回当前的日期和时间。例:SELECT NOW();

4.3.2、CURTIME()和CURDATE()函数

CURTIME()和CURDATE()函数比NOW()函数更为具体化,他们分别返回的是当前的时间和日期,没有参数。

4.3.3、YEAR(dstr)函数

YEAR(dstr)函数分析日期值dstr并返回其中关于年的部分。

例:SELECT YEAR(202208142132);

4.3.4、MOTNTH()和MONTHNAME()函数

MOTNTH()和MONTHNAME()函数分别以数值和字符串的格式返回参数中月的部分。

4.3.5、DAYNAME()函数

和MONTHNAME()相似,DAYNAME()以字符串形式返回星期名。

4.4、加密函数

4.4.1、AES_ENCRYPT()和AES_DECRYPT()函数

AES_ENCRYPT | AES_DECRYPT(str,key);

AES_ENCRYPT()函数返回的是密钥key对字符串str利用高级加密标准(AES)算法加密后的结果,结果是一个二进制的字符串,以BLOB类型存储。而AES_DECRYPT()函数用于对用高级加密方法加密的数据进行解密。若检测到无效数据或不正确的填充,函数会返回NULL。

4.4.2、ENCODE()和DECODE()函数

ENCODE | DECODE(str,key);

ENCODE()函数用来对字符串str进行加密,返回的结果是一个二进制字符串,以BLOB类型存储。DECODE()函数使用正确的密钥对加密后的结果进行解密。与AES_ENCRYPT()和AES_DECRYPT()函数相比,这两个函数加密程度相对较弱。

4.4.3、PASSWORD()函数

PASSWORD(str);

返回的字符串str加密后的密码字符串,适合于插入到MySQL的安全系统。该加密过程不可逆,和UNIX密码加密过程使用不同的算法,主要用于MySQL的认证系统。

例:SELECT PASSWORD('MySQL');  返回MySQL的加密版本。

4.5、控制流函数

MySQL有部分函数是用来进行条件操作的。这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台。

和许多脚本语言提供的IF()函数一样,MySQL的IF()函数也可以建立一个简单的条件测试:IF(ex1,ex2,ex3)

该函数有3个参数,第1个是要被判断的表达式,如果表达式为真,IF()将会返回第2个参数。如果为假,IF()将会返回第3个参数。

例:SELECT IF(2*4>9-5,'是','否'); 先判断2*4是否大于9-5,是则返回'是',否则返回'否'。

4.6、类型转换函数

MySQL提供CAST()函数进行数据类型转换,它可以把一个值转换为指定的数据类型。

CAST(expr,AS type)

expr是CAST()函数要转换的值,type是转换后的数据类型。

在CAST()函数中MySQL支持以下数据类型:BINARY、CHAR、DATE、TIME、DATETIME、SIGNED和UNSIGNED类型。

通常情况下,当使用数值操作时,字符串会自动地转换为数字,因此下面例子中两种操作会得到相同的结果:SELECT 1+'99',1+CAST('99' AS SIGNED);

字符串可以指定为BINARY类型,这样他们的比较操作就对大小写敏感。使用CAST()函数指定一个字符串为BINARY何字符串前面使用BINARY关键词具有相同的作用。

例:SELECT 'a'=BINARY'A','a'=CAST('A'AS BINARY);

两个表达式的结果都为零表示两个表达式都为假,从此例可以看出字符串指定为BINARY类型后,对大小写是敏感的。

MySQL之数据库编程(了解语言结构)相关推荐

  1. Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作

    Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  2. mysql导出数据库数据及表结构

    mysql导出数据库数据及表结构 1,导出远程数据库数据到本地 mysql -A wj_sms -h192.168.1.105 -uroot -p4321 -ss -e "set NAMES ...

  3. java语言数据库编程_JAVA语言数据库编程实例详解

    本文主要向大家介绍了JAVA语言数据库编程实例详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. DOS命令登录MySQL数据库:mysql -h 127.0.0.1 -u root ...

  4. c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

    #include #include #include #include #include #include #include #include "mydb.h" void sqld ...

  5. mysql数据库编程(c 语言)_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

    #include #include #include #include #include #include #include #include "mydb.h" void sqld ...

  6. mysql qc_MySQL数据库编程中QC的使用方法

    QueryCache(下面简称QC)是根据SQL语句来cache的.一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使 用QC.每个Cache都是以SQL文本作为key来存的.在应 ...

  7. 3.eclipse对mysql云数据库编程增删改查

    我们在数据库study中创建了student表. package mysqltest;import java.sql.Connection; import java.sql.DriverManager ...

  8. 数据库应用(mysql)数据库编程

    第1关:创建存储过程1 任务描述 本关任务: 1.新建一个没有参数的存储过程p1,显示product表中所有数据. 2.调用p1. USE petstore; create procedure p1( ...

  9. mysql 数据库编程_MySQL数据库编程(C++语言)

    MySQL数据库编程(C++语言) 发布时间:2018-05-24 21:06, 浏览次数:452 , 标签: MySQL 本文主要介绍使用C++语言连接和操作 MySQL 数据库的方法. 1. 准备 ...

  10. mysql查询数据库结构_mysql查询数据库下的表结构

    mysql查询数据库下的表结构 方法:1.使用DESCRIBE命令以表格的形式展示表结构,语法"DESCRIBE 表名;":2.使用"SHOW CREATE TABLE& ...

最新文章

  1. python break
  2. 【Linux 内核】CFS 调度器 ⑤ ( CFS 调度器类 fair_sched_class 源码 | next 赋值 | enqueue_task 赋值 | dequeue_task 赋值 )
  3. 大公司的前端开发地址
  4. Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题
  5. 每日两SQL(9),欢迎交流~
  6. 终于收到HacktoberFest的奖品啦
  7. Vue介绍-Vue简单应用-Vue基本用法
  8. python存储json数据_python 存储json数据
  9. sonarqube没有html插件,spring-boot – 找不到id为’org.sonarqube’的插件
  10. 使用echarts3实现散点地图
  11. python登录接口测试_接口测试,基于Python
  12. 模板 - 洲阁筛 + min25筛
  13. Unity3D启动时卡在Loading界面
  14. C++如何写adaptable仿函数
  15. 复化梯形公式求积算法 c语言,c语言版本复合梯形法、辛普森法求积公式
  16. ftp.proxy 代理服务器搭建
  17. OpenCV4.3 Java 编程入门:离散傅里叶变换
  18. matlab ecu代码,嵌入式代码生成 - 汽车 ECU 产品级代码 - MATLAB Simulink
  19. 基于Rsyslog的日志文件采集办法
  20. 那个“炫酷狂拽”的数据可视化利器AntV 11.22版全新发布啦

热门文章

  1. 代数学笔记1: 域扩张(一)
  2. 网络规划设计师教程知识点精讲之计算机网络分类
  3. “备胎”海思的蛰伏与挑战
  4. 2022年电子商务概论(农)之形考作业一
  5. Anylogic学习—银行排队模型
  6. 计算机的网络测速,电脑怎么网络测速
  7. 计算机总线控制驱动,什么是sm总线控制器,总线控制器驱动怎么安装?
  8. Linux 虚拟机配置静态IP地址
  9. 实战 | 对地震数据进行分析
  10. Android studio安装,提示haxm device is not found 需要下载微软补丁 完美解决