使用SQL构建关系数据库比您想象的要容易。使用SQL构建数据库比大多数人想象的要容易。事实上,您甚至不需要成为经验丰富的程序员就可以使用SQL创建数据库。在本文中,我解释了如何使用MySQL5.6创建一个简单的关系数据库管理系统(RDMS)。在开始之前,顺便感谢一下SQLFiddle,它是我用来运行脚本的工具。它提供了一个有用的沙箱来测试简单的脚本。在本教程中,我将使用下面的实体关系图(ERD)中所示的简单模式构建数据库。该数据库列出了学生和他们正在修读的课程。为了简单起见,我使用了两个只有一种关系和依赖关系的实体(即表)。这两个实体称为dbo_students和dbo_courses。数据库的多样性是一对多的,因为每门课程可以包含很多学生,但每个学生只能学习一门课程。关于术语的快速说明:表称为实体。字段称为属性。记录称为元组。用于构建数据库的脚本称为模式。构建模式要构建数据库,请使用CREATETABLE命令,然后定义每个字段的名称和数据类型。数据库使用VARCHAR(n)(字符串)和INT(n)(整数),其中n是可以存储的值的长度。例如INT(2)可能是01。这是用于创建两个表的代码:CREATETABLEdbo_students(student_idINT(2)AUTO_INCREMENTNOTNULL,student_nameVARCHAR(50),course_studiedINT(2),PRIMARYKEY(student_id));创建表dbo_courses(course_idINT(2)AUTO_INCREMENTNOTNULL,course_nameVARCHAR(30),PRIMARYKEY(course_id));NOTNULL表示该字段不能为空,AUTO_INCREMENT表示当添加新的元组时,会自动生成ID号,与之前存储的ID号加1,加强实体间的完整引用.PRIMARYKEY是每个表的唯一标识符属性。这意味着每个元组都有自己独特的身份。作为约束的关系就目前而言,这两个表独立存在,没有任何联系或关系。要连接它们,必须识别外键。在dbo_students中,外键是course_studied,其来源在dbo_courses中,这意味着该字段已被引用。SQL中的特定命令是CONSTRAINT,将使用另一个名为ALTERTABLE的命令添加此关系,以便即使在构建模式后也可以编辑表。下面的代码将关系添加到数据库构建脚本中:使用CONSTRAINT命令实际上不是必需的,但它是一种很好的做法,因为这意味着约束可以是名称并且使维护更容易。现在数据库已经完成,是时候添加一些数据了。向数据库添加数据INSERTINTO<表名>是直接选择添加哪些属性(即字段)数据的命令。首先声明实体名称,然后声明属性,下面是要添加到实体的数据,从而创建一个元组。如果指定NOTNULL,则表示该属性不能留空。以下代码将显示如何向表中添加记录:INSERTINTOdbo_courses(course_id,course_name)VALUES(001,'SoftwareEngineering');INSERTINTOdbo_courses(course_id,course_name)VALUES(002,'ComputerScience');INSERTINTOdbo_courses(course_id,course_name)VALUES(003,'Computing');INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(001,'student1',001);INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(002,'student2',002);INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(003,'student3',002);INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(004,'student4',003);现在数据库模式已经完成并添加了数据,现在是时候在数据库上运行查询了。查询使用以下命令查询遵循集合结构:SELECTFROMWHERE要显示dbo_courses实体中的所有记录并显示课程代码和课程名称,请使用*。这是一个通配符,无需键入所有属性名称。(不建议在生产数据库中使用它。)这里查询的代码是:SELECT*FROMdbo_courses这里查询的输出显示了表中的所有元组,从而显示了所有可用的课程:|course_id|course_name||------------|----------------------||1|软件工程||2|计算机科学||3|用于处理更复杂查询的三种联接类型之一:内部联接、外部联接和交叉联接。这是完整的脚本:CREATETABLEdbo_students(student_idINT(2)AUTO_INCREMENTNOTNULL,student_nameVARCHAR(50),course_studiedINT(2),PRIMARYKEY(student_id));CREATETABLEdbo_courses(course_idINT(2)AUTO_INCREMENTNOTNULL,course_nameVARCHAR(30),PRIMARYKEY(course_id));ALTERTABLEdbo_studentsADDCONSTRAINTFK_course_studiedFOREIGNKEY(course_studied)REFERENCESdbo_courses(course_id);插入dbo_courses(course_id,course_name)VALUES(001,'软件工程');插入dbo_courses(course_id,course_name)VALUES(002,'ComputerScience');INSERTINTOdbo_courses(course_id,course_name)VALUES(003,'Computing');INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(001,'student1',001);INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(002,'student2',002);INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(003,'student3',002);INSERTINTOdbo_students(student_id,student_name,course_studied)VALUES(004,'student4',003);SELECT*FROMdbo_courses学习更多SQL并不难;我觉得比编程更简单,语言对不同的数据库系统是通用的注意实体关系图dbo.(LCTT译注:文章使用dbo_)不是必需的实体命名约定;我使用它只是因为它是MicrosoftSQLServer中的标准。