基本表操作03

一、架构(模式)

定义:数据库对象容器

包括:基本表、视图、触发器

1、创建

-- 为用户U1定义一个架构,取名为Salse
CREATE SCHEMA Salse AUTHORIZATION U1
-- 创建表
CREATE TABLE Test(
    c1 INT PRIMARY KEY,
    c2 char(4)
)
grant select to u2  -- 授权  查询 给u2
deny delete to u3  -- 撤销 u3 的 删除权限

2、转移

-- 把Test表从Common架构传输到Special架构中
alter schema Special transfer Common.Test;

3、删除

-- 删除架构Special.Test
drop table Special.Test;
-- 删除架构
drop schema Special;

二、基本表

1、表约束

  • 主键约束——Primary Key
  • 外键约束——Foreign Key
  • 检查约束——Check
  • 默认约束——Default
  • 唯一约束——Unique

2、创建表

在数据库Library_DB中创建一张用于借阅人员信息管理表borrower_info表,表中包括:借阅者编号、姓名、出身年月、地址、电话号码等

create table borrower_info
(
    reader_id   varchar(20) primary key,
    reader_name  nvarchar(10) not null,
    reader_brith  char(10),
    reader_address  nvarchar(50),
    reader_phone  char(11)
    -- 检查范围
    reader_age nchar(1) check(reader_age>=15)
    -- 精度
    n_id numeric(3,1)
    -- 添加外键
    FOREIGN KEY (Sno) REFERENCES Student(Sno)
    -- 含计算
    myavg AS (low + high)/2
    -- 识别列表(默认不能为该字段复制,只能由系统自动生成)
    SID INT IDENTITY(1,1) NOT NULL
    -- 更改默认识别列表
    SET IDENTITY_INSERT [ database_name. [ schema_name ]. ] table { ON | OFF }
    -- 其别名
    Tno char(5) constraint PK_Tno 
   	-- 将新添加的Type列的数据类型改为NCHAR(2)。 
	ALTER TABLE SC ALTER COLUMN Type NCHAR(2)
    -- 限定范围
    ALTER TABLE SC  ADD CHECK(Type IN ('必修', '重修', '选修') )
    -- 删除type列
    ALTER TABLE SC DROP COLUMN Type
    -- 删除表test
    DROP TABLE test
)

向表borrower_info中加入字段名为ethnic的列,以记录该学生的民族。该列的属性为nvarchar(5),缺省(默认)值为’汉族’

ALTER TABLE borrower_info ADD ethnic nvarchar(5) default '汉族'

基本表操作03_第1张图片

# 如有错误!请通知我!谢谢!
create table Student(
	Sno char(7) primary key,
    Sname char(10) not null,
    Sex char(2) add check(Sex IN('男','女')),
    Birthdate date,
    Dept varchar(20)
)
create table Course(
	Cno char(10) primary key,
    Cname varchar(20) not null,
    Credit tinyint add check(Credit >0),
    Semester tinyint
)
create table SC(
	Sno char(7),
    Cno char(10),
    Grade smallint add check(Grade >=0,Grade<=100),
    FOREIGN KEY (Sno) REFERENCES Student(Sno),
    FOREIGN KEY (Cno) REFERENCES Student(Cno)
)

3、修改表结构

-- 为SC表添加“修课类别”列,此列的定义为:Type NCHAR(1),允许空。
ALTER TABLE SC ADD Type NCHAR(1) NULL

三、分区表

1、特点:

从物理上将一个大表分成几个小表

2、创建分区表

  • 左分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KJ9QXlZo-1585556708955)(D:\Tpory_imgs\img\image-20200311195302040.png)]

CREATE PARTITION FUNCTION myRangePF1(int) AS RANGE LEFT FOR VALUES (1,100,1000);
  • 右分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-00t6fN4z-1585556708957)(D:\Tpory_imgs\img\image-20200311195318890.png)]

CREATE PARTITION FUNCTION myRangePF2(int) AS RANGE RIGHT FOR VALUES (1, 100, 1000)
  • 划分并指定分区

基本表操作03_第2张图片

CREATE PARTITION FUNCTION myRangePF1(int) 
AS RANGE LEFT FOR VALUES (1, 100, 1000); 
GO 
CREATE PARTITION SCHEME myRangePS1 
AS PARTITION myRangePF1 
TO (test1fg, test2fg, test3fg, test4fg);
-- 创建将所有分区映射到同一个文件组的分区方案。 
CREATE PARTITION FUNCTION myRangePF3(int) 
 AS RANGE LEFT FOR VALUES (1, 100, 1000); 
GO 
CREATE PARTITION SCHEME myRangePS3 
 AS PARTITION myRangePF3 
 ALL TO ( test1fg )

你可能感兴趣的:(Sql_server,数据库)