MySQL:基本操作与常用函数
基本操作
这里的基本操作为添加、修改、删除数据表中的记录。
INSERT语句
-- 通用INSERT:
INSERT INTO 表名 (字段1, 字段2, ...)
VALUES (值1, 值2, ...), (值1, 值2, ...) ;
-- MySQL方言版INSERT:
INSERT [INTO] 表名 SET 字段1=值1, 字段2=值2, ... ;
--使用IGNORE关键字可以忽略冲突记录(使用REPLACE IGNORE INTO则会覆盖冲突记录)
INSERT [IGONRE] INTO 表名 ...;
-
插入时建议带上字段名,不然MySQL还需要额外查询表结构
-
VALUES中的值可以使用子查询的结果
UPDATE语句
UPDATE [IGNORE] 表名
SET 字段1=值1, 字段2=值2, ...
[WHERE ...]
[ORDER BY ...]
[LIMIT ...];
-
由于UPDATE语句先查询出记录再修改,ORDER BY 子句可以对查询到的数据先排序再修改,避免有些字段修改后与还未修改的记录产生冲突。
-
LIMIT 子句可以只筛选出首页的前几条数据,这里的LIMIT子句中只能有一个参数。
使用表连接修改多张表的记录:
# 内连接:
UPDATE 表1
JOIN 表2 [ON 条件]
SET 字段1=值1, 字段2=值2, ...;
# 外连接
UPDATE 表1 [LEFT/RIGHT] JOIN 表2
SET 字段1=值1, 字段2=值2, ...;
DELETE语句
DELETE [IGNORE] FROM 表名
[WHERE ...]
[ORDER BY ...]
[LIMIT ...];
使用表连接删除多张表的记录:
# 内连接
DELETE 表1, 表2 FROM 表1 JOIN 表2 ON 条件
[WHERE ...]
[ORDER BY ...]
[LIMIT ...];
# 外连接
DELETE 表1, 表2 FROM 表1 [LEFT/RIGHT] JOIN 表2 ON 条件...;
快速删除全部记录:
# 绕过事务机制删除,速度远超DELETE语句
TRUNCATE TABLE 表名;
常用内建函数
文本处理函数:
函 数 | 说 明 |
---|---|
Left() |
返回串左边的字符 |
Length() |
返回串的长度 |
Locate() |
找出串的一个子串 |
Lower() |
将串转换为小写 |
LTrim() |
去掉串左边的空格 |
Right() |
返回串右边的字符 |
RTrim() |
去掉串右边的空格 |
Soundex() |
返回串的SOUNDEX 值 |
SubString() |
返回子串的字符 |
Upper() |
将串转换为大写 |
日期处理:
函 数 | 说 明 |
---|---|
AddDate() |
增加一个日期(天、周等) |
AddTime() |
增加一个时间(时、分等) |
CurDate() |
返回当前日期 |
CurTime() |
返回当前时间 |
Date() |
返回日期时间的日期部分 |
DateDiff() |
计算两个日期之差 |
Date_Add() |
高度灵活的日期运算函数 |
Date_Format() |
返回一个格式化的日期或时间串 |
Day() |
返回一个日期的天数部分 |
DayOfWeek() |
对于一个日期,返回对应的星期几 |
Hour() |
返回一个时间的小时部分 |
Minute() |
返回一个时间的分钟部分 |
Month() |
返回一个日期的月份部分 |
Now() |
返回当前日期和时间 |
Second() |
返回一个时间的秒部分 |
Time() |
返回一个日期时间的时间部分 |
Year() |
返回一个日期的年份部分 |
数值处理:
函 数 | 说 明 |
---|---|
Abs() |
返回一个数的绝对值 |
Cos() |
返回一个角度的余弦 |
Exp() |
返回一个数的指数值 |
Mod() |
返回除操作的余数 |
Pi() |
返回圆周率 |
Rand() |
返回一个随机数 |
Sin() |
返回一个角度的正弦 |
Sqrt() |
返回一个数的平方根 |
Tan() |
返回一个角度的正切 |