1. sql教程
https://www.w3school.com.cn/sql/index.asp
SQL教程
2. mysql limit 和 offset 用法
mysql 里分页一般用limit来实现
select * from article LIMIT 1,3
select * from article LIMIT 3 OFFSET 1
上面两种写法都表示取2,3,4三条条数据
当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量。
当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量 。
3. mysql 小数取整
select ceil (小数)向上取整
select floor(小数)向下取整
4. mysql 获取前50%的数据
这里用到了一个 MySQL 变量来获取行号。
SELECT
a.*,
@row_num := @row_num + 1 AS row_num
FROM
emp a,
( SELECT @row_num := 0 ) b
ORDER BY
empno
有了行号,我们就可以根据行号和总记录数来过滤了。
SELECT* FROM
(
SELECT
a.*,
@row_num := @row_num + 1 AS row_num
FROM
emp a,
( SELECT @row_num := 0 ) b
ORDER BY
empno
) base
WHERE
base.row_num <= (
@row_num * 0.5)
@row_num 这个变量,是按行来的,所以我们在 where 条件中使用的时候,他是最后1条记录的行号,及总记录数
总记录数乘以50%,就是前50%的记录数,这样,我们就获取了前50%的数据了。
5. 不同的 SQL JOIN
除了 INNER JOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
- JOIN: 如果表中有至少一个匹配,则返回行
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行,即使在右表中没有匹配的行。
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行,即使在左表中没有匹配的行。
- FULL JOIN: 只要其中一个表中存在匹配,就返回行。如果左表中的行在右表中没有匹配,或者如果 右表中的行在表左表中没有匹配,这些行同样会列出。
6. 复制表数据
MySQL 数据库不支持 SELECT … INTO 语句,所以用 CREATE TABLE 新表 AS SELECT 替代,但支持 INSERT INTO … SELECT 。
两者的主要区别为:
它们都是用来复制表
- CREATE TABLE 新表 AS SELECT :要求目标表不存在,因为在插入时会自动创建
CREATE TABLE emp_c AS SELECT * FROM emp WHERE mgr = 7698
CREATE TABLE emp_c AS SELECT column1,column2 FROM emp WHERE mgr = 7698
- INSERT INTO 新表 SELECT :要求目标表存在
INSERT INTO emp_c SELECT * FROM emp WHERE mgr = 7698
INSERT INTO emp_c (column1,column2) SELECT column1,column2 FROM emp WHERE mgr = 7698