SQL学习之使用命令方式创建、删除与修改关系表

首先,先介绍用命令方式创建、删除和修改关系表,

(1)、创建表

基本格式:create table 表名

(

列名 数据类型 列级完整性约束,列名 数据类型 列级完整性约束(如果有多个列,注意要用       英文式的逗号隔开)

      ,表级完整性约束(表级完整性约束和列级完整性约束之间也要用逗号分隔开)

)

列级完整性约束有:
not null 限制列取值为空
default 指定列的默认值
unique 定义列取值不能重复
check 定义列的取值范围(check是定义的多列之间的取值约束,只能在表级完整性约束)处定义
primary key 定义主码约束
foreign key 定义外码约束
表级完整性约束:
unique 定义列取值不能重复
check 定义列的取值范围(check是定义的多列之间的取值约束,只能在表级完整性约束)处定义
primary key 定义主码约束
foreign key 定义外码约束

知道呢有哪些约束,那么,怎么定义完整性约束呢?他们的格式是什么呢?

主码约束:primary key (列名,列名,列名......)

外码约束:foreign key (列名) references 外表名 (外表列名)

unique约束:列名 数据类型 unique (列名,列名......)

default约束:列名 default 默认值

check约束:check 逻辑表达式(逻辑表达式中不能包含来自多个表的列)

(2)、修改表:

基本格式: alter table 表名

alter column 列名 新的数据类型     (修改列的定义)

add 列名 数据类型 约束         (增加新的列)

drop column 列名              (删除列)

add 约束定义                 (添加约束)

drop 约束名                  (删除约束)

注意:不同的DBMS的alter table语句格式都不同,在这里以SQL2014为例

(3)、删除表:

基本格式: drop table 表名

注意:如果被删除的表中有其他表对他的外码引用约束,则必须先删除外码所在的表,然后再删除被引     用码所在的表

实例说明:(1)创建3张表,学生表(student)、课程表(course)和学生选课表(sc)

学生表(student)

列名 含义 数据类型 约束
Sno 学号 char(11) 主码
Sname 姓名 nchar(4) 非空
Snumber 身份证号 char(18) 取值不重
Ssex 性别 nchar(1) 默认值为‘男‘
Sage 年龄 tinyint 取值范围为15—45
Sdept 所在系 nvarchar(20)

创建student表代码:

use student

create table student

(

Sno char(11) primary key,

Sname nchar(4) not null,

Snumber char(18) unique,

Ssex nchar(1) default ‘男‘,

Sage tinyint check(sage >= 15  and sage <= 45),

Sdept nvarchar(20)

)

课程表(course)

列名 含义 数据类型 约束
Cno 课程号 char(6) 主码
Cname 课程名 nvarchar(20) 非空
Credit 学分 numeric(3,1) 大于0
Semester 学期 tinyint


创建course表代码:

use student

create table course

(

Cno char(6) primary key,

Cname nvarchar(20) not null,

Credit numeric(3,1) check(Credit > 0),

Semeter tinyint

)


选课表(sc)

列名 含义 数据类型 约束
Sno 学号 char(11) 主码,引用student的外码
Cno 课程号 char(6) 主码,引用course的外码
Grade 成绩 tinyint

创建sc表代码:

use student

create table sc

(

Sno char(11) not null,

Cno char(6) not null,

Grade tinyint,

primary key (sno,cno),

foreign key (sno) references student(sno),

foreign key (cno) references course(cno)

)

(2)为sc表添加‘修课类别’(type)列,允许为空,代码如下:

alter table sc

add type nchar(1) null

(3)为sc表添加‘修课类别’(type)列修改他的数据类型为nchar(2),代码如下:

alter table sc

alter column type nchar(2)

(4)为sc表添加‘修课类别’(type)列添加取值范围为{必修,重修,选修}的约束,代码如下:

alter table sc

add check(type in (‘必修‘,‘重修‘,‘选修‘))

(5)删除type列,代码如下:

alter table sc

drop column type

时间: 2024-10-26 09:33:44

