MySQL学习总结(四)数据的基本操作以及MySQL运算符和常用函数
数据库是存储数据库对象的仓库,数据库的基本对象是表,表用来存储数据。关于数据的操作也就是我们常说的CRUD,C指的是CREATE(插入数据记录)、R指的是READ(查询数据记录)、U指的是UPDATE(更新数据记录)、D指的是DELETE(删除数据记录)。
1、插入数据记录
1.1完整插入数据记录
SQL语法:INSET INTO table_name(filed1,filed2…,filedn) VALULES (value1,value2…,valuen),其中filed1,filed2…,filedn为表table_name 中的所有的字段,后面对应的每一个对应的值,valuen和filedn的数据类型必须一致否则会报错。filedn的顺序可以随意调整,只要保证后面的valuen和filedn一致即可。
例如:INSERT INTO t_dept(deptno,dname,address) VALUES (7,'SUN','Hebei');
当插入所有的数据字段的时候,也可以缩写。SQL语法:INSET INTO table_name VALULES (value1,value2…,valuen),这种方式使用起来更加简洁,但是value的值的顺序必须和表中字段的顺序一致才可以。
1.2、插入部分记录数据
可以插入指定字段的部分的记录数据,
例如:INSERT INTO t_dept(deptno,dname) VALUES (8,'SUN');
注意:如果设置类自动增加约束的字段是不需要插入值的,具有默认值约束的字段如果不插入值的时候会插入默认值。
1.3、插入多条数据记录
SQL语法:INSET INTO table_name(filed1,filed2…,filedn)
VALULES (value11,value12…,value1n),
VALULES (value21,value22…,value2n),
…
VALULES (valuem1,valuem2…,valuemn),
除此还有一种SQL语法:
INSET INTO table_name
VALULES (value11,value12…,value1n),
VALULES (value21,value22…,value2n),
…
VALULES (valuem1,valuem2…,valuemn),
同理类推,也可以插入多条部分数据记录。
1.4、插入查询结果
SQL语法:INSET INTO table_name(filed1,filed2…,filedn)
SELECT filed11,filed12…,filed1n FROM table_name2
WHERE CONDITION
在SQLyog软件界面中也可以插入数据,右键表——>打开表,
直接双击编辑,或者点击表格上方的按钮
,新增数据行按钮,编辑完成后,点击保存按钮。成功保存数据。
刷新数据后,查看数据是否成功增加。
2、更新数据记录
SQL语法:UPDATE table_name SET filed1=value1,…,fieldn=valuen WHERE CONDITION; 更新满足条件的数据记录。
SQL语法:UPDATE table_name SET filed1=value1,…,fieldn=valuen ,更新所有的数据记录。
通过SQLyog软件,也可以更新数据记录,右键表——>打开表,
如果已经修改过数据后,在右下角会提示,“数据已修改但没有存储”,点击保存。
3、删除数据记录
SQL语法:DELETE FROM table_name WHERE CONDITION,删除满足条件的数据记录。
SQL语法:DELETE FROM table_name ,删除所有的表数据记录。
通过SQLyog软件,删除数据记录,右键表——>打开表,选中要删除的行数据,点击删除按钮,确定后,成功删除数据。
4、MySQL的运算符
4.1、算数运算符
+、-、*、/、(DIV)、%、(MOD)
注意:/和DIV都是除法运算符,/ 结果默认保存四位小数结果,DIV 默认保存整数结果。
4.2、比较运算符
> 大于 < 小于 = <=> 等于 != <> 不等于 >= 大于等于 <= 小于等于 BETWEEN AND 在指定范围内 IS NULL 为空 IN 在指定的集合 LIKE 通配符匹配 REGEXP 正则表达式匹配
注意:比较运算符=不能操作NULL,而比较运算符<=>可以操作NULL,而!= 和<>都不可以操作NULL,
例如:SELECT 1<=>NULL,NULL<=>NULL,1=NULL,NULL=NULL,1!=NULL,NULL!=NULL,1<>NULL,NULL<>NULL
下面,我们详细的介绍一下正则表达式,通过模式去匹配一类字符串。
^ 匹配字符串的开始部分
$ 匹配字符串的结束部分
. 匹配字符串中的任意一个字符
[字符集合] 匹配字符集合中的任意一个字符
[^字符集合] 匹配字符集合外的任意一个字符
str1|str2|str3 匹配str1、str2、str3的任意一个字符串
* 匹配字符,包含0个和1个
+ 匹配字符,包含1个
字符串{N} 字符串N次
字符串{M,N} 字符串至少出现M次,最多出现N次
4.2.1、$可以比较是否是以特定的字符或者是字符串结尾的
SELECT 'sun' REGEXP 'n$' ,'sun' REGEXP 'sn$','sun' REGEXP 'un$',第一个判断是否是以字母n为结尾,第二个判断是否是以字母sn结尾,第三个判断是否是以字母un结尾。结果如下,1表示true,0表示false。
4.2.2、^可以比较是否是以特定的字符或者是字符串开头的
SELECT 'sun' REGEXP '^s' ,'sun' REGEXP '^sn','sun' REGEXP '^su'
4.2.3、. 比较是否包含一个字符
SELECT 'sun' REGEXP '^s.n$' ,'sun' REGEXP '^s..n'
4.2.4、[]、[^]可以实现比较是否包含指定字符串中的任意一个字符或者是指定字符串外的任意一个字符
SELECT 'sunying' REGEXP '[abs]' ,'sunying' REGEXP '[a-z]','sunying' REGEXP '[^abc]','sunying' REGEXP '[^a-z]'
解释一下,'sunying' REGEXP '[abs]' 表示sunying字符串中是否包含字符串abs中的任意一个,因为包含s返回1;同理a-z表示a到z的所有的字符串,返回1;
'sunying' REGEXP '[^abc]'表示sunying字符串是否包含abc三个以外的字符串,返回1;因为sunying都在a-z之间所以'sunying' REGEXP '[^a-z]'返回0;
4.2.5、*、+比较是否包含多个指定的字符
4.2.6、{m}、{m,n}比较是否包含多个指定的字符串
SELECT 'sunying' REGEXP 's{3}' ,'sunsunying' REGEXP 'sun{1,2}','sunsunying' REGEXP 'sun{3,4}'
4.3、逻辑运算符
&& AND 与、|| OR或、! NOT非、XOR异或
注意:与操作如果有一个操作数为0,则返回结果为0;如果一个操作数为NULL,另一个不为0,则返回NULL;
或操作如果有一个操作数不为0且不为NULL,返回1.如果有NULL值,且另一个操作数为0,返回NULL;
非操作,如果有NULL值返回NULL;
异或操作符,两个同时为真或者是同时为假的时候,返回0。否则返回1。如果有一个操作数为NULL,则返回为NULL;
4.5、位运算符
& 按位与 | 按位或 ~ 按位取反 ^ 按位异或 << 按位左移 >> 按位右移
SELECT 5&6,5|6,~4,4^5,5<<4,5>>2
5&6,5的二进制101,6的二进制110,5&6运算结果为100,也就是4。
5|6,5的二进制101,6的二进制110,5|6运算结果为111,也就是7。
~4,4的二进制100,按位取反,MySQL中用8个字节也即是64位表示。4的二进制真实是 61个0+100,按位取反的结果就是,61个1+011。
4^5,5的二进制101,4的二进制100,结果001,也即是1.
按位左移,5的二进制101,左移四位,右边补0,1010000,也就是80.
按位右移,5的二进制101,右移两位,左边补0,001,也就是1。
5、MySQL常用函数
MySQL的主要函数包含字符串函数、数值函数、日期时间函数、系统信息函数。
由于不同的数据库软件都有自己支持的特有的函数,所以,函数的移植性不强。
5.1、字符串函数
5.1.1、合并函数
CONCAT(s1,s2,…,sn)合并字符串,如果参数中有null,则返回null;
CONCAT_WS(SEP,s1,s2…,sn) 合并字符串,并且按照分隔符串联起来,如果参数中有NULL值,直接忽略该参数。
5.1.2、比较字符串大小
STRCMP(s1,s2),如果s1>s2,返回1。相等返回0,小于返回-1。
5.1.3、获取字符串长度
LENGTH() CHAR_LENGTH()
注意:LENGTH表示字符所占的字节长度,CHAR_LENGTH表示字符串的个数。
5.1.4、大小写转换函数
UPPER() UCASE() 将字符串转换成大写
LOWER() LCASE()将字符串转换成小写
5.1.5、截取字符串函数
LEFT(str,num)从左边截取num个字符,
RIGHT(str,num)从右变截取num个字符,
SUBSTRING(str,num,len)从地num个位置开始的len长度的字符串,MySQL下标是从1开始的。同MID(str,num,len)
5.1.6、去除首尾空格
LTRIM(str) 去除左边空格
RTRIM(str) 去除右边空格
TRIM(str) 去除左右两边空格
5.1.7、替换字符串
INSERT(str,pos,len,newstr)
REPLACE(str,oldstr,newstr)
5.2、数值函数
5.2.1、获取随机数
RAND()、RAND(x),其中RAND()是完全随机函数,RAND(x)随机数是相同的。

