1.TOP语句
SELECT TOP 10 * FROM table_name #选取表中前10的数据
MySQL不支持TOP语句,可用LIMIT替代。
SELECT * FROM table_name LIMIT 10 #选取表中前10的数据
那再说说LIMIT吧
SELECT * FROM table_name LIMIT 5, 10 #两个参数时,表示从6开始的10个,也就是6-15行
还有,当偏移量(offset)很大时
SELECT * FROM table_name LIMIT 10000, 10
性能明显下降,我们可以首先获取到offset的id然后直接使用limit size来获取数据。
SELECT * FROM table_name WHERE id >= (
SELECT id FROM table_name ORDER BY id LIMIT 10000, 1
)LIMIT 10
2. FULL JOIN(全连接)
FULL JOIN:从左,右表中返回所有行,包括没有匹配的行。
MySQL不支持全连接,可用UNION来联合左,右连接。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
UNION
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
再说说UNION
UNION:合并两个或多个SELECT语句的结果集(去重)。
UNION ALL:合并不去重。
3. SELECT INTO
复制表中数据到新表中。
SELECT * INTO newtable_name FROM oldtable_name
MySQL不支持SELECT INTO,可用
CREAT TABLE newtable_name (SELECT * FROM oldtable_name)
4.CHECK约束
CHECK约束用于限制列中的值得范围。
可是MySQL数据库对CHECK约束无效,可用触发器来实现功能。
CREATE TRIGGER person_check
BEFORE INSERT ON Persons
FOR EACH ROW
BEGIN
IF NEW.Id_P < 0 THEN
SET NEW.id_P = 0;
END IF;
END
5.FIRST(),LAST()函数
FIRST(),LAST():顾名思义,就是返回指定列中第一个/最后一个记录的值。
MySQL不支持FIRST(),LAST()函数。
也可用LIMIT + ORDER BY
SELECT column_name FROM table_name #FIRST()
ORDER BY column_name ASC #默认升序,可省略
LIMIT 1;
SELECT column_name FROM table_name #LAST()
ORDER BY column_name DESC
LIMIT 1;
PS:还有什么不足,欢迎补充。:)
版权声明:本文为weixin_41462047原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。