创建主键和外键的SQL语句如下:
创建主键
单列主键:
```sql
CREATE TABLE table_name (
column_name INT PRIMARY KEY
);
```
多列主键(联合主键):
```sql
CREATE TABLE table_name (
column1 INT,
column2 INT,
PRIMARY KEY (column1, column2)
);
```
自增长主键:
```sql
CREATE TABLE table_name (
column_name INT PRIMARY KEY AUTO_INCREMENT
);
```
创建外键
单列外键:
```sql
CREATE TABLE table_name1 (
column_name1 INT,
column_name2 VARCHAR(255),
FOREIGN KEY (column_name1) REFERENCES table_name2(primary_key_column_name)
);
```
多列外键(复合外键):
```sql
CREATE TABLE table_name1 (
column1 INT,
column2 VARCHAR(255),
column3 INT,
FOREIGN KEY (column1, column2) REFERENCES table_name2(primary_key_column1, primary_key_column2)
);
```
示例
假设我们有两个表:`students` 和 `courses`,其中 `students` 表有一个主键 `student_id`,`courses` 表有一个主键 `course_id`,并且 `courses` 表中的 `student_id` 是外键,引用 `students` 表的 `student_id`。
创建 `students` 表
```sql
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR(255) NOT NULL
);
```
创建 `courses` 表
```sql
CREATE TABLE courses (
course_id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(255) NOT NULL,
student_id INT,
FOREIGN KEY (student_id) REFERENCES students(student_id)
);
```
注意事项
外键约束:在创建外键时,必须指定被引用的表和列。
级联操作:可以设置外键的级联更新和删除规则,例如 `ON DELETE CASCADE` 或 `ON UPDATE CASCADE`。
可空性:外键列可以设置为 `NULL`,表示该记录不与任何其他记录关联。
通过以上步骤,你可以成功地在数据库表中创建主键和外键,确保数据的完整性和一致性。