高级查询(一)
修改表
修改表名
一个数据库,表名是唯一的,但可以通过SQL语句对已经创建的表名进行修改
/*修改表名*/
ALTER TABLE<旧表名> RENAME [TO] <新表名>;
其中,TO为可选参数,使用与否不影响结构。仅修改表名,表结构不变。
添加字段
随着业务需求的变化,可能需要向已存在的表中添加新的字段
/*添加字段*/
ALTER TABLE 表名 ADD 列名 varchar(52) not null;
修改字段
数据表中的一个字段包含字段名和数据类型,因此如果实现修改字段,可以包括修改字段名和修改数据存储的类型
/*修改字段*/
ALTER TABLE 表名 CHANGE 原列名 新列名数据类型 [属性];
原列名是修改前的列名,新列名是修改后的字段名,数据类型为修改后的,如果不修改则和原来的保持一致,数据类型不能为空
删除字段
删除字段是将数据表中的某个字段从表中移除
/*删除字段*/
ALTER TABLE 表名 DROP 列名
添加主外键
1.添加主键约束
/*添加主键约束*/
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
2.添加外键约束
/*添加外键约束*/
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES关联表名(关联字段)
DML语句回顾
插入数据记录
1.插入单行数据
/*增加语句*/
INSERT INTO 表名 VALUES(值,值);
INSERT INTO 表名(列名) VALUES(值);
- 表的字段名是可选的,如果省略,则依次插入所有字段
- 多个列表和多个值之间使用逗号分隔
- 值列表必须和字段名列表数量相同,且数据类型相符
- 如果插入的是表中部分数据,字段名列表必须填写
2.插入多行数据
INSERT INTO 新表(列名) VALUES(值列表),(值列表)
3.将查询结果插入到新表
句式1
INSERT INTO 新表(字段,字段)
SELECT 字段1,字段2
FROM 原表;
需要先按照所插入字段的类型,顺序,个数创建新表,才能插入数据
句式2
SELECT 字段1,字段2
INTO 新表
FROM 原表;
插入语句的执行而创建新表,无须先建表
注意:句式2在MySQL中不支持,可以使用另外替代句式实现同样的功能
CREATE TABLE 新表(SELECT 字段1,字段2,FROM 原表);
更新数据记录
对表中的数据进行更新是一类频繁发生的操作,在MySQL中更新数据的语句和SQLserver中相同
UPDATE 表名 SET 字段1=值,字段2=值,.....字段n=值n where 条件;
删除数据记录
从数据表中删除数据使用DELETE语句,同样也可以使用WHERE 子句添加删除条件
DELETE FROM 表名 WHERE 条件;
除此之外,也可以TRUNCATE语句删除表中所有行
TRUNCATE TABKE 表名;
注意:TRUNCATE语句实现删除表中所有数据,删除后将重置自增列,表结构及其字段,约束,索引保持不变,执行速度比DELETE语句块
LIMIT子句
在MySQL中,查询语法与SQLserver稍有不同
SELECT 字段名列表 FROM 表名 WHERE 查询条件 GROUP BY 分组的字段 ORDER BY 排序的列名 ASC/DESC LIMIT 位置偏移数/行数;
IN子查询
SELECT 字段名列表 FROM 表名 WHERE 列名 IN(子查询语句)