基本mysql语句
一 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语句的更多相关文章
- 如何根据执行计划,判断Mysql语句是否走索引
如何根据执行计划,判断Mysql语句是否走索引
- 让dede运行php代码和mysql语句
一.dede运行php代码 举例1: {dede:name runphp='yes'} $str = "hello ";@me = $str;@me .= "world& ...
- php代码优化,mysql语句优化,面试需要用到的
首先说个问题,就是这些所谓的优化其实代码标准化的建议,其实真算不上什么正真意义上的优化,还有一点需要指出的为了一丁点的性能优化,甚至在代码上的在一次请求上性能提升万分之一的所谓就去大面积改变代码习惯, ...
- mysql语句:批量更新多条记录的不同值[转]
mysql语句:批量更新多条记录的不同值 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 帮助 1 UPDATE mytable SET myfield = 'value' WHERE ...
- Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值
Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值 Thinkphp 的文档经常不够完整的表达MYSQL的各种组合,is not null在thinkp ...
- MySQL语句进行分组后的含有字段拼接方法
MySQL语句: SELECT GROUP_CONCAT(DISTINCT transaction_no) FROM `lm_wh_trans` GROUP BY staff_code; 如果tran ...
- shell脚本循环执行mysql语句
参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: ...
- 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码
一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...
- mysql语句中把string类型字段转datetime类型
mysql语句中把string类型字段转datetime类型 在mysql里面利用str_to_date()把字符串转换为日期 此处以表h_hotelcontext的Start_time和En ...
- php中mysql语句的基本写法
php中mysql语句的基本写法 php作为一门后台语言必须要与mysql数据库打交道,做到将内容存储到数据库以及数据库数据读写的操作,那么下面就来说下最近学习的一些东西: 在具体将之前先说一下编码的 ...
随机推荐
- NSString的创建
create #progma mark create NSString void stringCreate(){ //char *s="A String";->c NSSt ...
- Ocelot 网关 和 consul 服务发现
服务发现 Consul 一.安装和启动 下载 [Consul](https://www.consul.io/downloads.html) 下载完成后,解压,只有一个consul.exe,把目录添加到 ...
- python 进程池和任务量变化测试
今天闲,测试了下concurrent.futures 模块中的ThreadPoolExecutor,ProcessPoolExecutor. 对开不同的数量的进程池和任务量时,所耗时间. from c ...
- Ubuntu下Nginx的安装和卸载
环境是Ubuntu 16.04 安装: sudo apt-get update sudo apt-get install nginx 卸载: sudo apt-get --purge remove n ...
- RAFT选举算法-分布式数据库困惑
在做HIS研发工作的时候一直想完善其数据组件,想做一个分布式的数据库支持系统.但一直以来都不清楚这个选举算法应怎么做,原来有一个叫raft的算法https://www.cnblogs.com/just ...
- 重读APUE(14)-主线程终止对子线程的影响
在main中创建线程,我们称main线程为主线程,新建线程为子线程(其实没有什么主线程和子线程的父子概念,它们是平行的,为了好理解这样称呼),如果子线程内部执行相对比较耗时的操作,主线程执行的快,而且 ...
- AngularJS开发中常用的写法,如:获取URL参数、路由跳转、$http、获取元素等
控制器,带状态 app.controller('editCtrl', ['$http', '$location', '$rootScope', '$scope', '$state', '$stateP ...
- Flume-自定义 Source 读取 MySQL 数据
开源实现:https://github.com/keedio/flume-ng-sql-source 这里记录的是自己手动实现. 测试中要读取的表 CREATE TABLE `student` ( ` ...
- Flutter移动电商实战 --(15)商品推荐区域制作
1.推荐商品类的编写 这个类接收一个List参数,就是推荐商品的列表,这个列表是可以左右滚动的. /*商品推荐*/ class Recommend extends StatelessWidget { ...
- 在arm上执行某个程序时总是提示 not found是怎么回事?
答: 使用ldd查看程序是否缺少库,如果缺少库,那么就从交叉编译工具链中获取并复制到arm的根文件系统中