5.2.2、获取整数函数
CEIL(x) 返回大于或者等于x的最小整数。
FLOOR(x) 返回小于或者等于x的最大整数。
5.2.3、截取数值函数
TRUNCATE(x,y) 返回数值x的小数点后y位的值。如果y为负数,则表示小数点左边截取y位。
5.2.4、四舍五入函数
ROUND(x) 数值x经过四舍五入操作后的数值
ROUND(x,y)保留数值x小数点后y位的数值,四舍五入。同样如果y为负数,表示小数点左边。
5.3、日期时间函数
5.3.1、获取当前日期和时间的函数
NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE()
5.3.2、获取当前日期
CURDATE(),CURRENT_DATE()
这两个函数只会返回日期部分数据
5.3.3、获取当前时间
CURTIME(),CURRENT_TIME()
这两个函数只会返回时间部分数据
5.3.4、不同方式显示日期和时间
UNIX_TIMESTAMP() 以UNIX格式显示当前时间
YEAR(), 获取年
QUARTER(), 季度
MONTH(),月 MONTHNAME() 显示月份的名字
WEEK(),星期
DAYOFMONTH(),该月第几天,DAYOFYEAR(),该年的第几天
HOUR(),小时
MINUTE(),分
SECOND()秒
上述函数还有一个通用的表达方式 EXTRACT(type FROM date)
例如:
SELECT EXTRACT(YEAR FROM NOW()),EXTRACT(QUARTER FROM NOW()),
EXTRACT(MONTH FROM NOW()),EXTRACT(WEEK FROM NOW()),
EXTRACT(HOUR FROM NOW()),EXTRACT(MINUTE FROM NOW()),
EXTRACT(SECOND FROM NOW())
5.3.5、与指定的日期时间操作
ADDDATE(),SUBDATE(),增加减少日期
ADDTIME(),SUBTIME(),增加减少时间
5.4、系统信息函数
VERSION(),获取数据库的版本信息
DATABASE(),获取数据库名
USER(),获取用户名
LAST_INSERT_ID()获取最后一条自动插入的ID
PASSWORD() 给字符串加密
MySQL学习总结(四)数据的基本操作以及MySQL运算符和常用函数的更多相关文章
- MySql学习笔记(四) —— 数据的分组
前面介绍的聚集函数只是用来计算行数,平均数,最大值,最小值而不用检索所有数据.通过count()函数,我们可以计算生产商1003提供的产品数目,但如果我要查询所有生产商提供的商品数,这就需要进行分组查 ...
- MySql学习笔记四
MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...
- mysql学习【第4篇】:MySQL函数和编程
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...
- mysql学习【第2篇】:MySQL数据管理
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第2篇]:MySQL数据管理 外键管理 外键概念 如果公共关键字在一个关系中是主 ...
- mysql学习 第二章 数据库的基本操作
3.1 创建数据库 MySQL安装好之后,首先需要创建数据库,这是使用MySQL各种功能的前提.本章将详细介绍数据的基本操作,主要内容包括:创建数据库.删除数据库.不同类型的数据存储引擎和存储引擎 ...
- MySQL学习(一) SQL基本操作
SQL的基本操作无非就是增删改查(CRUD),根据对操作的对象分类,又可以分为三类,库操作,表操作与数据操作. 库操作 新增数据库 CREATE DATABASE [IF NOT EXISTS] db ...
- 【数据库】4.0 MySQL入门学习(四)——linux系统环境下MySQL安装
1.0 我的操作系统是CentOS Linux release 7.6.1810 (Core) 系统详细信息如下: Linux version 3.10.0-957.1.3.el7.x86_64 ( ...
- MySQL学习(四)深入理解乐观锁与悲观锁
转载自:http://www.hollischuang.com/archives/934 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据 ...
- MySQL学习(四)Join 等开发常用的操作 --- 2019年2月
1.查数据太多不会把内存用光 InnoDB 的数据是保存在主键索引上,然后索引树分割保存在数据页上,数据页存在内存中/磁盘.change buffer 就是先把修改操作记录,然后读数据的时候,内存没有 ...
随机推荐
- (2)C# 创建ef oracle
1.NUGet下载 2.下载 Oracle Developer Tools for Visual Studio https://www.oracle.com/technetwork/develope ...
- POJ 3087 Shuffle'm Up【模拟/map/string】
Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14471 Accepted: 6633 Descrip ...
- C++线段树模板(区间和、区间加)
操作说明: segtree<T>tree(len) =>创建一个内部元素类型为T.区间为1-len的线段树tree tree.build(l,r) =>以[l,r]区间建立线段 ...
- (转)解析json xml
JSON数据 {"videos":[{"id":1,"image":"resources/images/minion_01.png ...
- UVA 10160 Servicing Stations(状态压缩+迭代加深)
[题目链接] LInk [题目大意] 给出一些点和边,选择一个点就能把这个点和相邻的点都覆盖,求最小点覆盖 [题解] 我们压缩点被覆盖的状态,迭代加深搜索覆盖的最小点数, 当剩余的点全部选上时都无法完 ...
- 【枚举】【权值分块】bzoj1112 [POI2008]砖块Klo
枚举长度为m的所有段,尝试用中位数更新答案. 所以需要数据结构,支持查询k大,以及大于/小于 k大值 的数的和. 平衡树.权值线段树.权值分块什么的随便呢. #include<cstdio> ...
- 关于char类型的说明
#include<iostream> using namespace std; int main() { char ch=128;//VC编译器默认是有符号的.但c并未明确给出.由编译器 ...
- 全局对象Application的使用,以及如何在任何地方得到Application全局对象
Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个application对象,用来存储系统的一些信息.通常我们是不 ...
- VMware三种网络模式组网(转)
VMware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). 打开VMware虚拟机,我们可以在选项栏的“编辑”下的 ...
- Solr6 +mmseg4j+IK-Analyzer + SQLserver +DIH 完全配置
如今做任何一个系统都有搜索,而搜索界有著名的三剑客: solr/elasticsearch/sphinx solr/elasticsearch 为同一类的,都是基于lucene开发的产品,本人也早在几 ...

,新增数据行按钮,编辑完成后,点击保存按钮。成功保存数据。















