在寫代碼之前,需要注意的一個(gè)問題是,使用命令行模式寫MySQL語句,如果涉及到中文,最好利用 mysql>charset GBK;命令將客戶端字符集設(shè)置為GBK,這樣能保證正確插入和讀取中文(數(shù)據(jù)庫端字符集可以是gb2312,GBK,utf8等支持中文的字符集).
如果是利用Mysql 提供的 MySQL Query Browser 工具來寫腳本,建議先在ultra edit等文本工具(最好別用記事本,因?yàn)榭赡苡凶址幋a問題,推薦ultra edit)將代碼寫好,然后再粘貼到QueryBrowser 的Script Tab 中一并執(zhí)行,因?yàn)镼ueryBrowser對(duì)中文的支持有bug,無法正確的輸入中文,因此要先在別處寫好。
-
寫了幾個(gè)表,里面包括外鍵主鍵的設(shè)置,建表語句如下:
USE testdatabase;
CREATE TABLE class (
class_id INTEGER UNSIGNED AUTO_INCREMENT PRIMARY KEY,
class_name VARCHAR(40)
);
CREATE TABLE student (
student_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(student_id),
student_name varchar(40),
class_id INTEGER UNSIGNED,
CONSTRAINT FK_student_class FOREIGN KEY(class_id) REFERENCES class(class_id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE lession(
lession_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (lession_id),
lession_name varchar(40)
);
CREATE TABLE core(
core_id INTEGER UNSIGNED AUTO_INCREMENT,
lession_id INTEGER UNSIGNED NOT NULL,
student_id INTEGER UNSIGNED NOT NULL,
core FLOAT,
close_status INTEGER DEFAULT 0,
CONSTRAINT PK_core PRIMARY KEY(
core_id
),
CONSTRAINT FK_core_lession FOREIGN KEY(lession_id) REFERENCES lession(lession_id),
CONSTRAINT FK_core_student FOREIGN KEY(student_id) REFERENCES student(student_id)
ON DELETE CASCADE
);
CREATE TABLE teacher(
teacher_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(teacher_id),
teacher_name varchar(40)
);
CREATE TABLE teachlession(
teachlession_id INTEGER PRIMARY KEY AUTO_INCREMENT,
lession_id INTEGER UNSIGNED,
teacher_id INTEGER UNSIGNED,
CONSTRAINT FK_teachlession_lession FOREIGN KEY(lession_id) REFERENCES lession(lession_id)
ON DELETE CASCADE,
CONSTRAINT FK_teachlession_teacher FOREIGN KEY(teacher_id) REFERENCES teacher(teacher_id)
ON DELETE CASCADE
);
CREATE TABLE sySUSEr(
sySUSEr_id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
sySUSEr_name VARCHAR(40),
sySUSEr_password VARCHAR(40),
sySUSEr_role INTEGER,
foreign_id INTEGER
);
/*這是指定表和列的字符集方式創(chuàng)建表*/
use testdatabase;
drop table if exists chartable;
create table chartable(
name varchar(30) character set utf8 collate utf8_general_ci
)character set latin1 collate latin1_danish_ci;
insert into chartable values('我們的世界');
一點(diǎn)總結(jié):
1. 建表語句的順序必須符合各個(gè)表之間的關(guān)系,比如主表應(yīng)該在與之有外鍵關(guān)系的表之前建立。
2.關(guān)于外鍵的聲明,兩個(gè)字段的類型必須相同。
3.注意代碼的編碼格式和數(shù)據(jù)庫字符集項(xiàng)符合。 本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|