前言
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象
定义模式:
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
DeptNo | DeptName |
---|---|
00101 | 人事部 |
00102 | 财务部 |
00103 | 市场部 |
person
NO | Name | Sex | Birthday | Professor | DeptNo |
---|---|---|---|---|---|
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
No | Year | Month | Base | Bonus | Deduct | Fact |
---|---|---|---|---|---|---|
000001 | 2005 | 1 | 2200 | 380 | 160.5 | |
000002 | 2005 | 1 | 2800 | 500 | 203.2 | |
000003 | 2005 | 1 | 2200 | 300 | 162.5 | |
000004 | 2005 | 1 | 2200 | 300 | 162.5 | |
000005 | 2005 | 1 | 2800 | 550 | 206.3 | |
000006 | 2005 | 1 | 1800 | 200 | 140.1 |