SQL SERVER ——表的基本操作

一,常用关键词

primary key

主键

references 表名(列名)

引用外键

check(列名='约束样例')

约束条件

default('默认值')

默认值

not null

非空

unique

唯一

default(getdate())

获取当前时间

identity(1,2)

自动增长,初始值1,增长步长2

creatr

创建

add

添加

drop

删除

table

column

CONSTRAINT

约束

二,创建表

创建表的前提是存在一个数据库,存储要创建的表,若还没有数据库,则需要先创建数据库

复制代码
create database (数据库名)--创建数据库

有了一个数据库后在该数据库创建表

复制代码
--切换数据库
use Schooldb

--创建表
create table Student 
(
	--创建列
	Stu_id	int		primary key	NOT NULL,
	Stu_name varchar(20) NOT NULL,
	Stu_sex varchar(2) NOT NULL check(Stu_sex='男' or Stu_sex='女') default('男'),
	age 	int		,	
	Brithdate	date NOT NULL,
	Phone1 varchar(11)	unique,
	Phone2 varchar(11)	unique,
	Address varchar(100),
	Class_id varchar(4)								
)

CREATE TABLE Course
(
    -- 创建列
    Course_id VARCHAR(5) PRIMARY KEY  NOT NULL,
	Course_name VARCHAR(20) NOT NULL,
    Course_hour smallint NOT NULL,
    Introduce VARCHAR(200)
);

CREATE TABLE StudentGrade
(
    -- 创建列
    Stu_id INT NOT NULL	references Student(Stu_id),
    Course_id VARCHAR(5) NOT NULL references Course(Course_id),
    Grade smallint 
    -- 设置组合主键
    PRIMARY KEY (Stu_id, Course_id)
);

三,删除表

复制代码
--判断表是否存在
if exists(select *from sys.objects where name='表名'and type ='U')
drop table	表名--若存在则删除表

四,修改表结构

1.添加列

复制代码
--alter table 表名 add 新列名 数据类型
alter table People add name vachar(20)

--示例
use Schooldb
	alter table StudentGrade add point float

2.删除列

复制代码
--alter table 表名 drop 列名
alter table People drop column name

--示例
alter table studentGrade drop column point 

四,列的常用操作

1.添加约束

复制代码
添加约束
--alter table 表名 add constarint	约束名 check(表达式)
alter table Course add CONSTRAINT year check (year BETWEEN 2006 AND 2020);

--添加约束(主键)
--alter table 表名 add constarint	约束名 primary key(列名) 
alter table Course add CONSTRAINT  primary key (year);

--添加约束(唯一)
--alter table 表名 add constarint 约束名	unique(列名) 
alter table Course add CONSTRAINT UQ_Year_Unique unique(year)

--添加约束(默认)
--alter table 表名 add constarint	约束名 default 默认值 for 列名
	alter table Course add CONSTRAINT DF_Year_Default default 2000 for year;

--添加约束(外键)
--alter table 表名 add constarint 约束名	foreign key(列名) reference 关联的表名(列名)
alter table Course add CONSTRAINT FK_Year_OtherTable
FOREIGN KEY (year) REFERENCES OtherTable(OtherColumn);

2.删除约束

复制代码
--alter table 表名 drop constarint 约束名

五,具体操作

复制代码
--新建数据库
create database Schooldb
on
(	
	name='School.amd',--逻辑文件名
	filename='D:dataDBSchool.amd',--物理地址
	size=10MB,--文件初始大小
	filegrowth=10%--文件增长方式
)
log on
(
	name='School.lmd',--逻辑文件名
	filename='D:dataDBSchool.lmd',--物理地址
	size=10MB,--文件初始大小
	filegrowth=10%--文件增长方式
)
--切换数据库
use Schooldb

--创建表
create table Student 
(
	--创建列
	Stu_id	int		primary key	NOT NULL,
	Stu_name varchar(20) NOT NULL,
	Stu_sex varchar(2) NOT NULL check(Stu_sex='男' or Stu_sex='女') default('男'),
	age 	int		,	
	Brithdate	date NOT NULL,
	Phone1 varchar(11)	unique,
	Phone2 varchar(11)	unique,
	Address varchar(100),
	Class_id varchar(4)								
)

CREATE TABLE Course
(
    -- 创建列
    Course_id VARCHAR(5) PRIMARY KEY  NOT NULL,
	Course_name VARCHAR(20) NOT NULL,
    Course_hour smallint NOT NULL,
    Introduce VARCHAR(200)
);

CREATE TABLE StudentGrade
(
    -- 创建列
    Stu_id INT NOT NULL	references Student(Stu_id),
    Course_id VARCHAR(5) NOT NULL references Course(Course_id),
    Grade smallint 
    -- 设置组合主键
    PRIMARY KEY (Stu_id, Course_id)
);
	
	use Schooldb
	--添加列
	alter table Course add year int
	--修改数据类型
	alter table Course alter  column year smallint
	--添加约束
	alter table Course add CONSTRAINT year CHECK (year BETWEEN 2006 AND 2020);--普通条件约束
	alter table Course add CONSTRAINT UQ_Year_Unique unique(year);--唯一约束
	alter table Course add CONSTRAINT  PK_Year PRIMARY KEY (year);--主键
	alter table Course add CONSTRAINT DF_Year_Default DEFAULT 2000 FOR year;--默认
	alter table Course add CONSTRAINT FK_Year_OtherTable
FOREIGN KEY (year) REFERENCES OtherTable(OtherColumn);--外键

	--删除列
	alter table Course drop column year
相关推荐
杨运交6 小时前
[060][调度模块]Redisson vs Redis 原生锁:两种分布式锁实现深度对比
数据库·redis·分布式
FungLeo6 小时前
Node 后端实战 · 列表查询到底怎么写?一个通用 DSL 封装,过滤分页排序一次搞定
数据库·node.js·serverless·dsl 封装·通用列表查询
抓蛙师6 小时前
多租户 tenant_id SQL 注入漏洞分析与应急响应报告
数据库·sql
ACP广源盛139246256736 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 MoE 私有化部署下 GSV2221 视频转换芯片机遇分析
大数据·数据库·人工智能
七牛开发者7 小时前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
何以解忧,唯有..9 小时前
数据库索引失效的常见情况与优化策略
数据库·sql·oracle
这个DBA有点耶10 小时前
分布式数据库到底该不该上?从判断标准到架构选型的实战思考
数据库·架构·dba
01_ice11 小时前
MySQL库和表的操作
数据库·mysql
oradh11 小时前
Oracle UNDO表空间管理维护总结
数据库·oracle·undo表空间·undo表空间管理·undo表空间管理维护
布莱克60511 小时前
数据库索引分类:数据结构、物理存储与逻辑角度详解
数据结构·数据库