基本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数据库打交道,做到将内容存储到数据库以及数据库数据读写的操作,那么下面就来说下最近学习的一些东西: 在具体将之前先说一下编码的 ...
随机推荐
- HDOJ->考新郎(sdut1021)
考新郎 Problem Description 在一场盛大的集体婚礼中,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的: 首先,给每 ...
- nodejs 用http模块搭建的服务器的路由,以及路由代码的重构过程
我们打开浏览器浏览网页时,点击上面不同的模块,地址栏中的路由会发生相应的变化,从而,浏览器向服务器发起请求的内容也会发生改变,那么服务端,是如何来做的呢? 服务端也是,通过路由来做出不同的响应的,我们 ...
- docker容器中查看容器linux版本
root@dae5aecea3dd:~# cat /etc/issue Ubuntu LTS \n \l
- nginx 部署php
一:nginx安装: yum install nginx 安装完成即可,在/usr/sbin/目录下是nginx命令所在目录,在/etc/nginx/目录下是nginx所有的配置文件,用于配置ngin ...
- vue实战_从头开始搭建vue工程
写在前面:vue工程入口文件分析 /index.html,/src/main.js,/src/APP.vue /index.html文件示例: <!DOCTYPE html> <ht ...
- Jenkins系统初始化配置
1.点击系统管理-->全局安全配置 2.设置允许用户注册,点击保存 3.配置全局工具 4.配置maven文件路径,使用文件系统中的settings文件 5.配置jdk 6.配置maven 7.我 ...
- Nginx中配置非英文域名
前两天遇到个配置越南语的域名的情况.域名和ip解析完成后,直接ping域名也不通,还以为是解析问题.研究了半天,nginx配置非英文域名时,需要有其他操作. 非英文域名转换成punycode编码才可以 ...
- js 移除数组中的内容
使用方法:arr.splice(arr.indexOf(ele),length):表示先获取这个数组中这个元素的下标,然后从这个下标开始计算,删除长度为length的元素 这种删除方式适用于任何js数 ...
- RISC-V riscv64-unknown-elf
riscv64-unknown-elf 为 RISC-V指令集的交叉编译工具 以下环境在Liunx ubuntu x86_64 环境下进行,下面示例以生成32位文件为目标来操作使用. screen / ...
- 在使用vagrant访问PHP文件是报错“file not found”,好像是最新的NGINX不能识别document_root,只能改为自己的项目目录/vagrant_data
出现该错误有很多可能,有可能是root配置不对,有可能是fastcgi_param SCRIPT_FILENAME参数不对等. 而本人遇到的也是参数不对,但是是一个比较少人提及的问题,nginx版本不 ...