【day2】mysql主键、外键、自增

本文通过具体实例介绍了数据库中主键、外键及自增字段的设计与应用,包括班级、学生、教师、课程和成绩等表的关系建立,并演示了如何进行数据插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主键:primary key一张表有且只有一个主键,键值可以唯一。可以设置主键为自增。

外键:表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。

自增:create table t1(id int primary key auto_increment,name char(10));

 

create table class(cid int primary key auto_increment,caption char(20) not null);  #创建class表
  
insert into class(caption) values('三年二班'),('一年三班'),('三年一班');          #插入班级数据
  
create table student(sid int primary key auto_increment,sname char(20) not null,gender enum('',''),class_id int not null,constraint foreign key(class_id) references class(cid) on delete cascade on update cascade)        #创建学生表,班级id关联到class表的cid

insert into student(sname,gender,class_id) values('钢蛋','',1),('钢锤','',1),('山炮','',2) #插入数据

create table teacher(tid int primary key auto_increment,tname char(20) not null);      

insert into teacher(tname) values('波多'),('苍井'),('饭岛爱');

create table course(cid int primary key auto_increment,cname char(20) not null,teach_id int not null,constraint foreign key(teach_id) references teacher(tid) on delete cascade on update cascade);

insert into course(cname,teach_id) values('生物',1),('体育',1),('物理',2);

create table score(sid int primary key auto_increment,student_id int not null,course_id int not null,number int(3) not null,constraint foreign key(student_id) references student(sid) on delete cascade on update cascade,constraint foreign key(course_id) references course(cid) on delete cascade on update cascade);

insert into course values(1,1,1,60),(2,1,2,59),(3,2,2,100);

 

转载于:https://www.cnblogs.com/weiyumangmang/p/7486785.html

-- 创建旅游管理数据库 CREATE DATABASE TravelManagement; GO USE TravelManagement; GO -- 客户表: 存储客户信息 CREATE TABLE Customer ( CustomerID INT IDENTITY(1,1) PRIMARY KEY, -- 主键,自 Name NVARCHAR(50) NOT NULL, Email NVARCHAR(100) NOT NULL UNIQUE, -- 唯一约束防止重复 Phone NVARCHAR(20), Address NVARCHAR(200) ); -- 行程表: 存储旅游行程信息 CREATE TABLE Tour ( TourID INT IDENTITY(1,1) PRIMARY KEY, -- 主键,自 Name NVARCHAR(100) NOT NULL, Description NVARCHAR(500), Price DECIMAL(10, 2) NOT NULL CHECK(Price > 0), -- 约束确保价格正数 StartDate DATE, EndDate DATE, Duration AS DATEDIFF(DAY, StartDate, EndDate) + 1 -- 计算字段,持续时间(天) ); -- 预订表: 存储客户对行程的预订 CREATE TABLE Booking ( BookingID INT IDENTITY(1,1) PRIMARY KEY, -- 主键,自 CustomerID INT NOT NULL FOREIGN KEY REFERENCES Customer(CustomerID), -- 引用Customer TourID INT NOT NULL FOREIGN KEY REFERENCES Tour(TourID), -- 引用Tour BookingDate DATE DEFAULT GETDATE(), -- 默认值为当前日期 Status NVARCHAR(20) DEFAULT 'pending' CHECK(Status IN ('pending', 'confirmed', 'cancelled')) -- 状态约束 ); -- 支付表: 存储预订相关的支付信息 CREATE TABLE Payment ( PaymentID INT IDENTITY(1,1) PRIMARY KEY, -- 主键,自 BookingID INT NOT NULL FOREIGN KEY REFERENCES Booking(BookingID), -- 引用Booking Amount DECIMAL(10, 2) NOT NULL, PaymentDate DATE, Status NVARCHAR(20) DEFAULT 'unpaid' CHECK(Status IN ('paid', 'unpaid')) );建立一个完整E-R图
最新发布
06-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值