--MAX语法
SELECT MAX(column_name)
FROM table_name
WHERE condition;
--eg:
SELECT
MAX(user_age)
FROM
`table1`;
--①COUNT(column_name)语法==>返回所选列的值的个数(不包括null)
(用法同MAX)
--②COUNT(*)语法==>返回表中数据的条数
SELECT COUNT(*)FROM table_name;
--③COUNT(DISTINCT column_name)语法==>返回指定列的不同值的数目
SELECT COUNT(DISTINCT column_name) FROM table_name;
语法:
SELECT FIELD(str,str1,str2,str3,...)
注释:从str1开始,如果有与str完全相同的则返回对应的索引值,否则返回0.
注释:只有MS Access支持FIRST()函数。
语法:
SELECT FIRST(column_name) FROM table_name;
MySQL语法
SELECT column_name FROM table_name
ORDER BY column_name ASC
LIMIT 1;
MySQL语法
SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;
语法:
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
eg:(年龄在20-99之间的用户吃的食物种类,并输出每个种类的数量)
SELECT
user_eat,
COUNT(user_eat)
FROM
table1
WHERE
user_age BETWEEN 20
AND 99
GROUP BY
user_eat
ORDER BY
COUNT(user_eat);
==>用于解决WHERE关键字无法与Aggregate函数一起使用。
语法:
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
实例用法:(在前例的基础上增加判断种类在两个以上)
SELECT
user_eat,
COUNT(user_eat)
FROM
table1
WHERE
user_age BETWEEN 20
AND 99
GROUP BY
user_eat
HAVING COUNT(user_eat)>=2
ORDER BY
COUNT(user_eat);
==>大小写转换函数
① UPPER()、UCASE()==>全部转换为大写字母
② LOWER()和LCASE()==>全部转换为小写字母
==>用于从文本字段中提取字符
SELECT MIN(column_name,start[,length]) FROM table_name;
注释:column_name ==>要提取字符的字段(必须参数);
start==>规定开始位置(默认为1)(必须参数);
length==>要返回的字符数
实例用法:(从表table1中选择user_name字段,并输出每个字段从1位置开始,长度为3的字符)
注意:这里的字符从1开始,不是从0开始
SELECT
MID(user_name, 1, 3) AS shortName
FROM
table1;
==>用于把数值字段舍入为指定的小数位数
语法:
SELECT ROUND(column_name,decimals) FROM table_name;
==>用于对字段的显示进行格式化
FORMAT()语法:
SELECT FORMAT(column_name,format)
FROM table_name;
注释:column_name要格式化的字段;
format 规定格式;
实例用法1:
SELECT FORMAT(20.1236,3); ==>保留三位小数
实例用法2(添加美元$符号):
SELECT
user_name,
CONCAT(
"$",
FORMAT(social_status,3)
)
FROM
`table1`;
在MySQL中使用DATE_FORMAT()函数进行时间格式化
实例用法:
SELECT
user_ID,
DATE_FORMAT(NOW(), "%Y-%m-%d %H:%i:%S") AS PerDate
FROM
table1;
==>生成0-1之间的随机数
ORDER BY RAND()==>对SELECT的序列进行随机排序
==>用于对null值的判断及处理
①SQL Server/MS access
语法:
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
②Oracle没有isnull,使用NVL()可以达到相同的效果
③MySQL===>IFNULL()、COALESCE()
==>字符串替换函数
实例用法:
把数据库表table1中的所有user_name字段里的k字符串替换成KI。
UPDATE table1
SET user_name = REPLACE (user_name, "k", "KI");
它在不同的数据库里的用法不同:
MySQL: TRIM(), RTRIM(), LTRIM()
Oracle: RTRIM(), LTRIM()
SQL Server: RTRIM(), LTRIM()
***********************************************************************************************************
SELECT
column_1,
column_2 ,...
FROM
table_1 [ INNER | LEFT | RIGHT ]
JOIN table_2 ON conditions
WHERE
conditions
GROUP BY
column_1
HAVING
group_conditions
ORDER BY
column_1
LIMIT OFFSET,
length;
SELECT==>之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
FROM==>指定要查询数据的表或视图。
JOIN==>根据某些连接条件从其他表中获取数据。
WHERE==>过滤结果集中的行。
GROUP BY==>将一组行组合成小分组,并对每个小分组应用聚合函数。
HAVING==>过滤器基于GROUP BY子句定义的小分组。
ORDER BY==>指定用于排序的列的列表。
LIMIT==>限制返回行的数量。
其中SELECT和FROM语句必须,其他部分可选。
步骤1:复制表结构
CREATE TABLE table_copy LIKE table;
步骤2:SELECT table里的数据,INSERT INTO table_copy中
UPDATE task
SET end_date = (
SELECT
cerate_date
FROM
`user`
WHERE
user_id = 3
)
WHERE
end_date = "2017-01-02";
注意:这里必须复制表之后才可以删除重复。
DELETE
FROM
task
WHERE
(
SUBJECT,
start_date,
end_date,
description
) IN (
SELECT
SUBJECT,
start_date,
end_date,
description
FROM
task_copy
GROUP BY
SUBJECT,
start_date,
end_date,
description
HAVING
COUNT(*) > 1
)
AND task_id NOT IN (
SELECT
min(task_id)
FROM
task_copy
GROUP BY
SUBJECT,
start_date,
end_date,
description
HAVING
count(*) > 1
);
①增加列
ALTER TABLE tableName
ADD COLUMN new_column_name [null|not null]
AFTER column_name;
②删除列
ALTER TABLE tableName
DROP column_name;
③重命名
ALTER TABLE tableName
RENAME TO new_name;
或者
RENAME TABLE old_table_name TO new_table_name;