首页 > 数据库 >数据库实验课学习笔记2

数据库实验课学习笔记2

时间:2024-03-20 10:59:34浏览次数:36  
标签:int 数据库 笔记 约束 字段 key table nvarchar 实验课

约束类型

    1.主键约束

      语法:  字段  数据类型  primary key
    

    2.外键约束

      语法:  foreign key  (字段)  references 引用的表(引用的字段)


    3.检查约束

       语法:  字段  数据类型 check (约束内容)


    4.默认约束

      语法:  字段  数据类型 default ('默认值')


    5.非空约束

     语法:  字段  数据类型 not null


    6.唯一约束

     语法:  字段  数据类型  unique

创建表的时候同步创建约束

create database text2

use text2
create table  student_detail(
id varchar(20)primary key,
)

create table student(
id varchar(30) primary key,-- 主键约束
student_detail_id varchar(20) ,
foreign  key (student_detail_id) references student_detail(id), -- 外键约束
age int check ( age >= 1 and age <= 100),
sex varchar(10) check( sex = '男' or sex = '女'), -- 检查约束
address varchar(20) default ('上海'), -- 默认约束
username varchar(30)not null,--非空约束
id_card varchar(30) unique, -- 唯一约束
)


唯一约束与主键约束区别

主键约束:(一个) 唯一且非空,
唯一约束:(可以有多个)唯一,允许有一个空值

注意:创建表以后再去创建约束

创建表后添加约束

-- 添加检查约束

语法:alter table 表名称 add constraint 约束名称 具体的约束内容

eg: alter table Orders add constraint ck_CustomerID check(CustomerID > 10)

-- 添加默认约束

语法:alter table 表名称 add constraint 约束名称 default '默认的内容' for 字段名称
eg: alter table Orders add constraint df_OrderDate default '2024-12-12' for OrderDate

删除约束

语法:alter table 表名称 drop constraint 约束名称

eg: alter table Orders drop constraint ck_CustomerID

作业练习

题目1

在SQL Server中,假设有一个名为Students的表,包含以下字段:

StudentID (int): 学生的唯一标识符
FirstName (nvarchar(50)): 学生的名字
LastName (nvarchar(50)): 学生的姓氏
Age (int): 学生的年龄
Email (nvarchar(100)): 学生的电子邮件地址
DepartmentID (int): 学生所在部门的ID
请根据以下要求,为Students表创建适当的约束:

确保StudentID字段是主键。
确保FirstName和LastName字段都不允许为空,并且长度不超过50个字符。
确保Age字段的值在18到30之间(包含18和30)。
确保Email字段的值是唯一的,并且符合电子邮件地址的格式(例如:user@example.com)。
为DepartmentID字段创建一个外键约束,它引用另一个名为Departments的表的DepartmentID字段。

 

create database test2

use test2
create table Departments(
DepartmentID int primary key
)

create table Students(

	StudentID int primary key,
	FirstName nvarchar(50) not null,
	LastName nvarchar(50) not null,
	Age int check( Age between 18 and 30),
	Email nvarchar(100) unique, check( Email like '%@%.%'),
	DepartmentID int foreign key references Departments(DepartmentID)
)

题目2:

在SQL Server中,假设有一个名为Orders的表,用于记录订单信息。该表包含以下字段:

OrderID (int): 订单的唯一标识符
CustomerID (int): 客户的唯一标识符
OrderDate (date): 订单日期
TotalAmount (decimal(10, 2)): 订单总金额
Status (nvarchar(50)): 订单状态(例如:'Pending', 'Shipped', 'Delivered')
请根据以下要求,为Orders表创建适当的约束:

确保OrderID字段是主键,并且自动递增。
确保CustomerID字段引用另一个名为Customers的表的CustomerID字段,作为外键约束。
确保OrderDate字段的值是有效的日期,并且不允许为空。
确保TotalAmount字段的值大于0,且最多保留两位小数。
为Status字段创建一个检查约束,确保订单状态只能是'Pending', 'Shipped', 或 'Delivered'其中之一。

 

