一 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. 7.26T1四分图匹配

    四分图匹配 题目描述 一天晚上,zzh 在做梦,忽然梦见了她. 见到她,zzh 也不去看她,只顾低头自语…… “噫,OI 这个东西,真是无奇不有.” “嘿,你又学了什么?” “嗯,学到了一种算法,”z ...

  2. Jenkins+Ant+Git+Jmeter接口自动化

    一.服务器分别安装JKD.Jenkins.Ant.Git.Jmeter 1.JKD安装参考:https://www.cnblogs.com/xiaoxitest/p/6168045.html 2.Je ...

  3. Java并发概念-1

    一,同步 和 异步: 同步:调用方需要等待被调用方回应之后,才能进行下一步动作. 异步:调用方不需要等待被调用方回应,直接继续自己的动作.在未来某个时间点可能会有被调用方的回应. 二,并发 和 并行 ...

  4. HDU 4374 One hundred layer(单调队列DP)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=116242#problem/E 题意:差不多就是男人勇下百层的游戏.从第一层到最 ...

  5. [题解] [CF1037D] Valid BFS?

    题面 题解 一个是模拟BFS的过程 还有一个是可以根据给出的BFS序构树, 再看两棵树是否相同 判断相同的话, 以同一个点为根, 看两棵树中1−

  6. 发现一个好的手机抓包工具Http Traffic

    ---恢复内容开始--- 晚上加班闲着没事,喜欢抓包,逛破解论坛,看到他们在聊Http Traffic手机抓包工具, 就下载了打算玩玩 Http Traffic: 是 HTTP 抓包调试工具 HTTP ...

  7. Jmeter Web 性能测试入门 (一):环境配置 (免安装版)

    去官网下载并安装java jdk8 去官网下载jmeter binaries最新的zip,并解压到某路径下.(注:由于jmeter-server的限制,放置的路径不要太长,路径不要带空格,例如:D:\ ...

  8. OpenCV3.4.1快速集成到Android studio中,10分钟搞定

    OpenCV3.4.1快速集成到Android studio中,10分钟搞定     转载 https://blog.csdn.net/yu540135101/article/details/8259 ...

  9. Ubuntu+Django+uWSGI+Nginx部署Django项目

    安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装 pip install uwsgi 配置uWSGI ...

  10. Centos7系统下以RPM方式如何安装mysql-5.7

    检查系统是否装有mariadb rpm -qa | grep mariadb 卸载mariadb 强制卸载mariadb rpm -e --nodeps mariadb-libs-5.5.35-3.e ...