万哥的数据库笔记(四)数据库、模式、表、索引

前言

一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象

定义模式:

Create schema 模式名 authorization 用户名	--如果没有指定模式名,那么模式名隐含为用户名
create schema 'S-T' authorization WANG	--为用户WANG定义一个学生-课程模式S-T

删除模式:

Drop Schema 模式名 CASCADE|RESTRICT	
--Ca表示在删除模式的同时把该模式中所有的数据库对象全部删除;Re表示模式已经定义了下属的数据库对象则拒绝删除

创建数据库:

连接后右击图中红色框中部分,新建查询(敲代码运行的地方)

在这里插入图片描述

在这里插入图片描述

根据下面格式结合需求把代码敲进↑

例:
Create Database	pay
	ON		(										--新建数据文件
			Name = pay1,							--逻辑名
			Filename = 'D:\SQL\pay1\paydata1.mdf',	--文件路径以及名字,后缀.mdf
			Size = 10,								--文件初始大小
			Maxsize = 100,							--最大值,不受限制是=unlimited
			FileGrowth = 5%							--文件大小增量值
			)
	LOG ON	(										--新建log日志文件
			Name = pay3,							--逻辑名
			Filename = 'D:\SQL\pay1\paylog.ldf',	--文件路径以及名字,后缀.ldf
			Size = 5,								--文件初始大小
			Maxsize = 25,							--最大值,不受限制是=unlimited
			FileGrowth = 10							--文件大小增量值
			)

执行

ps:SQL支持选择执行,即选中几行运行几行,不选中默认全选

在这里插入图片描述

命令成功完成后到相应路径查看是否创建成功(.mdf和.ldf)

在这里插入图片描述

修改数据库:

创建数据库部分中有地方出现错误,不知道细心的读者有没有发现。就是创建日志文件的时候.ldf设置成了.pdf

我们要修改数据库内容的时候,可以根据下面代码进行修改:

Alter Database 数据库名
Modify name				--修改数据库名
Add file <filespec>		--添加数据文件
Add log file <filespec>	--添加日志文件
Remove file 逻辑文件名	 --删除文件
Modify file <filespec>	--修改文件

<filespec>:
Name = ,				--逻辑名
Filename = ,			--文件路径以及名字,后缀.ldf
Size = ,				--文件初始大小
Maxsize = ,				--最大值,不受限制是=unlimited
FileGrowth = 			--文件大小增量值

ps: 每次修改只能修改一种,想同时修改数据库名和添加数据文件得用两个Alter Database

在这里插入图片描述

删除数据库:

Drop Database 数据库名

创建表:

我们首先来了解一下数据类型

数据类型含义
Char(n)长度为n的定长字符串
VarChar(n)最大长度为n的变长字符串
Int长整数(4字节)
SmallInt短整数(2字节)
Numeric(p, d)定点数,由p位数字组成,小数点后面有d位数字
Float(n)可选精度的浮点数,精度至少为n位数字
Date日期,YYYY-MM-DD
Time时间,HH:MM:SS

了解了数据类型后,我们来建表

Use pay											--在pay数据库下执行
Create Table dept								--在pay数据库创建一个dept表
	(											--字段名 数据类型 字段长度 是否为空 特殊
	△DeptNo Varchar(10) Not Null Unique,  	   --Unique唯一	
	DeptName Varchar(20) Not Null
	)
Create Table person
	(
	No Char(6) primary key,						--主键,没有重复数据
	Name Char(10) Not Null,
	Sex Char(2) Not Null,
	Birthday Datetime Null,
	Professor Varchar(12) Null,
	△DeptNo Varchar(10) Not Null,
	Foreign key(DeptNo) References dept(DeptNo)	//令本表中的DeptNo作外键,参照dept表的DeptNo
	)

ps:创建外键要先定义字段,不能直接设置外键(如上在person表创建DeptNo,数据类型字段长度等要和dept表的DeptNo一致)

修改表:

其一般格式为

Alter Table 表名
Add 新列名 数据类型				--增加新列
Alter Column 列名 数据类型		 --修改数据类型
Add	约束条件(列名)		  		--增加某一列的约束条件

删除表:

Drop Table 表名 Restric|Cascade	//Re是限制条件,如果有依赖该表的对象则此表不能被删除,Ca随便删

创建索引:

建立索引能加快查询速度,索引类似于书上的目录

Use pay
--在person表的Name列创建sort_name索引
Create Index sort_name On person(Name)					
--在dept表的deptname列创建sort_deptname唯一索引
Create Unique Index sort_deptname on dept(deptname)
--在pay表的No列创建sort_no聚簇索引
create clustered index sort_no on pay(No)
--在pay表的year,month组合列创建sort_yearmonth索引
create index sort_yearmonth on pay.dbo.pay(year,month)
--删除sort_no索引
Drop index pay.sort_no

下面是一些例子可以跟着看看能不能看懂:

Create Database	Education
	ON		(
			Name = edu1,
			Filename = 'D:\SQL\Education1\Education.mdf',
			Size = 20,
			Maxsize = unlimited,
			FileGrowth = 10
			)
	LOG ON	(
			Name = edu2,
			Filename = 'D:\SQL\Education1\Education_log.ldf',
			Size = 10,
			Maxsize = unlimited,
			FileGrowth = 10%
			)
Use Education
Create Table student
	(
	Sno Char(9) primary key,
	Sname Char(20) Not Null,
	Ssex Char(2)
		constraint con_sex check(Ssex in('男','女')),		//取值要么男要么女
	Sage Smallint Default 18,							 //默认18
	Sdept Char(30)
	)
Create Table course
	(
	Cno Char(10) primary key,
	Cname Char(40) Not Null Unique,
	Cpno Char(10),
	foreign key(Cpno) references Course(Cno),
	Ccredit Dec(3,1) Null Default 1.0
	)
Create Table sc
	(
	Sno Char(9),
	Cno Char(10),
	Primary key(Sno,Cno),
	Grade Dec(4,1) Null
	)

附录:

dept

DeptNoDeptName
00101人事部
00102财务部
00103市场部

person

NONameSexBirthdayProfessorDeptNo
000001李芸1974-4-5中级00102
000002李鹏1965-7-24高级00102
000003张华1978-2-14中级00103
000004罗玮1973-9-23中级00101
000005章琼1964-12-21高级00101
000006廖勇1985-8-3初级00103
000007赵辉1980-6-13初级00103

pay

NoYearMonthBaseBonusDeductFact
000001200512200380160.5
000002200512800500203.2
000003200512200300162.5
000004200512200300162.5
000005200512800550206.3
000006200511800200140.1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值