MySQL 高级查询操作
一、预告
最近刚刚入职了一家连锁大公司,从事硬件工程师工作(好吧,其实是做一些简单修理...)。我发现了什么呢,那就是不管到哪个行业那个阶段,数据库是必须会查询的。在早期,我写过SQL 简单新建删除权限修改,但毕竟过于基础。现在我想写一些高端查询操作,具体可以参考下方目录或大小标题段落。
二、简单查询
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
看起来是不是很简单,只是显示一下数据库嘛。
MariaDB [(none)]> use information_schema;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [information_schema]> show tables;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| CLIENT_STATISTICS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
.........................................
但如果换成了显示数据表,情况就一下子变得复杂了 。
**问题: **如果我想显示 show
指令的显示结果,该如何操作。
三、显示筛选
MariaDB [information_schema]> show tables like 'TABLE%';
+---------------------------------------+
| Tables_in_information_schema (TABLE%) |
+---------------------------------------+
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TABLE_STATISTICS |
+---------------------------------------+
5 rows in set (0.00 sec)
再问: 如果我想把 数据名 单独拿出来使用,有没有可能可以操作?
四、存储过程
在继续往下看实验之前,得和你说下 MYSQL 的一些黑科技。
在关系数据库内,存储过程 是一个 ANSI 标准的只读视图表。它提供的信息关于 tables, views, columns, procedures 在 information_schema 数据库内。
所以,要解决第二个问题。
你要有一个清晰的概念,即 SHOW
指令本身调用的数据来源即为 information_schema .
MariaDB [information_schema]> select schema_name from information_schema.schemata;
+--------------------+
| schema_name |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [information_schema]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [information_schema]>
**问题 3: ** 虽然你已经知道了 存储过程 ,并且将信息全部使用 select
指令调出。还是没有办法进行操作啊,操作怎么的得 独立
出来吧。
提示: 如何显示数据库的命令位于附表二。
五、查询语句
1、作为变量
MariaDB [(none)]> set @var := '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select @var;
+--------+
| @var |
+--------+
| 123456 |
+--------+
1 row in set (0.00 sec)
提示: :=
与 =
区别在于,前者是赋值后者是比较。在有些情况下直接使用等号也是可以的,建议使用 :=
这个写法。一些常用系统函数,位于 “附表一” 。
MariaDB [(none)]> set @t1 := (select schema_name from information_schema.schemata);
ERROR 1242 (21000): Subquery returns more than 1 row
MariaDB [(none)]> set @t1 := (select schema_name from information_schema.schemata LIMIT 1);
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select @t1;
+--------------------+
| @t1 |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
MariaDB [(none)]>
**提示: **虽然可以使用变量的方式,但是很明显的是一个数据一个变量。
2、函数调用
MariaDB [(none)]> set @t2 := (select group_concat(schema_name) from information_schema.schemata);
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select @t2;
+--------------------------------------------------+
| @t2 |
+--------------------------------------------------+
| information_schema,mysql,performance_schema,test |
+--------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]>
**函数名称: ** group_concat()
返回串联的字符串从而把列变成了行。
3、写入数据表
MariaDB [(none)]> create table test.test select schema_name from information_schema.schemata;
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0
MariaDB [(none)]> select * from test.test;
+--------------------+
| schema_name |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]>
备注
附表一
[root@localhost ~]# mysql -uroot -ppassword -e "select @@version_compile_os"
+----------------------+
| @@version_compile_os |
+----------------------+
| Linux |
+----------------------+
[root@localhost ~]# mysql -uroot -ppassword -e "select version()"
+----------------+
| version() |
+----------------+
| 5.5.56-MariaDB |
+----------------+
[root@localhost ~]# mysql -uroot -ppassword -e "select user()"
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
附表二
select TABLE_SCHEMA,TABLE_NAME from information_schema.COLUMNS;
相关文献
- MySQL 注入
- DBAplus 社群
- wikipedia
博客提示
本博客日均 IP 已经到一百以上,后续会进行数据筛选汇总,作为 Python 下 Django 博客核心资料。
现在关注微信公众号:IT奋斗点滴
再我整理完成后,即可获取到完整离线版,计算机学习资料。
MySQL 高级查询操作的更多相关文章
-
第四章 MySQL高级查询(二)
第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...
-
第三章 MySQL高级查询(一)
第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1. DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...
-
MySQL高级查询与编程作业目录 (作业笔记)
MySQL高级查询与编程笔记 • [目录] 第1章 数据库设计原理与实战 >>> 第2章 数据定义和操作 >>> 2.1.4 使用 DDL 语句分别创建仓库表.供应 ...
-
MySQL高级查询与编程笔记 • 【目录】
章节 内容 实践练习 MySQL高级查询与编程作业目录(作业笔记) 第1章 MySQL高级查询与编程笔记 • [第1章 数据库设计原理与实战] 第2章 MySQL高级查询与编程笔记 • [第2章 数据 ...
-
python进阶09 MySQL高级查询
python进阶09 MySQL高级查询 一.筛选条件 # 比较运算符 # 等于:= 不等于:!= 或<> 大于:> 小于:< 大于等于>= 小于等于:<= #空: ...
-
MYSQL中的多类型查询及高级查询操作
离散查询select * from car where price=30 or price=40 or price=50 or price=60;select * from car where pri ...
-
Day3 MySql高级查询
DQL高级查询 多表查询(关联查询.连接查询) 1.笛卡尔积 emp表15条记录,dept表4条记录. 连接查询的笛卡尔积为60条记录. 2.内连接 不区分主从表,与连接顺序无关.两张表均满足条件则出 ...
-
MySQL高级查询 &; 事务机制
1.基础查询where 高级条件查询Where子句 SELECT empno,ename,sal,hiredate FROM t_tmp WHERE deptno=10 AND (sal+IFNULL ...
-
2.mysql高级查询
01.SQL高级查询_排序 1.排序语句:order by 排序字段名 asc(默认的-升序) / desc(降序); 2.例如:查询所有服装类商品,将查询结果以价格升序排序: ...
随机推荐
-
Font Squirrel
Font Squirrel FontSquirrel:国外免费字体下载网是一个提供高质量商业字体下载网站,提供海量的英文字体库,用户可以随意下载并应用于各种商业用字,无需考虑其版权问题. 官网地址:h ...
-
基于Eclipse+Cordova的Android Hybrid应用开发环境搭建
环境说明 操作系统:Windows 7 64位 Eclipse版本:4.5.2 Release(eclipse-jee-mars-2) JDK版本:1.8 搭建步骤 1.从http://www.ecl ...
-
Spring Boot交流平台
可以关注微信公众号springboot或者可以加入 Spring Boot QQ交流群1:193341332 (群已满) Spring Boot QQ交流群2:193341364 微信公众号搜索spr ...
-
教您如何检查oracle死锁,决解死锁
oracle死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看…… oracle死锁问题一直困扰着我们,下面就教您一个oracle死 ...
-
统计学习方法学习(四)--KNN及kd树的java实现
K近邻法 1基本概念 K近邻法,是一种基本分类和回归规则.根据已有的训练数据集(含有标签),对于新的实例,根据其最近的k个近邻的类别,通过多数表决的方式进行预测. 2模型相关 2.1 距离的度量方式 ...
-
NOIP 2011 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
-
MySQL系统变量sql_safe_updates总结
MySQL系统变量sql_safe_updates总结 在MySQL中,系统变量sql_safe_updates是个非常有意思的系统变量,在Oracle和SQL Server中都没有见过这样的参数 ...
-
jQuery使用(七):事件绑定与取消,及自定事件的实现原理
实例方法: on() one() off() trigger() hover() 一.绑定事件与jQuery事件委托 $(selector).eventType(fn); $(selector).on ...
-
php基础-5
php的面相对象 <?php class Hello { public function say_hello() { echo "hello"; } } $say = ne ...
-
LeeTCode题解之Remove Duplicates from Sorted List
1.题目描述 2.问题分析 对于链表中的每一个元素,找到其后面和它不相等的第一个元素,然后指向该元素. 3.代码 ListNode* deleteDuplicates(ListNode* head) ...