开发应用-数据库MySQL
文章平均质量分 86
从入门开始
IT小生2020
GOOD
展开
-
MySQL条件判断if与case(语句)
1、IF 表达式IF( expr1 , expr2 , expr3 )expr1 的值为 TRUE,则返回值为 expr2expr1 的值为FALSE,则返回值为 expr3示例:SELECT IF(TRUE,1+1,1+2);SELECT IF(FALSE,1+1,1+2);SELECT IF(STRCMP("111","222"),"不相等","相等") as 相等判断;那么这个 IF 有啥用处呢?再举个例子:查找出成绩非0的科目,如果是Java 的话...原创 2021-08-22 17:23:41 · 4914 阅读 · 0 评论 -
MySQL常用函数汇总
可以对 MySQL 常用函数进行简单的分类,大概包括数值型函数、字符串型函数、日期时间函数、聚合函数等。MySQL 数值型函数 函数名称 作用 ABS 求绝对值 SQRT 求二次方根 MOD 求余数 CEIL 和CEILING 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整 FLOOR 向下取整,返回值转化为一个BIGINT RAND 生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列 ROUND ..转载 2021-07-19 22:02:00 · 408 阅读 · 3 评论 -
(数据库-MySQL)replace()函数的使用
MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪mysql replace实例说明:UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def');REPLACE(str,from_str,to_str)在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串。REPLACE这个函数用来批量替换数据中的非法关键字是很有用..转载 2021-07-15 22:39:27 · 8698 阅读 · 1 评论 -
(数据库-MySQL)连接字符串 - concat函数、repeat函数
先来个数据表“employees”创建(表):drop table if exists `employees` ;CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `h...原创 2021-07-12 11:47:34 · 565 阅读 · 0 评论 -
(数据库-MySQL) Date 函数
下面的表格列出了 MySQL 中最重要的内建日期函数:函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间按的单独部分 DATE_ADD() 给日期添加指定的时间间隔 DATE_SUB() 从日期减去指定的时间间隔 DATEDIFF() 返回两个日期之间的天数 DA转载 2021-06-30 16:39:33 · 8761 阅读 · 4 评论 -
MySQL-嵌套使用 CASE 表达式
创建一张用于管理员工学习过的培训课程的表,如下所示:CREATE TABLE stuCourses( id INT NOT NULL, stuname CHAR(20), course CHAR(50));插入数据。利用上面这张表生成下面这样一张交叉表(“课程学习记录一览表”)。 ○表示已学习过,NULL 表示尚未学习。嵌套使用 CASE 表达式完成CASE 表达式可以写在 SELECT 子句里的聚合函数内部,也可以写在聚合函数外部。这里,我们先把 SUM...原创 2020-08-26 13:52:53 · 1943 阅读 · 1 评论 -
MySQL-count(1)、count(*) 与 count(列名) 的执行区别
执行效果:1. count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。因为count(*),自动会优化指定到那一个字段。所以没必要去coun...转载 2020-08-25 15:18:27 · 283 阅读 · 2 评论 -
MySQL-列子查询及 IN、ANY、SOME 和 ALL 操作符的使用
列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回。一个列子查询的例子如下:SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)该例子在前文《MySQL 子查询subquery语法与用法实例》已有解释及数据实例,在此不再赘述。列子查询中使用 IN、ANY、SOME 和 ALL 操作符由于列子查询返回的结果集是 N 行一列,因此不能直接使用 = > <转载 2020-08-24 16:24:08 · 1319 阅读 · 1 评论 -
MySQL-返回第一个非NULL参数,COALESCE()函数
下面说明了COALESCE函数语法:COALESCE(value1,value2,...);SQLCOALESCE函数需要许多参数,并返回第一个非NULL参数。如果所有参数都为NULL,则COALESCE函数返回NULL。以下显示了使用COALESCE函数的一些简单示例:mysql> SELECT COALESCE(NULL, 0); -- 0SELECT COALESCE(NULL, NULL); -- NULL+-------------------+| COAL转载 2020-08-24 15:57:19 · 3768 阅读 · 0 评论 -
MySQL 常用的运算符:算术、比较、逻辑、位运算符
MySQL 主要有以下几种运算符:算术运算符 比较运算符 逻辑运算符 位运算符算术运算符MySQL 支持的算术运算符包括:运算符 作用 + 加法 - 减法 * 乘法 / 或 DIV 除法 % 或 MOD 取余 在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL。1、加mysql> select 1+2;+-----+| 1+2 |+-----+| 3 |+-----+2、减转载 2020-08-16 22:07:06 · 879 阅读 · 0 评论 -
MySQL 常用的运算符(之)位运算--补充篇
程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。110AND 1011---------------0010 --> 2运算符号下面的a和b都是整数类型,则:...转载 2020-08-24 15:41:18 · 1130 阅读 · 0 评论 -
MySQL(管理)01 -- 用户User和权限Privileges<A.权限验证>
MySQL中的user由用户名和主机名构成,如"root@localhost",同用户名但不同主机名对MySQL来讲是不同的,也就是说"root@localhost"和"root@127.0.0.1"是不同的,尽管它们都是root用户。1.权限验证在MySQL服务器启动后会载入权限表到内存中,当用户要连接服务器,会读取权限表来验证和分配权限,即在内存中进行权限的读取和写入。MySQL中的权限系统经过两步验证:1.合法性验证:验证user是否合法,合法者允许连接服务器,否则拒绝连接。2转载 2020-08-09 11:00:39 · 1072 阅读 · 0 评论 -
MySQL(管理)01 -- 用户User和权限Privileges<B.用户管理权限设置>
2.用户管理和权限设置用户管理分为几个方面,查看用户、创建用户、对用户授权、修改和删除用户、设置与更改用户密码、撤销用户权限等。2.1.查看用户查看用户并没有直接的SQL语句,而是进入 mysql数据库的user表(这个mysql库和user表都是一开始就有的),直接用 select * from user;来查看有什么用户由于在linux下比较难看,因为格式比较乱,所以我用了 SQLyog这个软件登陆数据库来操作。代码如下:[sql]view plaincopyusemy...转载 2020-08-09 11:25:28 · 1532 阅读 · 0 评论 -
MySQL(管理)02 -- 锁Lock机制
锁是计算机协调多个进程或线程并发访问某一资源的机制。一、MySQL 锁概述MySQL 两种锁特性归纳 :表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率最低,并发度也最高。MySQL 不同的存储引擎支持不同的锁机制。myisam 和 memory 存储引擎采用的是 表级锁;innodb 存储引擎既支持行级锁,也支持表级锁,但默认情况下采用行级锁。表级锁更适合于以查询为主,只有少量.转载 2020-08-10 12:02:04 · 193 阅读 · 0 评论 -
MySQL(加强)01 -- 表及存储引擎(Table and Storage Engine)
MySQL 数据表主要支持BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB六种类型。这六种又分为两类,一类是”事务安全型”(transaction-safe),包括BDB和InnoDB;其余都属于第二类,称为”非事务安全型”(non-transaction-safe)。BDB全称是”Brekeley DB”,它是Mysql最早的具有事务能力的表的类型,由Sleepycat Software (http://www.sleepycat.com)开发。它提供了事务控制能力功能,它确.转载 2020-08-08 16:51:46 · 170 阅读 · 1 评论 -
MySQL-Where和Having的区别
MySQL之Where和Having的区别对于使用where和having,相信很多人都有过困扰,今天就来讲一下我对where和having的认识:从整体声明的角度来理解:Where是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用聚合函数Having是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用聚合函数。所谓聚合函数,是对一组值进行计算并且返回单一值转载 2020-08-25 21:01:18 · 384 阅读 · 1 评论 -
MySQL(加强)02 -- 索引(Index)
关于MySql索引数据结构和实现原理的讲解值得阅读一下:实现原理:https://www.cnblogs.com/songwenjie/p/9415016.htm索引数据结构:https://www.cnblogs.com/songwenjie/p/9414960.html1.什么是索引: MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。 提取句子的主干,就可以得到索引的本质:索引就是数据结构。2.索引的分类在一个表中,主键索引只能有一个转载 2020-08-07 21:46:24 · 124 阅读 · 0 评论 -
MySQL(加强)03 -- 视图(View)
一、基本概念视图是一个虚拟表,是sql的查询结果,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成。视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete ] ; 创建视图需要create view 权限,并且对于查询涉及的列有select权限;使用create or replace 或者 alter修改视图,那么还需要改视图的drop权限。大数据分表时可以用到比如,表的行数超过200万行时,就会变慢,.转载 2020-08-07 21:32:09 · 286 阅读 · 0 评论 -
MySQL(加强)04 -- 存储过程(PROCEDURE)和存储函数(FUNCTION)
存储过程(PROCEDURE)是存储在服务器中的一组指定的SQL语句,客户机无需不断重新发出单个语句,而可以引用存储过程。存储过程类型分为存储过程(PROCEDURE)和存储函数(FUNCTION)。Ø存储过程:通过CALL语句调用过程。这些过程可以使用输出变量或结果集传回值。Ø存储函数:在语句中调用函数。这些函数可返回标量值。l使用存储过程的好处:1)客户机功能通过存储过程,您可以在数据库中集中创建一个语句或一系列语句,以供使...转载 2020-08-07 20:49:28 · 450 阅读 · 0 评论 -
MySQL(加强)05 -- 事件调度器(Event Scheduler)
Mysql中的事件调度器Event Scheduler类似于linux下的crontab计划任务的功能,它是由一个特殊的时间调度线程执行的一、查看当前是否开启了event scheduler三种方法:1) SHOW VARIABLES LIKE ‘event_scheduler’;2) SELECT @@event_scheduler;3) SHOW PROCESSLIST;(是否有State为:Waiting for next activation的进程,User为event_schedule转载 2020-08-08 14:52:24 · 1683 阅读 · 0 评论 -
MySQL(加强)06 -- 触发器(Trigger)
MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧:什么是触发器触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一转载 2020-08-08 16:31:35 · 141 阅读 · 1 评论 -
mysql排序-函数dense_rank的应用
给出stuinfo(学生信息表)、classinfo(班级信息表)、exams(考试成绩表),统计(笔试成绩)成绩排名前3的学生!通过查询,获取各个班级(笔试成绩)成绩排名前3的学生,需要展示学号、姓名、年龄、班级序号、班级名称、笔试成绩等信息,叠加、依次排序;我们可以一步一步的实现:1.学生取得班级信息SELECT s1.stuno,s1.stuname,s1.stuage,c1.id,c1.name FROM (stuinfo s1 JOIN classinfo c1 ON原创 2020-08-19 23:09:02 · 1064 阅读 · 1 评论 -
mysql排序-四大函数(row_number、rank、dense_rank、ntile)
row_number、rank、dense_rank、ntile——mysql排序1.row_number 依次排序row_number在排名时序号 连续 不重复,即使遇到表中的两个2时亦如此。SELECT e.stuno AS 学号,(SELECT s.stuname FROM stuinfo s WHERE s.stuno IN (e.stuno)) AS 姓名,(e.wscores+e.cscores) AS 总分,row_number() OVER(ORDER BY (e.wscores原创 2020-07-26 11:46:21 · 2370 阅读 · 11 评论 -
MySQL数据类型(最大值和最小值--类型定义的值)
MySQL数据类型定义的值:1、整型MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~8388607) int(m) 4个字节 范围(-2147483648~2147483647) bigint(m) 8个字节 范围(+-9.22*10的18次方) 取值范围如果...转载 2020-07-01 17:48:23 · 2045 阅读 · 0 评论 -
MySQL(表)-实操:数据查询
练习1:成绩表筛选创建成绩表(exam): CREATE TABLE exam( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, chinese DOUBLE, math DOUBLE, english DOUBLE );插入数据: INSERT INTO exam VALUES(NULL,'关羽',85,76,7...原创 2020-06-29 21:35:43 · 1123 阅读 · 0 评论 -
MySQL-实操:部门、员工信息与管理
创建部门dept、员工emp数据表,并插入数据部门dept数据表1.创建部门信息:CREATE TABLE dept( deptno INT, dname VARCHAR(14), loc VARCHAR(13));2.插入部门信息:INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK'),(20, 'RESEARCH', 'DALLAS'),(30, 'SALES'...原创 2020-06-27 16:14:59 · 6926 阅读 · 0 评论 -
MySQL-案例应用:数据的检索和过滤(内连接、左外连接、右外连接)
以购物商城的数据表为基础,进行实例操作:应用1:查询分类名称为手机数码的所有商品第1步:查询分类名为手机数码的ID先确定“手机数码”在哪个数据表?,确定是category数据表“手机数码的ID”中的ID,在category数据表是cid字段接下来,尝试查询“手机数码”条件对category数据表的所有信息:SELECT * FROM category WHERE cname='手机数码';我们只要cid,就将*改为cidSELECT cid FROM category W原创 2020-06-27 12:18:30 · 566 阅读 · 0 评论 -
MySQL-案例应用:外连接(左外连接、右外连接、全外连接)
SQL LEFT JOIN 关键字LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。LEFT JOIN 关键字语法SELECT column_name(s)FROM table_name1LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name注释:在某些数据库中, LEFT JOIN 称为 LEFT OUT转载 2020-08-29 16:25:26 · 1505 阅读 · 0 评论 -
MySQL-(表连接-笛卡尔连接)CROSS JOIN用法
目录1. cross join简介 2. cross join用法本博客翻译自两篇博客的:http://www.mysqltutorial.org/mysql-cross-join/ https://www.w3resource.com/mysql/advance-query-in-mysql/mysql-cross-join.php1. cross join简介MySQL cross join是mysql中的一种连接方式,区别于内连接和外连接,对于cross join连接来说,.转载 2020-08-27 23:02:59 · 10598 阅读 · 0 评论 -
MySQL-(联合查询)union all应用
根据雇员的家庭信息,统计雇员的孩子数量...“用外连接进行行列转换(列→行):汇总重复项于一列”部分, 我们可以求得以员工为单位的员工子女列表。有了这个列表后,对员工进行一下聚合很容易就可以知道每个员工抚养了几个孩子。输 出结果如下所示:employee child_cnt-------- --------赤井 3工藤 2铃木 1吉田 ...原创 2020-08-29 17:22:10 · 298 阅读 · 1 评论 -
MySQL-(联合查询-结果集合并)union和union all用法
1: 什么时候用union和union all ? 我们经常会碰到这样的应用,两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来,这个时候就需要用到union和union all关键字来实现这样的功能,union和union all的主要区别是union all是把结果集直接合并在一起,而union 是将union all后的结果镜像一次distinct,去除重复的记录后的结果。 看下面的例子:查询一:查询二:两个结果集进行union ...转载 2020-08-27 10:45:47 · 8199 阅读 · 1 评论 -
MySQL-分页查询(Limit用法)
对于比较多的数据,如果在一个页面全部显示,查看起来会眼花缭乱。如果能进行分页显示,将更加快捷、清新的浏览!这样,我们也容易查看前几条或者中间某几行数据。语法(格式):SELECT*FROMtableLIMIT[offset,]rows|rowsOFFSEToffset;说明:LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量(索引),第二个参数...原创 2020-06-27 15:45:19 · 47733 阅读 · 3 评论 -
MySQL-(数据过滤)连接查询的各种应用
下面这张记录了某个公司每年的营业额的表 tSales:tyear(年份) sale(年营业额 :亿日元)1990 501991 511992 521993 521994 501995 501996 491997 55我们先创建表,并插入数据1....原创 2020-08-30 11:20:49 · 824 阅读 · 1 评论 -
MySQL-(数据过滤)join以及on条件的用法
join的用法:连接 举例先看看,就懂了:on的用法:添加约束 在数据库中验证!MySQL中join的用法:join具有连接的作用,即当两个或者两个以上的表有关系时,需要用join来连接这些相关的表,来处理或分析数据:join的用法:连接举例先看看,就懂了:例如: 有一个表叫做stu,一个表叫class,stu join class会生成一个新的表,我们执行:stu join class后,新的表成为:通过上面的例子总结一下:join后的列名是两个表列名加...转载 2020-08-18 20:42:17 · 1348 阅读 · 0 评论 -
MySQL-(数据过滤)左外连接、右外连接
结合购物商场数据表进行阐述:左外连接关键字:left join on / left outer join on语句(格式):SELECT * FROM a_table a left join b_table b ON a.a_id = b.b_id;说明:left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。如果右表中没有对应的数据,.原创 2020-06-26 22:55:02 · 662 阅读 · 0 评论 -
MySQL-(数据过滤)内连接查询
内连接查询-- 隐式内连接 SELECT * FROM product p,category c WHERE p.cno=c.cid;-- 显示内连接 SELECT * FROM product p INNER JOIN category c ON p.cno=c.cid; -- 区别: 隐式内连接: 在查询(交叉连接查询)出结果的基础上去做的WHERE条件过滤。 显示内连接: 带着条件去查询结果, 执行效率要高。查询的显示结果是一样的:显示内连接,使用...原创 2020-06-26 22:10:27 · 501 阅读 · 0 评论 -
MySQL-详细解读:数据的检索和过滤
使用频率最高的SQL语句应该就是select语句了,它的用途就是从一个或多个表中检索信息,使用select检索表数据必须给出至少两条信息:想选择什么,以及从什么地方选择?一、检索数据1、检索单个列select column from table;该SQL语句的检索结果将返回表中的所有行,数据没有过滤(过滤将得出结果集的一个子集),也没有排序(如没有明确排序查询结果,则返回数据的顺序没有特殊意义,只要返回相同数目的行,就是正确的)。MySQL如同大多数DBMS一样,不需要单条SQL语句后加转载 2020-06-26 19:23:16 · 557 阅读 · 0 评论 -
MySQL示例-简单的购物商场,数据表创建
构建简单的网上商场,用户购物的数据表。我们需要创建用户表、商品分类表、商品表、订单表、订单项(中间表),接下来,我们一一实现:1.用户表 (用户的ID,用户名,密码,手机)create table user( uid int primary key auto_increment, username varchar(31), password varchar(31), phone varchar(11));并插入数据2.商品分类表(分类ID,分类名称...原创 2020-06-24 23:50:30 · 5699 阅读 · 0 评论 -
MySQL数据表--创建多表、以及多表关系(添加外键)
创建需求:如何让分类表category和商品表product之间产生关系? 如果有关系,在数据库中如何表示这种关系?我们首先建立数据表、插入数据:create table category( cid int primary key auto_increment, cname varchar(10), cdesc varchar(31));insert into category values(null,'手机数码','电子产品,黑马生产'),(null,'鞋靴箱包','江南皮鞋...原创 2020-06-22 19:45:18 · 6171 阅读 · 0 评论 -
MySQL数据库-汇总
MySQL数据库,对几方面进行汇总与归纳,我们更容易学习与应用!1、MySQL数据库2、数据库创建、删除、修改、查看、选中(调用)3、数据表的操作:创建、删除、修改、查看、数据操作<插入、删除、更新、查询>...原创 2020-06-19 21:32:02 · 172 阅读 · 0 评论