SQL学习之使用命令方式创建、删除与修改关系表的相关文章

SQL学习之用命令方式创建、修改、删除视图

1.创建视图 (1)一般格式: create view 视图名 [with encryption] as select语句 [with check option] (2)定义单源表视图: 建立信息管理系学生的学号.姓名.性别和年龄的视图 create view is_student(studentid,studentname,sex,birth) as select studentid,studentname,sex,getdate()-birth from student where sdep

SQL学习_查询重复数据和连接多个表数据的方法

进行数据库测试时需要根据不同场景查询数据,以便验证发现的问题是否为脏数据引起的.记录一下最近常用的查询方法: 1. 查询表中重复数据(id不同,多个字段值相同) select P1.* from project as P1, project as P2 where P1.id<>P2.id and P1.ProjectId=P2.ProjectId and P1.ServiceTypeId=P2.ServiceTypeId and P1.Rank=P2.Rank 2.连接多个表数据 selec

SQL学习笔记——临时表不同创建方式的区别

问题:在存储过程中使用临时表时,不Create临时表就会报错. 分析了下,总结了临时表创建方式的区别. 创建临时表有两种方法: 方法一 create  table  #临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) create  table  ##临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) 方法二 select  *  into  #临时表名  from 你的表;   select  *  into  ##临时表名  

SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数

-- SQL SERVER 判断是否存在某个触发器.储存过程 -- 判断储存过程,如果存在则删除IF (EXISTS(SELECT * FROM sysobjects WHERE name='procedurename' AND type='P')) DROP PROCEDURE procedurename -- 判断触发器,如果存在则删除IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[triggername]')

Sql Server 数据库教程三 、添加、删除、修改、表列

修改数据库的表设计,可以使用 SQL ALTER TABLE 语句,ALTER TABLE 用于在已有的表中,添加.删除.或修改表列. 1>在数据库表中添加新列: 语法: ALTER TABLE 表名称 ADD 列名称 数据类型 例如:在下面这个Persons表中添加一个新列Birthday,数据类型为varchar(50) 在新建查询中输入如下语法: ALTER TABLE Persons ADD Birthday varchar(50) 插入后的结果如下: 2>在数据库表中删除表中的列:

已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

错误提示:已安装  SQL Server 2005 Express 工具.若要继续,请删除 SQL Server 2005 Express 工具.  解决方案: 修改注册表:HKLM\Software\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM,把ShellSEM重命名即可. 64位路径:HKLM\Software\Wow6432Node\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM

[linux][mysql] 命令更改表结构:添加、删除、修改字段、调整字段顺序

原文出处:http://www.phpernote.com/MySQL/1120.html 1 常用的通过mysql命令来更改表结构的一些sql语句,包括添加.删除.修改字段.调整字段顺序. 2 3 添加字段: 4 5 alter table `user_movement_log` Add column GatewayId int not null default 0 AFTER `Regionid`; (在哪个字段后面添加) 6 7 删除字段: 8 9 alter table `user_mo

MySQL学习(二)——SQL语句创建删除修改以及中文乱码问题

一.对数据库的操作 1.创建一个库 create database 库名; 创建带有编码的:create database 库名 character set 编码; 查看编码:show create database 库名; 2.删除一个库 drop database 库名; 3.使用库 use 库名; 4.查看当前正在操作的库 select database(); 二.对数据库表的操作 1.创建一张表 create table 表名( 字段名 类型(长度) [约束], 字段名 类型(长度) [

SQL学习之创建学生管理数据库

1.首先,学习创建数据库之前,如下图所示,我们先介绍一下数据库的类型: 从数据库的应用管理角度来看,SQL server数据库分为系统数据库和用户数据库 其次,那什么是系统数据库和用户数据库呢?它们分别有什么作用呢? 系统数据库:(1)定义:它是SQL server数据库管理系统自带和自动维护的,用于存放维护系统正常运行               的信息 (2)组成:master, 它是做重要的数据库,用于记录数据库管理系统中的所有系统级信息:                    若其损坏,