2021-7-29 MySql的简单使用
创建表格
先判断users表是否存在,然后设置user_id为无符号(UNSIGNED)自动增长(AUTO_INCREMENT)的整型
并通过PRIMARY KEY设置user_id为主键
ENGINE是指存储引擎为INNODB
CHARSET是指编码格式为utf-8
- CREATE TABLE
- IF NOT EXISTS `users` (
- `user_id` INT UNSIGNED AUTO_INCREMENT,
- `user_password` VARCHAR (100) NOT NULL,
- PRIMARY KEY (`user_id`)
- ) ENGINE = INNODB DEFAULT CHARSET = utf8
删除表格
- DROP TABLE `users`
插入数据:由于user_id是自增的,所以给定值是0,给其他值会赋值上去
字符串的值必须要加上单引号或者双引号
- INSERT INTO `users`(`user_id`,`user_password`) VALUES(0,'nihao')
查询数据:条件user_id<20,查询结果如下图
- SELECT * from `users` where `user_id`<20
BINARY的使用:
查询时在where后面使用BINARY可以区分字母大小写,否则不区分
- select * from `users` where BINARY `user_password`='Nihao';
- select * from `users` where `user_password`='Nihao'
LIMIT的使用:
第一条语句:查询使用LIMIT 2时相当于获取两条数据,
第二条语句:使用LIMIT 1,2时相当于在第一条数据之后开始获取两条数据
第三条语句:LIMIT 1 OFFSET 2相当于从第二条数据之后开始获取一条数据,注意与第二条语句是相反的
- select * from `users` where `user_password`='Nihao' LIMIT 2;
- select * from `users` where `user_password`='Nihao' LIMIT 1,2;
- SELECT * from `users` LIMIT 1 OFFSET 2
使用LIke查询:
%指代在这个字符前所有的字符,_指代单个字符
- SELECT * from users where user_password LIKE '%明';
- SELECT * from users where user_password LIKE '刘%';
- SELECT * from users where user_password LIKE '%德%';
- SELECT * from users where user_password LIKE '_明';
UNION的使用:
UNION:将不同表的相同列的相同值展示出来(不包含重复数据)
UNION ALL:将不同表的相同列的相同值展示出来(包含重复数据)
distinct:可以去除重复数据
- SELECT class_id from users where user_password LIKE '%明'
- UNION SELECT class_id from classes;
- SELECT class_id from users where user_password LIKE '%明'
- UNION all SELECT class_id from classes;
查询语句排序:根据order by 后面的字段进行排列,默认asc(升序),而desc是降序
- SELECT * from classes ORDER BY class_name desc;
转码:
如果字符集采用utf8的编码格式,想要用拼音排序,先要转码
- SELECT * from classes ORDER BY CONVERT(class_name using gbk) desc;
GROUP BY:分组查询
- select count(*) from users;
- select class_id,count(*) from users GROUP BY class_id;
with rollup:可以将group by的值最后再统计一遍
coalesce:如果括号内第一个值为空,后面的值会替代前面的值
- select COALESCE(class_id,'总数') as '班级ID',count(*) as '人数' from users GROUP BY class_id WITH ROLLUP;
空值处理:
- SELECT * from users where class_id is null;
- select * from users where class_id is not null;
- SELECT *,IFNULL(class_id,4) as '其他' from users;下图是查询出来的结果class_id和其他是同一个项,不同的处理方式,用4代替空值
正则表达式的使用
- SELECT * from users where user_password REGEXP '^武';#^查找以武开头的所有数据#
- SELECT * from users where user_password REGEXP '易$';#$查找以易结尾的所有数据#
- SELECT * from users where user_password REGEXP '苏';#包含苏的所有数据
- SELECT * from users where user_password REGEXP '王.';#放在后面就是匹配前面的字符,放在前面就是匹配后面的字符,如王维,用'.维'或'王.'
- SELECT * from users where class_id REGEXP '[12]';#包含在[]内的单个字符,中文会出现问题
- SELECT * from users where user_password REGEXP '[^苏轼的]';#[^]查找不包含在[]里的字符
- SELECT * from users where user_password regexp '武*';#和前面的匹配包含所有数据类似,包括空字符
- select * from users where user_password REGEXP '武+';#不包括空字符
- select * from users where user_password REGEXP '武?';#*+?类似,后续还待研究
- select * from users where user_password REGEXP '白|刘';#匹配多个值
返回值是是否有匹配的,即bool值
- SELECT 'asssssas' REGEXP 'as{2}';#正则表达式的{}表示匹配2个s
- SELECT 'asssssas' REGEXP 'as{2,}';#正则表达式的{}表示匹配2个s到无数个s
- SELECT 'asssssas' REGEXP 'as{2,4}';#正则表达式的{}表示匹配2个s到4个s
- SELECT 'asssssas' REGEXP 'a(ss)*';#括号内作为一个整体去匹配
MySql的执行顺序
- FROM, including JOINs
- WHERE
- GROUP BY
- HAVING
- WINDOW functions
- SELECT
- DISTINCT
- UNION
- ORDER BY
- LIMIT and OFFSET
更新语句:使用replace可以批量更改数据
- UPDATE users SET user_password='李白' where user_id=20;
- UPDATE users set user_password=REPLACE(user_password,'nihao','刘德华');
- SELECT * from users;
删除语句:
delete是DML支持回滚,
truncate和drop是DDL语言不支持回滚
- delete from users where user_id=20;
2021-7-29 MySql的简单使用的更多相关文章
- jsp+servlet+mysql 实现简单的银行登录转账功能
jsp+servlet+mysql 实现简单的银行登录转账功能 [前期的准备] html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)先从 ...
- Ubuntu 安装mysql和简单操作
http://www.cnblogs.com/zhuyp1015/p/3561470.html ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get inst ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- Mysql的简单使用(三)
接上文Mysql的简单使用(二) mysql中结构相同的两个表进行合并:(注意需要两个表的结构是一样的) 有如下结构的两个表father和person. 合并的步骤为: 1.把person表和fath ...
- PHP 17: MySQL的简单介绍
原文:PHP 17: MySQL的简单介绍 这一章将简单介绍MySQL的基本知识. 本文来自http://lib.hackbase.com/html/8/35125.htm. MySQL是最受欢迎的开 ...
- MySQL的简单使用-(一)
MySQL的简单使用 使用MySQL命令行工具 Windows 用户使用: MySQL Client, 输入密码 Linux: mysql -u用户名 -p密码 mysql -uroot -p 显示数 ...
- mysql安装简单教程(自动安装/配置安装)
mysql安装简单教程(自动安装/配置安装) 1.1前言: 由于特殊原因,在最近2-3个月里mysql真是安装了无数遍,每次安装都要上网找教程,每个教程基本都不一样,因此还是自己写下来比较好,毕竟自己 ...
- python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查
python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...
- 29.Mysql监控
29.Mysql监控29.1 如何选择一个监控方案 29.1.1 选择何种监控方式 29.1.2 如何选择合适自己的监控工具29.2 常用网络监控工具 29.2.1 Cacti简介 29.2.2 Na ...
- Linux下MySQL的简单操作
Linux下MySQL的简单操作 更改mysql数据库root的密码 首次进入数据库是不用密码的: [root@localhost ~]# /usr/local/mysql/bin/mysql -ur ...
随机推荐
- node.js基于react项目打包部署到nginx中(Linux服务器)
1.首先进入React项目目录. 2.执行npm命令进行打包(生成dist包或build包). npm run build 3.将打包的静态文件放入nginx目录中(可以自己新创建一个目录,也可以放在 ...
- Cesium加载ArcGIS Server4490且orgin -400 400的切片服务
Cesium在使用加载Cesium.ArcGisMapServerImageryProvider加载切片服务时,默认只支持wgs84的4326坐标系,不支持CGCS2000的4490坐标系. 如果是A ...
- Prism Sample 29-InvokeCommandAction
一下子跳到29,不是我的错,应该是新版本中去掉了一些过重的功能,案例就也去掉了,所以不是我的错. 本例是演示行为转命令的,事实上前面已经用到了. xmlns:i="http://schema ...
- 2022-05-06:给你一个整数数组 arr,请你将该数组分隔为长度最多为 k 的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。 返回将数组分隔变换后能够得到的元
2022-05-06:给你一个整数数组 arr,请你将该数组分隔为长度最多为 k 的一些(连续)子数组.分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值. 返回将数组分隔变换后能够得到的元 ...
- 2021-10-13:单词接龙。字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列:序列中第一个单词是 beginWord 。序列中最后
2021-10-13:单词接龙.字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列:序列中第一个单词是 beginWord .序列中最后 ...
- Selenium - 元素操作(5) - iframe切换
Selenium - 元素操作 iframe切换 很多时候定位元素时候总是提示元素定位不到的问题,明明元素就在那里,这个时候就要关注你所 定位的元素是否在frame和iframe里面: frame标签 ...
- 没想到还有这种骚操作~如何使用Golang实现无头浏览器截图?
前言 在Web开发中,有时需要对网页进行截图,以便进行页面预览.测试等操作. 而使用无头浏览器来实现截图功能,可以避免手动操作的繁琐和不稳定性. 这篇文章将介绍:使用Golang进行无头浏览器的截图, ...
- requests标头在json序列化时报错TypeError: Object of type CaseInsensitiveDict is not JSON serializable
requests的作者似乎为了解决header里大小写兼容的问题,而创建了大小写不敏感的数据结构CaseInsensitiveDict,requests返回的响应标头即是一个CaseInsensiti ...
- PTA L1-064 估值一亿的AI核心代码
PTA L1-064 估值一亿的AI核心代码 有坑!不少 题目链接 题目及分析 题目: 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是: 1. 无论用户说什么,首先把对方说 ...
- 越小越好: Q8-Chat,在英特尔至强 CPU 上体验高效的生成式 AI
大语言模型 (LLM) 正在席卷整个机器学习世界.得益于其 transformer 架构,LLM 拥有从大量非结构化数据 (如文本.图像.视频或音频) 中学习的不可思议的能力.它们在 多种任务类型 上 ...