这篇文章主要总结一些,常用的SQL语句,方便以后用的上直接复制粘贴
建表
create table users(
id int(11) primary key not null auto_increment,
name varchar(255) default '' not null,
email varchar(255) default '' not null,
password varchar(255) default '' not null,
updated_at timestamp() default '2019-04-16 10:01:03' not null,
created_at timestamp() default '2019-04-16 10:01:03' not null
);
limit
LIMIT是MySQL内置函数,其作用是用于限制查询结果的条数。
1)其语法格式如下:
LIMIT[位置偏移量,]行数
其中,中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开始显示,索引值从0开始,即第一条记录位置偏移量是0,第二条记录的位置偏移量是1,依此类推...,第二个参数为“行数”即指示返回的记录条数。
位置偏移量可以理解为跳过前xx条记录(元组).
/*当没有指定位置偏移量时,只取4条时,可以这样写*/
SELECT
*
FROM
YourTableName LIMIT 4;
/*当指定了位置偏移量时,从第3条起取4条时,可以这样写*/
/*因为索引是从0开始计数的,所以第3条对应的索引就是2*/
SELECT
*
FROM
YourTableName LIMIT 2,4;
修改表名
-- 修改表名, TO 或AS都可以,也以省略掉
-- ALTER TABLE 表名 RENAME [TO|AS] 新表名
ALTER TABLE user10 RENAME TO user11;
修改主键AUTO_INCREMENT 的指定起始值
-
建表时
1 |
|
2. 建表后
1 |
|
联表查询 JOIN, LEFT JOIN , RIGHT JOIN,FULL JOIN 的区别:
SELECT b.*,al.name as level_name,aa.name as area_name
from basic as b
LEFT JOIN agent as a ON b.id=a.bid
LEFT JOIN agent_level as al ON b.level=al.id
LEFT JOIN agent_area as aa ON b.area_id=aa.id
WHERE type=1;
1.inner join,在两张表进行连接查询时,只保留两张表中完全匹配的结果集。
2.left join,在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。右表中没有的字段自动填充NULL。
3.right join,在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。
4.full join,在两张表进行连接查询时,会返回左表和右表中所有没有匹配的行。查询结果是left join和right join的并集。
统计当月成功的订单金额:
SELECT SUM(`total_price`) AS tp_sum FROM `order` WHERE `created_at` BETWEEN '2019-07-17 00:00:00' AND '2019-07-18 00:00:00' AND `status` = 1
统计当月成功的订单金额:
SELECT SUM(`total_price`) FROM `order` WHERE `created_at` BETWEEN '2019-07-01 00:00:00' AND '2019-08-01 00:00:00' AND `status` = 1;
统计当年成功的订单金额
SELECT SUM(`total_price`) AS tp_sum FROM `order` WHERE `created_at` BETWEEN '2019-01-01 00:00:00' AND '2020-01-01 00:00:00' AND `status` = 1
LIKE 模糊查询
记录用户输入的关键词,然后按出现次数最多的来推荐到搜索列表展示给用户。
SELECT COUNT(title) as count,title FROM `search_history` GROUP BY title ORDER BY COUNT(title) DESC LIMIT 0,6;
SQL 给查询为空的字段,赋予默认值为0;
IFNULl() 函数。
SELECT IFNULL(sum(wg.num),0) as sum FROM `weixin_linda_orders` AS wo JOIN weixin_linda_order_goods AS wg ON wo.id = wg.order_id WHERE `createtime` >= '{$start}' AND `createtime` <= '{$end}' AND wg.goods_id = {$row->id}