Maison > base de données > tutoriel mysql > MYSQL基础02(查询)_MySQL

MYSQL基础02(查询)_MySQL

WBOY
Libérer: 2016-05-30 17:10:58
original
1093 Les gens l'ont consulté

查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况,MYSQL对标准SQL是比较支持,如果是新手的话,建议去w3school 学习标准SQL.

 

1.DUAL

 

DUAL是一个虚拟表,即该表是不存在的,用于直接select 标量时,使语句看起来符合sql规范

 

-- MSSQL
select 1,'A'
-- Oracle中dual 不可缺少
select 1,'A' from DUAL
-- mysql  以下2种格式都支持
select 1,'A';
select 1,'A' from DUAL;
Copier après la connexion

2.LIMIT

相对MSSQL来说,MYSQL并没有TOP关键字,但有LIMIT,而且效率更高且更灵活

SELECT * FROM usr LIMIT 1;
-- LIMIT 1 的意思是取1条记录, MYSQL在取完1条记录后将不再操作.

SELECT * FROM usr LIMIT 0,2;
-- LIMIT 0,2的意思是从第一行(包括第一行)开始,取2条记录

SELECT * FROM usr WHERE u_id IN (SELECT u_id FROM usr WHERE dept='信息部' LIMIT 1);
-- 该语句执行时,MYSQL会报错,意思是不能在子查询中使用limit
-- 解决办法,将使用limit的语句再套一层表即可;如下:
SELECT * FROM usr WHERE u_id IN (SELECT * FROM (SELECT u_id FROM usr WHERE dept='信息部' LIMIT 1)aa)

PS:MSSQL中使用TOP,数据库会先排序,然后再返回数据,因此limit的效率比较高
Copier après la connexion

3.子查询的update错误

UPDATE usr SET usr_name='匿名' WHERE u_id IN (SELECT u_id FROM usr WHERE dept='信息部')
-- 语句报错,大概意思是修改表不能使用自身
-- 解决方法,跟上面一样,再套一层表即可
UPDATE usr SET usr_name='匿名' WHERE u_id IN (SELECT * FROM (SELECT u_id FROM usr WHERE dept='信息部')aa)
Copier après la connexion


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal