关于MySQL语句建表的总结
在写代码之前,需要注意的一个问题是,使用命令行模式写MySQL语句,如果涉及到中文,最好利用mysql>charsetGBK;命令将客户端字符集设置为GBK,这样能保证正确插入和读取中文(数据库端字符集可以是gb2312,GBK,utf8等支持中文的字符集).
如果是利用Mysql提供的MySQLQueryBrowser工具来写脚本,建议先在ultraedit等文本工具(最好别用记事本,因为可能有字符编码问题,推荐ultraedit)将代码写好,然后再粘贴到QueryBrowser的ScriptTab中一并执行,因为QueryBrowser对中文的支持有bug,无法正确的输入中文,因此要先在别处写好。
写了几个表,里面包括外键主键的设置,建表语句如下:USEtestdatabase;
CREATETABLEclass(
class_idINTEGERUNSIGNEDAUTO_INCREMENTPRIMARYKEY,class_nameVARCHAR(40));
CREATETABLEstudent(
student_idINTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,PRIMARYKEY(student_id),
student_namevarchar(40),
class_idINTEGERUNSIGNED,
CONSTRAINTFK_student_classFOREIGNKEY(class_id)REFERENCESclass(class_id)ONDELETECASCADEONUPDATECASCADE);
CREATETABLElession(
lession_idINTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,PRIMARYKEY(lession_id),lession_namevarchar(40));
CREATETABLEcore(
core_idINTEGERUNSIGNEDAUTO_INCREMENT,lession_idINTEGERUNSIGNEDNOTNULL,student_idINTEGERUNSIGNEDNOTNULL,coreFLOAT,
close_statusINTEGERDEFAULT0,CONSTRAINTPK_corePRIMARYKEY(core_id),CONSTRAINTFK_core_lessionFOREIGNFOREIGN
KEY(lession_id)KEY(student_id)
REFERENCESREFERENCES
lession(lession_id),
CONSTRAINTFK_core_studentstudent(student_id)
ONDELETECASCADE);
CREATETABLEteacher(
teacher_idINTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,PRIMARYKEY(teacher_id),teacher_namevarchar(40));
CREATETABLEteachlession(
teachlession_idINTEGERPRIMARYKEYAUTO_INCREMENT,lession_idINTEGERUNSIGNED,teacher_idINTEGERUNSIGNED,
CONSTRAINTFK_teachlession_lessionFOREIGNKEY(lession_id)REFERENCESlession(lession_id)
ONDELETECASCADE,
CONSTRAINTFK_teachlession_teacherFOREIGNKEY(teacher_id)REFERENCESteacher(teacher_id)
ONDELETECASCADE);
CREATETABLEsySUSEr(
sySUSEr_idINTEGERUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,sySUSEr_nameVARCHAR(40),sySUSEr_passwordVARCHAR(40),sySUSEr_roleINTEGER,foreign_idINTEGER);
/*这是指定表和列的字符集方式创建表*/usetestdatabase;
droptableifexistschartable;createtablechartable(
namevarchar(30)charactersetutf8collateutf8_general_ci)charactersetlatin1collatelatin1_danish_ci;
insertintochartablevalues("我们的世界");
一点总结:
1.建表语句的顺序必须符合各个表之间的关系,比如主表应该在与之有外键关系的表之前建立。
2.关于外键的声明,两个字段的类型必须相同。3.注意代码的编码格式和数据库字符集项符合。
扩展阅读:关于MySQL语句建表的总结
在写代码之前,需要注意的一个问题是,使用命令行模式写MySQL语句,如果涉及到中文,最好利用mysql>charsetGBK;命令将客户端字符集设置为GBK,这样能保证正确插入和读取中文(数据库端字符集可以是gb2312,GBK,utf8等支持中文的字符集).
如果是利用Mysql提供的MySQLQueryBrowser工具来写脚本,建议先在ultraedit等文本工具(最好别用记事本,因为可能有字符编码问题,推荐ultraedit)将代码写好,然后再粘贴到QueryBrowser的ScriptTab中一并执行,因为QueryBrowser对中文的支持有bug,无法正确的输入中文,因此要先在别处写好。
写了几个表,里面包括外键主键的设置,建表语句如下:USEtest;
CREATETABLEclass(
class_idINTEGERUNSIGNEDAUTO_INCREMENTPRIMARYKEY,class_nameVARCHAR(40));
CREATETABLEstudent(
student_idINTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,PRIMARYKEY(student_id),student_namevarchar(40),class_idINTEGERUNSIGNED,
CONSTRAINTFK_student_classFOREIGNKEY(class_id)REFERENCESclass(class_id)ONDELETECASCADEONUPDATECASCADE);
CREATETABLElession(
lession_idINTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,PRIMARYKEY(lession_id),lession_namevarchar(40));
CREATETABLEcore(
core_idINTEGERUNSIGNEDAUTO_INCREMENT,lession_idINTEGERUNSIGNEDNOTNULL,student_idINTEGERUNSIGNEDNOTNULL,coreFLOAT,
close_statusINTEGERDEFAULT0,CONSTRAINTPK_corePRIMARYKEY(core_id),
CONSTRAINTFK_core_lessionFOREIGNKEY(lession_id)REFERENCESlession(lession_id),
CONSTRAINTFK_core_studentFOREIGNKEY(student_id)REFERENCESstudent(student_id)
ONDELETECASCADE);
CREATETABLEteacher(
teacher_idINTEGERUNSIGNEDNOTNULLAUTO_INCREMENT,PRIMARYKEY(teacher_id),teacher_namevarchar(40));
CREATETABLEteachlession(
teachlession_idINTEGERPRIMARYKEYAUTO_INCREMENT,lession_idINTEGERUNSIGNED,teacher_idINTEGERUNSIGNED,
CONSTRAINTFK_teachlession_lessionFOREIGNKEY(lession_id)REFERENCESlession(lession_id)
ONDELETECASCADE,
CONSTRAINTFK_teachlession_teacherFOREIGNKEY(teacher_id)REFERENCESteacher(teacher_id)
ONDELETECASCADE);
CREATETABLEsySUSEr(
sySUSEr_idINTEGERUNSIGNEDNOTNULLPRIMARYKEYAUTO_INCREMENT,sySUSEr_nameVARCHAR(40),sySUSEr_passwordVARCHAR(40),sySUSEr_roleINTEGER,foreign_idINTEGER);
/*这是指定表和列的字符集方式创建表*/usetestdatabase;
droptableifexistschartable;createtablechartable(
namevarchar(30)charactersetutf8collateutf8_general_ci)charactersetlatin1collatelatin1_danish_ci;
insertintochartablevalues("我们的世界");
一点总结:
1.建表语句的顺序必须符合各个表之间的关系,比如主表应该在与之有外键关系的表之前建立。
2.关于外键的声明,两个字段的类型必须相同。3.注意代码的编码格式和数据库字符集项符合。
友情提示:本文中关于《关于MySQL语句建表的总结》给出的范例仅供您参考拓展思维使用,关于MySQL语句建表的总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。