sql-server

数据库常用对象

  1. 表 包含数据库中所有数据的对象,行和列组成,用于组织和存储数据。
  2. 字段 表中的列 一个表可以有多个列,自己的属性: 数据类型(决定了该字段存储哪种类型的数据),大小(长度)。
  3. 视图 表 (虚拟表)一张或多张表 用户查看数据的一种方式,结构和数据是建立在对表的查询基础之上的。
  4. 索引 为了给用户提供一种快速访问数据的途径,索引是依赖于表而建立的。
  5. 存储过程 是一组为了完成特定功能的SQL语句的集合(可以查询、插入、修改、删除),编译后,存储在数据库中,以名称进行调用,当调用执行时,这些操作就会被执行。
  6. 触发器 在数据库中,属于用户定义的SQL事务命令集合,针对于表来说,当对表执行增删改操作时,命令就会自动触发而去执行。
  7. 约束 对数据表的列,进行的一种限制。可以更好的规范表中的列。
  8. 缺省值 对表中的列可以指定一个默认值。

数据类型

数值型:

  • 整型类型: bigint int smallint tinyint

  • 浮点型: float 近似数值 存在精度损失 real 近似数值

    ​ decimal 精确数值 不存在精度损失 decimal(18,2)

  • 货币类型: money smallmoney

字符型:

  • char 固定长度 8000
  • varchar 可变长度字符串 8000
  • text 可变长度的字符串 最多2GB字符数据
  • unicode字符串
    • nchar 4000
    • nvarchar 4000
    • ntext 可变长度的Unicode数据 最多2GB数据

日期类型:

  • datetime 精确度高 3.33毫秒
  • datetime2 精确度更高 100纳秒
  • smalldatetime 精度1分钟
  • date 仅存储日期
create database CK 
on
(name='CK_Data',		--数据库CK的逻辑文件名,在sql server系统中使用
filename='d:/data/ck_data.MDF',  --数据库CK的物理文件名,在操作系统中使用
size=10,                 --数据库CK的文件大小为10MB
filegrowth=10%,          --数据库按10%增长
maxsize=unlimited)       --数据库最大增长无限制,此句无逗号。
log 
on
(name='CK_log',          --日志文件的逻辑文件名
filename='d:/data/ck_data_log.LDF',  --日志文件的物理文件名
size=5,                  --日志文件的大小为5MB
filegrowth=1,            --日志文件1MB增长
maxsize=15)              --数据库日志文件最大为15MB,此句无逗号。
--修改CK数据库的数据库文件"CK_data"的大小增加到300MB,日志文件"CK_log"的大小增加为100MB
alter database ck
modify file
(name=ck_data,
size=300MB)
alter database CK
modify file
(name=ck_log,
size=100MB)

结构化查询语言

创建数据库

创建数据库

--创建数据库
CREATE DATABASE CK COLLATE Chinese_PRC_CI_AS;

创建供应商表S

--创建供应商表S
use CK
create table S(
SNO char(4) not null,
SNAME varchar(20) null,
SADDR varchar(30) null,
primary key(SNO)
)

创建零件数据表P

--创建零件数据表P
use CK
create table P(
PNO char(4) not null,
PNAME varchar(20) null,
COLOR varchar(10) null,
WEIGHT smallint null,
primary key(PNO)
)

创建工程项目数据表J

--创建工程项目数据表J
use CK
create table J(
JNO char(4) not null,
JNAME varchar(20) null,
JCITY varchar(20) null,
BALANCE money null,
primary key(JNO)
)

创建供应关系数据表SPJ

--创建供应关系数据表SPJ
use CK
create table SPJ(
SNO char(4) not null,
PNO char(4) not null,
JNO char(4) not null,
PRICE money null,
QTY smallint null,
primary key(SNO,PNO,JNO),    --实体完整性规则
foreign key(SNO) references S(SNO), --参照完整性规则
foreign key(PNO) references P(PNO), --参照完整性规则
foreign key(JNO) references J(JNO), --参照完整性规则
check (QTY between 0 and 10000)     --用户定义完整性规则
)

基本表结构的修改

在供应表中增加一个字段

--在供应表中增加一个字段:Telephone char(10) null
use CK
alter table s
add Telephone char(10) null

删除供应表中一个字段

--删除供应表中一个字段:Telephone 
use CK
alter table s
drop column Telephone 

修改供应商表S,使得供应商名称长度为50

--修改供应商表S,使得供应商名称长度为50
use CK
alter table s
alter column Sname varchar(50) null

基本表的撤销

--创建供应商表S1
use CK
create table S1(
SNO char(4) not null,
SNAME varchar(20) null,
SADDR varchar(30) null,
primary key(SNO)
)

--删除供应商表S1
use CK
drop table S1

视图的创建

--创建视图
create view JSP_NAME(JNO,JNAME,SNO,SNAME,PNO,PNAME,QTY)
as select J.JNO,JNAME,S.SNO,SNAME,P.PNO,PNAME,QTY
	from S,P,J,SPJ
	where S.SNO=SPJ.SNO
	and P.PNO=SPJ.PNO
	and J.JNO=SPJ.JNO
--查看试图
select * from JSP_NAME
--撤销视图
drop view JSP_NAME

索引的创建和撤销

--对表J创建名为JNO_INDEX索引,JNO降序排列
create index JNO_INDEX on J(JNO desc)
--使用建立的索引
select * from J with (index=JNO_INDEX)
--删除索引
drop index J.JNO_INDEX
posted @ 2024-08-29 17:31  给我一碗炒粉  阅读(30)  评论(0)    收藏  举报