MYSQL从简单查询到高级查询(一)
创建表和插入数据
基本查询语句介绍
创建表和插入数据
#建立部门表
CREATE TABLE `dep` (`id` int NOT NULL AUTO_INCREMENT,`dep_name` varchar(10) NOT NULL DEFAULT (_utf8mb4''),PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
INSERT INTO dep values(1,'部门1'),(2,'部门2'),(3,'部门3');#建立员工表
CREATE TABLE `emp` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(10) NOT NULL DEFAULT (_utf8mb4''),`age` int NOT NULL,`phone` char(11) DEFAULT (_utf8mb4''),`dep_id` int DEFAULT NULL,PRIMARY KEY (`id`),KEY `fk_emp_dep` (`dep_id`),CONSTRAINT `fk_emp_dep` FOREIGN KEY (`dep_id`) REFERENCES `dep` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
为了方便插入数据,这里使用函数过程和自定义函数
#生成2位或3位的名字
CREATE DEFINER=`root`@`%` FUNCTION `rand_name`() RETURNS varchar(255) CHARSET utf8DETERMINISTIC
BEGINDECLARE xing varchar(2056) DEFAULT '赵钱孙李周郑王冯陈楮卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闽席季麻强贾路娄危江童颜郭梅盛林刁锺徐丘骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁';DECLARE ming varchar(2056) DEFAULT '嘉懿煜城懿轩烨伟苑博伟泽熠彤鸿煊博涛烨霖烨华煜祺智宸正豪昊然明杰诚立轩立辉峻熙弘文熠彤鸿煊烨霖哲瀚鑫鹏致远俊驰雨泽烨磊晟睿天佑文昊修洁黎昕远航旭尧鸿涛伟祺轩越泽浩宇瑾瑜皓轩擎苍擎宇志泽睿渊楷瑞轩弘文哲瀚雨泽鑫磊梦琪忆之桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊恨玉惜文香寒新柔语蓉海安夜蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰又菱碧彤元霜怜梦紫寒妙彤曼易南莲紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映易雪柳孤岚笑霜海云凝天沛珊寒云冰旋宛儿绿真盼儿晓霜碧凡夏菡曼香若烟半梦雅绿冰蓝灵槐平安书翠翠风香巧代云梦曼幼翠友巧听寒梦柏醉易访旋亦玉凌萱访卉怀亦笑蓝春翠靖柏夜蕾冰夏梦松书雪乐枫念薇靖雁寻春恨山从寒忆香觅波静曼凡旋以亦念露芷蕾千兰新波代真新蕾雁玉冷卉紫山千琴恨天傲芙盼山怀蝶冰兰山柏翠萱乐丹翠柔谷山之瑶冰露尔珍谷雪乐萱涵菡海莲傲蕾青槐冬儿易梦惜雪宛海之柔夏青亦瑶妙菡春竹修杰伟诚建辉晋鹏天磊绍辉泽洋明轩健柏煊昊强伟宸博超君浩子骞明辉鹏涛炎彬鹤轩越彬风华靖琪明诚高格光华国源宇晗昱涵润翰飞翰海昊乾浩博和安弘博鸿朗华奥华灿嘉慕坚秉建明金鑫锦程瑾瑜鹏经赋景同靖琪君昊俊明季同开济凯安康成乐语力勤良哲理群茂彦敏博明达朋义彭泽鹏举濮存溥心璞瑜浦泽奇邃祥荣轩';DECLARE I_xing int DEFAULT LENGTH(xing) / 3;DECLARE I_ming int DEFAULT LENGTH(ming) / 3;DECLARE return_str varchar(2056) DEFAULT '';SET return_str = CONCAT(return_str, substring(xing, floor(1 + RAND() * I_xing), 1));SET return_str = CONCAT(return_str, substring(ming, floor(1 + RAND() * I_ming), 1));IF RAND() > 0.400 THENSET return_str = CONCAT(return_str, substring(ming, floor(1 + RAND() * I_ming), 1));END IF;RETURN return_str;
END
#生成随机年龄
CREATE DEFINER=`root`@`%` FUNCTION `rand_age`() RETURNS intDETERMINISTIC
BEGINDECLARE c int;set c =RAND()*100;RETURN c;
END
#生成随机电话
CREATE DEFINER=`root`@`%` FUNCTION `rand_phone`() RETURNS char(11) CHARSET utf8DETERMINISTIC
BEGINDECLARE head VARCHAR(100) DEFAULT '000,156,136,176';DECLARE content CHAR(10) DEFAULT '0123456789';DECLARE phone CHAR(11) DEFAULT substring(head, 1+(FLOOR(1 + (RAND() * 3))*4), 3);DECLARE i int DEFAULT 1;DECLARE len int DEFAULT LENGTH(content);WHILE i<9 DOSET i=i+1;SET phone = CONCAT(phone, substring(content, floor(1 + RAND() * len), 1));END WHILE;RETURN phone;
END
#生成随机部门id;
CREATE DEFINER=`root`@`%` FUNCTION `rand_dep`() RETURNS intDETERMINISTIC
BEGIN
-- DECLARE name VARCHAR(5) DEFAULT('部门');DECLARE num INT DEFAULT(1);SET num=FLOOR(1+(RAND() * 3));
-- SET num=SELECT case CONCAT(name,num) WHEN '部门1' THEN 1 WHEN '部门2' THEN 2 ELSE 3 END;return num;
END
#创建员工
CREATE DEFINER=`root`@`%` PROCEDURE `add_emp`(IN `num` int)
BEGINDECLARE i int DEFAULT 1;WHILE (i <= `num` ) DO INSERT into emp VALUES (i,rand_name(),rand_age(),rand_phone(),rand_dep()); set i=i+1;END WHILE;
END
完成上面创建表,创建函数过程和自定义函数后,调用函数过程add_emp生成随机员工。
CALL add_emp(30);
基本查询语句介绍
SELECT {*|<字段列表>}
[WHERE<表达式>][GROUP BY<group by definition>]
[HAVING <expression>[{<operation><expression>}...]]
[ORDER BY <order by definition>]
[LIMIT [<offset>,]<row count>]}
SELECT [字段1,字段2,...字段n] FROM [表或视图] WHERE [查询条件];
其中,各条子句的含义如下:
- {* | <字段列表>}包含星号通配符和字段列表,表示查询的字段。其中,字段列表至少包含一个字段名称,如果要查询多个字段,多个字段之间用逗号隔开,最后一个字段后不加逗号。
- FROM <表1>,<表2>…,表1和表2表示查询数据的来源,可以是单个或者多个。
- WHERE子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。
- GROUP BY <字段>,该子句告诉MySQL如何显示查询出来的数据,并按照指定的字段分组。
- [ORDER BY <字段>],该子句告诉MySQL按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)、降序(DESC)。
- [LIMIT [,] ],该子句告诉MySQL每次显示查询出来的数据条数。
MYSQL从简单查询到高级查询(一)相关推荐
- mysql 最值复杂查询_MySQL高级查询
我们使用SQL查询不能只使用很简单.最基础的SELECT语句查询.如果想从多个表查询比较复杂的信息,就会使用高级查询实现.常见的高级查询包括多表连接查询.内连接查询.外连接查询与组合查询等,今天我们先 ...
- mysql 层次化查询_SQL高级查询(层次化查询,递归)
SQL 高级查询 层次化查询 层次化结构可以理解为树状数据结构,由节点构成.比如常见的组织结构由一个总经理,多个副总经理,多个部门部长组成.再比如在生产制造中一件产品会有多个子零件组成.举个简单的例子 ...
- MySQL基本知识点汇总 以及 高级查询练习
文章目录 一:库 创建 添加 练习题 二:表 创建: 新增: 修改: 符号: 删除: 练习题 三 查询: 排序: 聚合函数 分组查询 查询语句的语法规范 查询练习题 四 高级查询 表连接查询 子查 ...
- mysql多类型查询_MYSQL中的多类型查询及高级查询操作
离散查询 select * from car where price=30 or price=40 or price=50 or price=60; select * from car where p ...
- mysql lambda查询_MySQL高级查询和编程基础
学习概述 随着数据库管理信息系统的日益复杂和庞大,软件应用系统对数据库设计.数据存储.数据查询和数据维护等提出了更高的要求.本书主要介绍数据库设计的方法和技术.子查询技术.MySQL编程基础知识和存储 ...
- java高级查询_SQL高级查询(转载)
transact---sql高级查询(下) 5:使用having关键字来筛选结果 6:使用compute和compute by子句 7:使用嵌套查询 8:分布式查询 E:使用having关键字来筛选结 ...
- mysql基础(3)-高级查询
聚合函数 count 返回查询结果的条数 max 返回查询结果的最大值 min 返回查询结果的最小值 sum 返回查询结果的和 avg 返回查询结果的平均值 统计分数大于等于90的人数: mysql& ...
- mysql group by 集合_MySQL高级查询之与Group By集合使用介绍
在MySQL中,你可以获取表达式组合的连接值. 可以使用DISTINCT删去重复值.假若你希望多结果值进行排序,则应该使用 ORDER BY子句. GROUP_CONCAT mysql> SEL ...
- solr基本查询和高级查询
查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - 指 ...
- mysql查询过程从客户端发送查询请求_MySQL查询过程和高级查询
最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说自己的理解和总结. 总体目录如下,上篇介绍了前3小节,分析了索引为 ...
最新文章
- 利用SIMULINK搭建一个16QAM调制解调收发系统
- 线程池 c linux 编程,关于c++:linux-c编程之高效线程池如何实现无琐化
- ASP.NET Core quot;完整发布,自带运行时quot; 到jexus
- Vue——this.$nextTick()
- PID算法原理 一图看懂PID的三个参数
- WINRAR青绿色透明主题皮肤 Vista/win 7下效果极佳
- Session管理之超时设置和强制下线
- matlab结构地震,结构地震反应解析递推格式的Matlab实现
- 总结Windows查看产品密匙方法
- 【历史上的今天】7 月 10 日:iOS App Store 问世;台积电创始人出生;苹果手机越狱的起源
- 计算机专业29岁博士毕业,已经29岁了想去读博士晚不晚?
- 游戏建模过程中如何布线?建模布线原理和技巧
- 【微信小程序】点击事件绑定三元方法
- RabbitMQ核心功能介绍
- 计算机加入域的一种方法
- 一键生成Springboot Vue项目! 【私活神器】
- Linux 指令学习之ping
- 【传感器模块】 HC-SR501 人体红外感应模块 热释电 红外传感器
- 国家标准,行业标准文件
- 微信小程序入门篇(一)