目录
1.修饰数据表结构
在项目开发过程中,应尽量在设计阶段将项目中可能存在的问题考虑全面,将数据表设计完整。但是总会出现因业务变动等因素需要对已经创建好的数据表做好修改表结构的操作,如添加、删除字段等。如果采用将删除后重建的方式实现,很容易造成已有数据的丢失,影响业务,风险比较大。此时,需要在原有表结构的基础上对表进行修改。MySQL可以通过ALTER关键字实现此功能。
在修改表操作之前,应先使用SHOW TABLES语句确认该表是否存在在于数据库中。
1.修改数据表的表名
使用SQL语句对已创建的修改表名。语法格式如下。
ALTER TABLE 旧表名 RENAME [TO] 新表名;
其中,TO为选,使用与否不影响结果。此语句仅修改表名,并不改变表的结构。
通常,在软件系统中会使用一个日志表记录用户在系统中的重要操作,作为数据统计分析的依据。
2.修改数据表的字段
数据表中的字段包含字段名和数据类型,可以使用SQL修改字段名和修改数据存储类型及属性。语法格式如下。
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
其中,原字段名指修改前的字段名;新字段名指修改后的字段名;数据类型指修改后的数据类型,若不需要修改数据类型,则与原数据类型保持一致,但数据类型不能为空;属性可为空,若修改时未添加属性,则修改后的字段无任何属性约束。
为了让日志表的可读性更强,在hospital数据库中,将action_log表中的time字段名改为actionTime,字段类型原为DATE,发现存在时间精度无法满足需求的情况,因此,将数据类型修改为datetime.
3.给数据表添加字段
随着业务需求的变化,可能需要向已存在的表中添加新的字段。添加字段的语法格式如下。
ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
4.删除数据表的字段
在开发过程中,由于业务的改变,也有将数据表中的某个字段从表中移除的需求。删除字段的语法格式如下。
ALTER TABLE 表名 DROP 字段名;
5.添加主外键约束
通过ALTER TABLE语句可以给表添加约束,本章以主外键约束为例讲解如何添加约束。
1.添加主键约束
给表添加主键的语法格式如下。
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
2.添加外键约束
给表添加外键的语法格式如下。
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 关联表名(关联字段);
以上列举了部分常用的修改表结构的ALTER TABLE语句,实际应用中也许还会用到其他修改表结构的语句,这时可以通过查看系统帮助找到它们。通过执行语句"HELP ALTER TABLE;" 可查看所有修改表结构的SQL语句。用户可以通过查看语法定义和参数设置内容,通过编写相应的SQL语句修改表的不同部分。
2.DML语句
1.插入数据语句
完成数据库建及数据表的创建后,就需要向数据表中添加数据。使用INSERT语句向数据表中插入数据的语法如下。
1.插入单行数据
插入单行数据的语法格式如下。
INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
其中:
- 字段名列表是可选项,若省略,则依次插入所有字段。
- 若插入表的是部分数据,字段名列表不能省略。
- 值列表必须和字段名列表的数量相同,且数据类型一致。
- 多个字段名和多个值之间使用逗号分隔。
2.插入多行数据
MySQL支持在一条SQL语句中依次向数据表中插入多条记录。插入多个值列表时,每个值列表之间用逗号分隔。语法格式如下。
INSERT INTO 表名 [(字段名列表)] VALUES (值列表1),(值列表2),···,(值列表n);
3.将查询结果插入新表
在SQL Server课程中,我们学习了以下两种将已有数据表中的数据插入新表中的方法。在MySQL中也可实现相同的效果,但是实现的语法与SQL Server不同。我们首先回顾在SQL Server中的实现方法。
INSERT INTO 新表(字段1,字段2,···) SELECT 字段1,字段2,··· FROM原表;
2.更新数据语句
更新表中的数据也是软件开发经常使用的技能,通常使用UPDATE语句更新数据表中的数据。语法格式如下。
UPDATE 表名 SET 字段1=值1,字段2=值2,···,字段n=值n [WHERE 条件];
3.删除数据语句
从数据表中删除数据可以使用DELETE语句或TRUNCATE语。
使用DELETE语句时可以通过添加WHERE子句指定删除条件。DELETE语句不添加WHERE子句时会删除表中的所数据。语法格式如下。
DELETE FROM 表名 [WHERE 条件];
3.数据查询
数据查询是数据库操作系统中使用的核心技能,是SQL语言的核心技能。因为Navicat工具中的数据查询结果效果更加清晰。
1.DQL语句
下面回顾数据查询语句(SELECT语句)。语法格式如下。
SELECT *或 <字段名列表> FROM<表名或视图> [WHERE<查询条件>] [GROUP BY<分组的字段名>]
[HAVING<条件>] [ORDER BY <排序的字段名>[ASC 或 DESC]];
其中:
- *或<字段名列表>表示要查询的字段。若查询表中的所有字段,则使用"*";查询指定字段使用字段名列表,其中字段列表至少包含一个字段名称,若查询多个字段,则字段之间使用逗号分隔,最后一个字段后不加逗号。
- FROM后的表名为要查询的数据的来源,可以单个或多个。
- WHERE子名为可选项,如果选择该选项,将限定查询的条件,查询结果必须满足此查询条件。
- GROUP BY子句表明查询出来的数据按指定字段进行分组。
- HAVING子句用于筛选组。
- ORDER BY子句指定按什么顺序显示查询出来的数据,需要指定排序字段。在默认条件下,MySQL按照升序排列,也可通过代码指定升序(ASC)或降序(DESC)。