SELECT * FROM table_name;
SELECT DISTINCT column_name;
SELECT column1, column2 FROM table_name WHERE condition;SELECT * FROM table_name WHERE condition1 AND condition2;SELECT * FROM table_name WHERE condition1 OR condition2;SELECT * FROM table_name WHERE NOT condition;SELECT * FROM table_name WHERE condition1 AND (condition2 OR condition3);SELECT * FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);
SELECT * FROM table_name ORDER BY column;SELECT * FROM table_name ORDER BY column DESC;SELECT * FROM table_name ORDER BY column1 ASC, column2 DESC;
SELECT TOP number columns_names FROM table_name WHERE condition;SELECT TOP percent columns_names FROM table_name WHERE condition;- 并非所有数据库系统都支持
SELECT TOP。 MySQL 中是LIMIT子句 SELECT column_names FROM table_name LIMIT offset, count;
- % (percent sign) 是一个表示零个,一个或多个字符的通配符
- _ (underscore) 是一个表示单个字符通配符
SELECT column_names FROM table_name WHERE column_name LIKE pattern;LIKE ‘a%’ (查找任何以“a”开头的值)LIKE ‘%a’ (查找任何以“a”结尾的值)LIKE ‘%or%’ (查找任何包含“or”的值)LIKE ‘_r%’ (查找任何第二位是“r”的值)LIKE ‘a_%_%’ (查找任何以“a”开头且长度至少为3的值)LIKE ‘[a-c]%’(查找任何以“a”或“b”或“c”开头的值)
- 本质上,IN运算符是多个OR条件的简写
SELECT column_names FROM table_name WHERE column_name IN (value1, value2, …);SELECT column_names FROM table_name WHERE column_name IN (SELECT STATEMENT);
SELECT column_names FROM table_name WHERE column_name BETWEEN value1 AND value2;SELECT * FROM Products WHERE (column_name BETWEEN value1 AND value2) AND NOT column_name2 IN (value3, value4);SELECT * FROM Products WHERE column_name BETWEEN #01/07/1999# AND #03/12/1999#;
SELECT * FROM table_name WHERE column_name IS NULL;SELECT * FROM table_name WHERE column_name IS NOT NULL;
SELECT column_name AS alias_name FROM table_name;SELECT column_name FROM table_name AS alias_name;SELECT column_name AS alias_name1, column_name2 AS alias_name2;SELECT column_name1, column_name2 + ‘, ‘ + column_name3 AS alias_name;
- 每个 SELECT 语句必须拥有相同的列数
- 列必须拥有相似的数据类型
- 每个 SELECT 语句中的列也必须具有相同的顺序
SELECT columns_names FROM table1 UNION SELECT column_name FROM table2;UNION 仅允许选择不同的值, UNION ALL 允许重复
ANY 如果任何子查询值满足条件,则返回 true。ALL 如果所有子查询值都满足条件,则返回 true。SELECT columns_names FROM table1 WHERE column_name operator (ANY|ALL) (SELECT column_name FROM table_name WHERE condition);
SELECT column_name1, COUNT(column_name2) FROM table_name WHERE condition GROUP BY column_name1 ORDER BY COUNT(column_name2) DESC;
SELECT COUNT(column_name1), column_name2 FROM table GROUP BY column_name2 HAVING COUNT(column_name1) > 5;
INSERT INTO table_name (column1, column2) VALUES (value1, value2);INSERT INTO table_name VALUES (value1, value2 …);
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;UPDATE table_name SET column_name = value;
DELETE FROM table_name WHERE condition;DELETE * FROM table_name;
SELECT COUNT (DISTINCT column_name);
SELECT MIN (column_names) FROM table_name WHERE condition;SELECT MAX (column_names) FROM table_name WHERE condition;
SELECT AVG (column_name) FROM table_name WHERE condition;
SELECT SUM (column_name) FROM table_name WHERE condition;
SELECT column_names FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;SELECT table1.column_name1, table2.column_name2, table3.column_name3 FROM ((table1 INNER JOIN table2 ON relationship) INNER JOIN table3 ON relationship);
SELECT column_names FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
SELECT column_names FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
SELECT column_names FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;
SELECT column_names FROM table1 T1, table1 T2 WHERE condition;
CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition;
ALTER TABLE table_name ADD column_name column_definition;
ALTER TABLE table_name MODIFY column_name column_type;
ALTER TABLE table_name DROP COLUMN column_name;
ABS(x)
BIN(x)
CEILING(x)
EXP(x)
FLOOR(x)
GREATEST(x1,x2,...,xn)
LEAST(x1,x2,...,xn)
LN(x)
LOG(x,y)
MOD(x,y)
PI()
RAND()
ROUND(x,y)
SIGN(x)
SQRT(x)
TRUNCATE(x,y)
AVG(X)
COUNT(X)
MIN(X)
MAX(X)
SUM(X)
GROUP_CONCAT(X)
ASCII(char)
BIT_LENGTH(str)
CONCAT(s1,s2...,sn)
CONCAT_WS(sep,s1,s2...,sn)
INSERT(str,x,y,instr)
FIND_IN_SET(str,list)
LCASE(str)或LOWER(str)
LEFT(str,x)
LENGTH(s)
LTRIM(str)
POSITION(substr,str)
QUOTE(str)
REPEAT(str,srchstr,rplcstr)
REVERSE(str)
RIGHT(str,x)
RTRIM(str)
STRCMP(s1,s2)
TRIM(str)
UCASE(str)或UPPER(str)
CURDATE()或CURRENT_DATE()
CURTIME()或CURRENT_TIME()
DATE_ADD(date,INTERVAL int keyword)
SELECT DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH);
DATE_FORMAT(date,fmt)
DATE_SUB(date,INTERVAL int keyword)
SELECT DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH);
DAYOFWEEK(date)
DAYOFMONTH(date)
DAYOFYEAR(date)
DAYNAME(date)
FROM_UNIXTIME(ts,fmt)
HOUR(time)
MINUTE(time)
MONTH(date)
MONTHNAME(date)
NOW()
QUARTER(date)
SELECT QUARTER(CURRENT_DATE);
WEEK(date)
YEAR(date)
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);
SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);
SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);
SELECT PERIOD_DIFF(200302,199802);
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)),'%Y')+0 AS age FROM employee;
SELECT DATE_FORMAT(NOW(), '%Y')
- DATE_FORMAT(birthday, '%Y')
-(DATE_FORMAT(NOW(), '00-%m-%d')
< DATE_FORMAT(birthday, '00-%m-%d')) AS age from employee
AES_ENCRYPT(str,key)
AES_DECRYPT(str,key)
DECODE(str,key)
ENCRYPT(str,salt)
ENCODE(str,key)
MD5()
PASSWORD(str)
SHA()
SELECT ENCRYPT('root','salt') ;
SELECT ENCODE('xufeng','key') ;
SELECT DECODE(ENCODE('xufeng','key'),'key') ;
SELECT AES_ENCRYPT('root','key') ;
SELECT AES_DECRYPT(AES_ENCRYPT('root','key'),'key') ;
SELECT MD5('123456') ;
SELECT SHA('123456') ;
CASE WHEN [test1] THEN [result1]...ELSE [default] END
CASE [test] WHEN [val1] THEN [result]...ELSE [default] END
IF(test,t,f)
IFNULL(arg1,arg2)
NULLIF(arg1,arg2)
SELECT IFNULL(1,2),
IFNULL(NULL,10),
IFNULL(4*NULL,'false');
NULLIF()
SELECT NULLIF(1,1),
NULLIF('A','B'),
NULLIF(2+3,4+1);
MySQL的IF()
SELECT IF(1<10,2,3),IF(56>100,'true','false');
CASE
CASE [expression to be evaluated]
WHEN [val 1] THEN [result 1]
WHEN [val 2] THEN [result 2]
WHEN [val 3] THEN [result 3]
......
WHEN [val n] THEN [result n]
ELSE [default result]
END
CASE函数还有另外一种句法,有时使用起来非常方便,如下:
CASE
WHEN [conditional test 1] THEN [result 1]
WHEN [conditional test 2] THEN [result 2]
ELSE [default result]
END
例如:
SELECT CASE 'green'
WHEN 'red' THEN 'stop'
WHEN 'green' THEN 'go' END;
SELECT CASE 9
WHEN 1 THEN 'a'
WHEN 2 THEN 'b' ELSE 'N/A' END;
SELECT CASE WHEN (2+2)=4 THEN 'OK'
WHEN (2+2)<>4 THEN 'not OK' END AS STATUS;
SELECT Name,IF((IsActive = 1),'已激活','未激活') AS RESULT
FROM UserLoginInfo;
SELECT fname,lname,(math+sci+lit) AS total,
CASE WHEN (math+sci+lit) < 50 THEN 'D'
WHEN (math+sci+lit) BETWEEN 50 AND 150 THEN 'C'
WHEN (math+sci+lit) BETWEEN 151 AND 250 THEN 'B'
ELSE 'A' END AS grade FROM marks ;
SELECT IF(ENCRYPT('sue','ts')=upass,'allow','deny') AS LoginResult
FROM users WHERE uname = 'sue';
DATE_FORMAT(date,fmt)
FORMAT(x,y)
INET_ATON(ip)
INET_NTOA(num)
TIME_FORMAT(time,fmt)
SELECT FORMAT(34234.34323432,3) ;
SELECT DATE_FORMAT(NOW(),'%W,%D %M %Y %r') ;
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') ;
SELECT DATE_FORMAT(19990330,'%Y-%m-%d') ;
SELECT DATE_FORMAT(NOW(),'%h:%i %p') ;
SELECT INET_ATON('10.122.89.47') ;
SELECT INET_NTOA(175790383) ;
BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED
SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0;
SELECT 'f'=BINARY 'F','f'=CAST('F' AS BINARY);
DATABASE()
BENCHMARK(count,expr)
CONNECTION_ID()
FOUND_ROWS()
USER()或SYSTEM_USER()
VERSION()
SELECT DATABASE(),VERSION(),USER();
SELECTBENCHMARK(9999999,LOG(RAND()*PI()));
ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY col2)
RANK() OVER(PARTITION BY col1 ORDER BY col2)
DENSE_RANK() OVER(PARTITION BY col1 ORDER BY col2)
PERCENT_RANK() OVER(PARTITION BY col1 ORDER BY col2)
CUME_DIST() OVER(PARTITION BY col1 ORDER BY col2)
LAG(col1,n) OVER(PARTITION BY col2 ORDER BY col3)
LEAD(col1,n) OVER(PARTITION BY col2 ORDER BY col3)
FIRST_VALUE(col1) OVER(PARTITION BY col2 ORDER BY col3)
LAST_VALUE(col1) OVER(PARTITION BY col2 ORDER BY col3)
NTH_VALUE(col1,n) OVER(PARTITION BY col2 ORDER BY col3)
NTILE(n) OVER(PARTITION BY col1 ORDER BY col2)