修改表
修改表名:
语法:
ALTER TABLE<旧表名> RENAME【TO】<新表名>;
其中,TO为可选参数,使用与否不影响结果。仅修改表名,表结构不变。
添加字段
语法:
ALTER TABLE 表名 ADD 字段名 数据类型【属性】;
修改字段
语法:
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型【属性】;
删除字段
语法:
ALTER TABLE 表名 DROP 字段名;
添加主外键
添加主键约束
语法:
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
添加外键约束
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名 PRIMARY KEY 表名(外键字段)REFERENCES;
DML语句回顾
插入数据记录
语法:
INSERT INTO 表名 [(字段名列表)] VALUES(值列表);
- 表的字段名是可选的,如果省略,则依次插入所有字段。
- 多个列表和多个值之间使用逗号分隔。
- 值列表必须和字段名列数量相同,且数据类型相符。
- 如果插入的是表中部分数据,字段名列表必须填写。
插入多行数据
语法:
INSERT INTO 表名 [(字段名列表)] VALUES(值列表1),(值列表2)......(值列表n);
将查询结果插入到新表
语法1:
INSERT INTO 新表 (字段1,字段2,......)
SELECT 字段1,字段2,......
FROM 原表;
语法2:
SELECT 字段1,字段2,......
INTO 新表;
FROM 原表;
CREATE TABLE 新表(SELECT 字段1,字段2,.......FROM 原表);
其中,
语法1:需要先按照所插入字段的类型,顺序,个数创建新表
语法2:随插入语句的执行而创建新表,无须先建表。(MySQL中不支持可用第二种方法)
更新数据记录
语法:
UPDATE 表名 SET 字段1 = 值1,字段2 = 值2 ,.......,字段n = 值n【WHERE 条件】;
删除数据记录
语法:
DELETE FROM 表名 【WHERE 条件】;
TRUNCATE TABLE 表名;(删除表中所有记录)
数据查询
DQL语句回顾
语法:
SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[HAVING <条件>]
[ORDER BY<排序的字段名>[ASC或DESC]]
LIMIT子句
语法:
SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY<排序的字段名>[ASC或DESC]]
[LIMIT [位置偏移量,] 行数]
其中
- 位置偏移量指从结果集中第几条数据开始显示(第一条记录位置为0),此参数可选,当省略是从一条记录开始显示。
- 行数指显示的记录条数。
常用函数
聚合函数(常用于GROUP BY从句的SELECT查询中)
AVG(col)返回指定列的平均值
COUNT(col)返回指定列中非NULL值的个数
MIN(col)返回指定列的最小值
MAX(col)返回指定列的最大值
SUM(col)返回指定列的所有值之和
GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成的结果
字符串函数
时间日期函数
MySQL数学函数
函数 作用
abs(x) 求绝对值
PI() 返回圆周率
sqrt(x) x的平方根
mod(x,y) x除以y的余数
ceil()、ceiling() 返回大于或者等于x的最小整数
floor(x) 返回小于或者等于x的最小整数
rand() rand(x) 返回0~1的随机数,x相同时返回值相同
round(x) round(x,y) 返回整数,四舍五入。返回x保留到小数点后y位的值
truncate(x,y) 截断返回x保留到小数点后y位的值(不四舍五入)
sign(x) 返回x的符号,负数、0、正数分别返回-1、0、1
pow(x,y) power(x,y) 返回x的y次方
exp(x) 返回e的x次方
log(x) 返回x的自然对数
log10(x) 返回以10为底的对数
radians(x) 将角度转换为弧度
degrees()x0 将弧度转换为角度
sin(x) 正弦函数,返回正弦值,x是弧度
asin(x) 反正弦函数,返回反正弦值,x是弧度
cos(x)
余弦函数,返回余弦值,x是弧度
acos(x) 反余弦函数,返回反余弦值,x是弧度
tan(x) 正切函数,返回正切值,x是弧度
atan(x) atan2(x) 反正切函数,返回反正切值,x是弧度
cot(x) 余切函数,返回余切值,tan(x)的倒数
子查询
简单子查询
语法:
SELECT ....... FROM 表1 WHERE 字段1 比较运算符(子查询);
在SELECT语句中为表命名别名(alias)的方法
使用AS关键字,符合 ANSI标准。
SELECT 字段列表 FROM 表名 AS 表的别名;
使用空格,简便的方法
SELECT 字段列表 FROM 表名 表的别名;
表连接——合并多个数据表中的字段
子查询——将一个查询嵌套在另一个查询中。
IN 和NOT IN 子查询
使用IN关键字可以使用父查询匹配子查询返回的多个单子段值。
IN子查询后面可跟随返回多条记录的子查询,用于检测某字段的值是否存在于某个范围中。