mysql 表查询

1 单表查询

查询所有字段

select * from table_name

查询指定记录

and not like desc asc

order by

in 关键字 in (1,2,3,4)

between 关键字 between 1 and 2

like  %或者_ 查询模糊匹配的

_ 代表1个

% 代表1个或者多个。

and 的多条件查询  and 优先生效

or 的多条件查询

district 不同

多列排序

select * from city where id<10 order by contry name

分组查询 group by

分组之后过滤使用 having

where 是在分组之前选择数据

having 是在分组之后过滤的语句

求和 rollup 分组后的执行

多字段分组

类似于 多字段排序。

限制查询结果行数量

linit start, pagesize

2 使用集合函数查询

count(*)函数 count 不统计空的数值

* 整张表,行最多的那个

col_name 代表统计对应列的非空数据

sum() 求和函数  会进行全表扫描。

avg() 统计平均数

max() 求最大值  全表扫描 reset query cache; 先清楚掉缓存

min() 最小值

正则表达式查询

^ 开始

$ 结尾

. 任意单个字符  出现位置很重要。

* 匹配零个或多个

+ 匹配1次或多次

[abc] [^abc] 匹配中括号中的任意一个

{start,end} 开始次数

例子:select uid from onethink_member where uid regexp ‘^1‘ ;

mysql> select uid from onethink_member where uid regexp ‘1$‘ ;

总计: 尽量不用 select *

group by 和 order by 语句会大大增加执行查询消耗

数据量大的时候,慎用集合函数

如果一条查询语句经常被执行,where 里面的语句最好有索引

3 子查询

any some 子查询  any 任何

表示满足其中任一条件

例子:select uid from onethink_member where uid > any (select uid from onethink_ucenter_member );

exists 和 not exists 子查询

子查询数据存在在查询,没有在不查询;

例子:select uid from onethink_member where uid = exists (select uid from onethink_ucenter_member );

mysql> select uid from onethink_member where uid != exists (select uid from onethink_ucenter_member );

in 子查询

例子:

mysql> select uid from onethink_member where uid in  (select id from onethink_ucenter_member where id > 900 );

union 子查询

用于合并查询结果  union all 就不去掉重复了。

列必须相同  all 关键字 把两种表做拼接

create table table_name2 like table_name1;//复制表结构

mysql> select uid as id from onethink_member union select username as uname from onethink_ucenter_member;

mysql> select uid as id, nickname from onethink_member union all select username as uname,id from onethink_ucenter_member;

总结:

多表查询注意名称的唯一性

内链接比外链接效率高

注意笛卡尔积问题

查询最好有索引

时间: 2024-08-08 03:22:32

mysql 表查询的相关文章

mysql表查询练习

准备数据 create table book( id int primary key auto_increment, name varchar(16), price int ); create table author( id int primary key auto_increment, name varchar(16) ); create table book_author( id int primary key auto_increment, book_id int, author_id

mysql带条件查询,联表查询

---恢复内容开始--- 1,用于设定所select出来的数据是否允许出现重复行(完全相同的数据行) all:允许出现--默认不写就是All(允许的). distinct:不允许出现--就是所谓的"消除重复行" 2,where:条件 3,group by:分组依据 后面加表的字段名,通常只进行一个字段的分组 mysql表查询语法形式:select [all | distinct] 字段名或表达式 from 表名 [where] [group by] [having] [order by

Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

web day16 数据库 完整性约束,mySQL编码问题,备份与恢复,多表查询

约束 * 约束是添加在列上的,用来约束列的! 1. 主键约束(唯一标识) ****非空*** ****唯一*** ****被引用**** * 当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现. * 创建表时指定主键的两种方式: > CREATE TABLE stu( sid      CHAR(6) PRIMARY KEY, sname     VARCHAR(20), age         INT, gender     VARCHAR(10) ); 指定sid列为主键列,即为s

查询mysql表是否被损坏和修复、优化

查询mysql表是否被损坏命令,如下: # CHECK TABLE 表名 mysql的长期使用,肯定会出现一些问题,一般情况下mysql表无法访问,就可以修复表了,优化时减少磁盘占用空间.方便备份. 表修复和优化命令,如下: #REPAIR TABLE `table_name` 修复表 #OPTIMIZE TABLE `table_name` 优化表 REPAIR TABLE 用于修复被破坏的表. OPTIMIZE TABLE 用于回收闲置的数据库空间,当表上的数据行被删除时,所占据的磁盘空间并

python3 mysql 多表查询

python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male'

Mysql 表连接查询

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

mysql基础-数据库多表查询-记录(六)

0x01 MySQL多表查询和子查询 联结查询:事先将两张或者多张表join,根据join的结果进行查询 cross join:交叉联结  用的少, 相当于 (a+b)*(c+d+e) 所得结果的形式   用的少 自然联结  --- 只能在两者相等的情况下才能建立连接 等值联结:把相同的字段进行等值连接 外联结: 左外联接:只保留出现在左外连接元算之前(左边)的关系中的元组(以左表为准,) left_tb LEFT JOIN right_tb ON 条件 右外联接:只保留出现在右外连接元算之后(

MySQL 表子查询

MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: aid title content uid 1 文章1 文章1正文内容... 1 2 文章2 文章2正文内容... 1 3 文章3 文章3正文内容... 2 4 文章4 文章4正文内容... 3 blog 表: bid title content uid 1 日志1 日志1正文内容... 1 2 文章2 文章2正文内容... 1