一 select语句

基本语法

select 列名1,列名2             //可以使用完全限定的列名  tables.列名

form tables

过滤(where )

分组(group by 列名1,列名2)    // 分组依据必须是 select的所有列名(统计计算的除外) ,否则可能会出现歧义具体见下

having  对分组进行过滤 ,  不可使命别名(select里定义的别名)

排序(order by)

limit子句

1)distinc关键字

select distinct A,B,C from tables;    从表中tables 里,查询ABC 三列, distinct 指明 A B C这三列中至少有一列不同时才显示。

2)LIMIT

select A,B,C from tables limit 5;  显示前五行

select A,B,C from tables limit 5,5; 显示行5开始的五行    计数是从行0开始的

3)order by 字句, 对索引行进行排序

order by A,B  先按A进行排序,再按B进行排序  默认是升序

order by A desc,B   按A进行降序排列,再按B进行升序排列,  desc 只修饰位于其前面的一列。

3)where字句

=   !=  <   <=   >   >=  BETWEEN 指定两个值之间

select A,B,C from tables

where  c between 2 and 10;            //   为赋值列可以这样索引  where c is NULL

select A,B,C from tables

where  A<2  AND  C>10 ;   //    OR 也行       AND 的优先级比OR 高                         A = 1 OR A=2 AND C<5  与    A = 1 OR (B>2 AND C<5)等价

IN 用来指定条件范围

select A,B,C from tables

where A IN(1002,1003)  //   IN 字句还可以包含其他SELECT语句

order by A

4) LIKE 文本匹配

A like 's%e'   中间为任意个任意字符            即只匹配出     s....e   这样的行  as.....e匹配不出来,  LIKE 是全量匹配

A like 's_e'    下划线 表示任意一个字符

5)正则表达式    REGEXP (正则表达式规则,后续写)            子串匹配

A  REGEXP   '1000'    列A中包含子串 ‘1000’的所有列

1000|2000

[123]   1或2或3

[0-9]   [a-z] 区间或            [:digit:]任意数字同[0-9]

[:digit:]{4}    后面的4指明匹配四次, 即任意4位数

[:digit:]{4,}    不少于4个

[:digit:]{4,6}   4到6个之间

^文本的开始       ^[0-9\\.]   在文本的开始处匹配 数字或者.

$文本的结尾

[[: 词的开始

[[:>:]]词的结尾

6) AS 与 concat函数

concat(A, '(', B,')')    输出列名为   A(B)

A AS E    给列起个别名E进行显示 输出

7) 算数计算    (+ - * /)

select  procid, price, num,  price*num AS total

form tables;

where  total>2000;

order by total;                    输出总价大于2000的 所有产品的 id 单价 数量 和总价信息  并排序

8)  函数

文本操作函数

left()     返回串左边的字符

length()    串的长度

lower()   转化为小写

LTrim()   去掉串左边的空格

RTrim()

Upper()

select  procid,Upper(procname), price, num,  price*num AS total     //Upper(procname) 商品名字按大写输出

form tables;

where  total>2000;

order by total;

日期与时间处理函数   数值处理函数(绝对值,三角函数等)  略了,真多

9)统计函数

AVG                         AVG(distinct  pro_price)

COUNT        计数

MAX             返回指定列的最大值(数字或者日期),  如果用于文本列时,  返回正序排列的最后一行(先排序才有意义)

MIN

SUM            列值之和

select AVG(pro_price) AS avg_price          返回特定列的平均价格

from tables

where pro_id =2001 ;                       // 返回产品 2001 的平均价格

select Sum(pro_price*num) AS total          返回采购的产品2001 的总价值

from tables

where pro_id =2001 ;

10) 分组 group by

每个供应商可能提供多个产品, 查询每个供应商提供的产品数量

select ven_id, COUNT(*) AS num_prods  // 分组统计行数

form tables;

group by ven_id;

select

select province, countrycode, sum(popu)      // 国家 省份 城市

from city

where countrycode = 'CHN'

group by countycode;   //本意是统计中国各个省份的总人口, 这里却是按国家分组, 只统计出了中国(where的原因)的总人口, 分组不够细致

11)having 对每个分组单独进行过滤

select province, countrycode, sum(popu) AS  popu_of_province      // 国家 省份 城市

from city

where countrycode = 'CHN'

group by countycode,province

having  sum(popu)>200;           统计中国各个省份的总人口数大于200万的城市

二 子查询(嵌套)

使用子查询,应该保证,select语句与where语句 具有相同的列信息,  子查询也可以使用计算字段,统计函数; 注意使用完全限定名

select cust_name, email   // 客户姓名,联系方式

from customers   // 客户信息表