create table Orders(

	OrderID int primary key identity(101,3),
	CustomerID int,
	OrderDate date not null,
	TotalAmount decimal(10, 2) check(TotalAmount>0),
	Status nvarchar(50) check(Status IN ('Pending','Shipped','Delivered'))

)

补充decimal和identity用法

-- decimal(最大保存多少位,保留几位小数) 小数类型

-- identity(从几开始增加,每次增加几)

 

标签:int,数据库,笔记,约束,字段,key,table,nvarchar,实验课
From: https://blog.csdn.net/wangwanqin12/article/details/136853040

相关文章

  • 数据库实验课学习笔记1
    数据库与数据表--数据库(文件夹)--数据表(文件)--sqlservermangerment--软件(辅助连接数据库)--navicat等用代码创建数据库   语法:createdatabase 数据库名称createdatabasetext1点击“新建查询”,选中要执行的代码,先点“分析"看你的代码是否有语法错误,......
  • 在Linux中,MySQL数据库日常运维中涉及哪些关键任务?
    在Linux环境下,MySQL数据库的日常运维涉及到一系列关键任务,旨在保证数据库的稳定性、性能和数据完整性。以下是一些核心运维任务:性能监控与调优使用MySQL自身的SHOWSTATUS、SHOWVARIABLES、EXPLAIN等命令,或结合第三方工具(如PerconaToolkit、MySQLEnterpriseMonitor、Prom......
  • 数据库系统概论
    一、引言在信息技术飞速发展的今天,数据已经成为企业和个人决策、研究、生活的重要基础。数据库系统作为数据的存储、管理和检索的核心工具,其重要性不言而喻。本文旨在全面介绍数据库系统的基本概念、发展历程、核心组成、应用领域以及未来趋势。二、数据库系统的基本概念数......
  • C语言程序设计(第二版)学习笔记——第三章
    第三章基本数据类型及数据的输入输出3.1C语言的基本数据类型简介要在C环境下实现运算必须首先定义变量,并确定变量的数据类型,然后才能对数据进行操作。C语言的数据类型分为四大类:基本类型、构造类型、指针类型和空类型(无值类型)。3.2标识符、常量和变量3.2.1标识符1、......
  • Programming Abstractions in C阅读笔记:p327-p330
    《ProgrammingAbstractionsinC》学习第78天,p327-p330,总计4页。一、技术总结1.ADT(抽象数据类型)p328,Atypedefinedintermofitsbehaviorratherthanitsrepresnetationiscalledanabstractdatatype(如果一种数据类型使用它们的行为而不是表示来定义,那么这样的......
  • Java学习笔记:异常处理
    目录Java学习笔记:异常处理什么是异常异常体系结构:Error、Exception自定义异常Java学习笔记:异常处理​ **2024/3/19**什么是异常异常体系结构:Error、Exception自定义异常......
  • es6学习笔记
    11.15星期三学习地址:ECMAScript6入门http://es6.ruanyifeng.com/阮一峰下载nodejs,NodeJS环境搭建及sublimeText3配置NodeJs环境,添加前端插件。一、es6简介:二者关系:ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现(另外的ECMAScript方言还......
  • 超市售货|超市售货管理小程序|基于微信小程序的超市售货管理系统设计与实现(源码+数据
    毕业设计(论文)题目:超市售货管理平台的设计与实现*摘要*如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统超市售货管理平台信息管理难度大,容错率低,管理人员......
  • springboot整合springsecurity,从数据库中认证
    概述:springsecurity这个东西太容易忘了,这里写点东西,避免忘掉目录第一步:引入依赖第二步:创建user表第三步:创建一个用户实体类(User)和一个用于访问用户数据的Repository接口第四步:创建一个实现UserDetailsService接口的自定义用户详情服务类,用于从数据库中加载用户信息。第五......
  • 小土堆深度学习笔记
    pytorch安装,请查看上篇博客。读取图片操作fromPILimportImageimg_path="D:\\pythonProject\\learn_pytorch\\dataset\\train\\ants\\0013035.jpg"img=Image.open(img_path)img.show()dir_path="dataset/train/ants"importosimg_path_list......