主键外键编程怎么写出来

时间:2025-01-25 08:20:44 游戏攻略

在数据库中,主键和外键是用于建立表之间关联关系的重要机制。以下是主键和外键编程的基本写法:

主键的创建

主键用于唯一标识表中的每一行记录。创建主键的语法如下:

```sql

CREATE TABLE table_name (

column1 datatype PRIMARY KEY,

column2 datatype,

...

);

```

例如,创建一个名为 `student` 的表,其中 `studentno` 是主键:

```sql

CREATE TABLE student (

studentno INT(4) NOT NULL COMMENT '学号',

studentname VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',

sex TINYINT(1) DEFAULT '1' COMMENT '性别',

gradeid INT(10) DEFAULT NULL COMMENT '年级',

phoneNum VARCHAR(50) NOT NULL COMMENT '手机',

address VARCHAR(255) DEFAULT NULL COMMENT '地址',

borndate DATETIME DEFAULT NULL COMMENT '生日',

email VARCHAR(50) DEFAULT NULL COMMENT '邮箱',

PRIMARY KEY (studentno)

);

```

外键的创建

外键用于建立表之间的关联关系,它引用另一个表的主键。创建外键的语法如下:

```sql

CREATE TABLE table_name1 (

column1 datatype PRIMARY KEY,

column2 datatype,

...

);

CREATE TABLE table_name2 (

column1 datatype,

column2 datatype,

...

FOREIGN KEY (column1) REFERENCES table_name1(column1)

);

```

例如,创建两个表 `grade` 和 `student`,并在 `student` 表中添加一个外键 `gradeid`,引用 `grade` 表的 `gradeid`:

```sql

CREATE TABLE grade (

gradeid INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级ID',

gradename VARCHAR(50) NOT NULL COMMENT '年级名称',

PRIMARY KEY (gradeid)

) ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE student (

studentno INT(4) NOT NULL COMMENT '学号',

studentname VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',

sex TINYINT(1) DEFAULT '1' COMMENT '性别',

gradeid INT(10) DEFAULT NULL COMMENT '年级',

phoneNum VARCHAR(50) NOT NULL COMMENT '手机',

address VARCHAR(255) DEFAULT NULL COMMENT '地址',

borndate DATETIME DEFAULT NULL COMMENT '生日',

email VARCHAR(50) DEFAULT NULL COMMENT '邮箱',

FOREIGN KEY (gradeid) REFERENCES grade(gradeid)

);

```

复合主键和外键

复合主键由多个列组成,用于唯一标识表中的每一行记录。复合外键则是引用另一个表的复合主键。

例如,创建一个名为 `emp9` 的表,其中 `id` 和 `name1` 组成复合主键,并添加一个外键 `id`,引用 `emp` 表的 `id`:

```sql

CREATE TABLE emp (

id number constraint id_pr primary key,

name1 varchar(8)

);

CREATE TABLE emp9 (

id number,

name1 varchar(8),

constraint aba_pr primary key(id, name1),

constraint fk_nam1e foreign key(id) references emp(id)

);

```

修改和删除主键和外键

如果需要修改或删除主键或外键,可以使用以下语法:

删除外键约束

```sql

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

```

例如,删除 `student` 表中 `gradeid` 列的外键约束:

```sql

ALTER TABLE student DROP CONSTRAINT fk_gradeid;

```

添加外键约束

```sql

ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column1) REFERENCES table_name2(column2);

```

例如,向 `student` 表的 `gradeid` 列添加外键约束,引用 `grade` 表的 `gradeid`:

```sql

ALTER TABLE student ADD CONSTRAINT fk_gradeid FOREIGN KEY (gradeid) REFERENCES grade(gradeid);

```

通过以上步骤,你可以成功地在数据库中创建和管理主键和外键,从而确保数据的完整性和一致性。