Where  cust_id  IN  (  select cust_id     // cust_id  客户id

from orders                  // 订单表象, 包含 订单号,客户id , 订单日期  , 这里并没有实际的订单产品信息

where order_num IN ( select  order_num

from orderItems      // 订单详细的信息表象   保存了该订单的产品id, 价格,数量等信息

where proc_id = 1002) ;

三 联结

表vendors     ven_id(供应商id)       vend_name      address   email

表products    proc_id    proc_name   ven_id   price

1            milk               1001      10.0

2            milk               1002       8.9

select vend_name, proc_name price

from  vendors ,products     // 内部联结

where  vendors.ven_id = porducts.ven_id    //  不带where 字句, 会做两个表的笛卡尔积   即两个表任意行之间组合, 会输出N*M行

order by vend_name,proc_name;

select vend_name, proc_name price

from  vendors INNER JOIN products     // 内部联结

on vendors.ven_id = porducts.ven_id    //  不带where 字句, 会做两个表的笛卡尔积   即两个表任意行之间组合, 会输出N*M行

order by vend_name,proc_name;

A left OUTER JOIN   B   //  产生表A的完全集,如果B表中匹配的则有值,没有匹配的则为NULL

right OUTER JOIN

基本mysql语句的更多相关文章

  1. 如何根据执行计划,判断Mysql语句是否走索引

    如何根据执行计划,判断Mysql语句是否走索引

  2. 让dede运行php代码和mysql语句

    一.dede运行php代码 举例1: {dede:name runphp='yes'} $str = "hello ";@me = $str;@me .= "world& ...

  3. php代码优化,mysql语句优化,面试需要用到的

    首先说个问题,就是这些所谓的优化其实代码标准化的建议,其实真算不上什么正真意义上的优化,还有一点需要指出的为了一丁点的性能优化,甚至在代码上的在一次请求上性能提升万分之一的所谓就去大面积改变代码习惯, ...

  4. mysql语句:批量更新多条记录的不同值[转]

    mysql语句:批量更新多条记录的不同值 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 帮助 1 UPDATE mytable SET myfield = 'value' WHERE ...

  5. Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值

    Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值 Thinkphp 的文档经常不够完整的表达MYSQL的各种组合,is not null在thinkp ...

  6. MySQL语句进行分组后的含有字段拼接方法

    MySQL语句: SELECT GROUP_CONCAT(DISTINCT transaction_no) FROM `lm_wh_trans` GROUP BY staff_code; 如果tran ...

  7. shell脚本循环执行mysql语句

    参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: ...

  8. 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码

    一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...

  9. mysql语句中把string类型字段转datetime类型

    mysql语句中把string类型字段转datetime类型   在mysql里面利用str_to_date()把字符串转换为日期   此处以表h_hotelcontext的Start_time和En ...

  10. php中mysql语句的基本写法

    php中mysql语句的基本写法 php作为一门后台语言必须要与mysql数据库打交道,做到将内容存储到数据库以及数据库数据读写的操作,那么下面就来说下最近学习的一些东西: 在具体将之前先说一下编码的 ...

随机推荐

  1. c++ 使用类生成随机数

    // generate algorithm example #include <iostream> // cout #include <algorithm> // genera ...

  2. Spring Cloud Eureka(五):Eureka Server 启动流程分析

    启用EurekaServer @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public st ...

  3. 百度地图API根据地名获取经纬度

    运用了Geocoding API,它包括地址解析和逆地址解析功能. 地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹.标志性建筑名称直接解析返回百度经纬度.例如:“北京市海淀区 ...

  4. Python学习日记(五)——初识函数(set、深浅拷贝、三目运算、函数、全局变量和局部变量)

    基本数据类型补充 set set集合,是一个无序且不重复的元素集合 #创建 s = {11,22,33,44}#类似字典 s = set() #转换 l = (11,22,33,44) s1 = se ...

  5. SOA(面向服务的架构)初识

    SOA是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能.一个服务通常以独立的方式存在于操作系统中.服务之间通过网络调用(常见有http+xml.http+json等),而非进程 ...

  6. QThread 线程暂停 停止功能的实现

    为了实现Qt中线程的暂停运行,和停止运行的控制功能 需要在设置两个static型控制变量. //终止原始数据单元进队出队,并清空数据. static bool stopSign; //原始数据单元队列 ...

  7. 【I·M·U_Ops】------Ⅱ------ IMU自动化运维平台之CMDB

    说明本脚本仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. #A 我理解的 CMDB CMDB翻译过来,Configuratio ...

  8. ELK的安全解决方案 X-Pack(1)

    安装 X-Pack 前必须安装 elasticsearch. Kibana.logstash,因为之前安装ELK选择的版本都是5.4.1,所以这次选择X-Pack的版本也要是5.4.1的 第一步:下载 ...

  9. C++ STL partial_sort_copy greater

    #include <iostream>#include <deque>#include <algorithm>#include <vector>#inc ...

  10. iptables之精髓(二)

    iptables实际操作 使用-v选项后,iptables为我们展示的信息更多了,那么,这些字段都是什么意思呢?我们来总结一下 pkts:对应规则匹配到的报文的个数. bytes:对应匹配到的报文包的 ...