February 14 2014

sqlserver基础理论和基本操作(1)

创建数据库后,会在磁盘中生成两个文件:

库名.mdf   主数据库文件,数据都存放在此文件中

库名.ldf   日志文件,存放日志

以上的文件如果正在使用,则无法进行删除

只有关闭服务后才能删除以上的文件

数据库的本质其实就是对应在磁盘上的文件,如果删除了数据库,则磁盘上的文件也被删除

数据库的属性:

1,  逻辑名称

2,  初始大小

3,  最大容量

4,  文件组(primary):对于数据文件默认情况下属于主文件组

5,  自动增长量:(两种方式:1,按照字节增长,2,按照百分比)

6,  物理名称(路径+文件名)

 

如何创建一个数据库

CREATE DATABASE [UcJmh] ON  PRIMARY
(
NAME = ‘Ucjmh’,
FILENAME = ‘C:\database\ucjmh.mdf’ , –目录必须存在 不会自动创建的
SIZE = 3072KB ,   –初始大小
MAXSIZE = UNLIMITED,  –没有上限
FILEGROWTH = 1024KB   –增长以字节
)LOG ON
(
NAME = ‘ucjmh_log’,
FILENAME = ‘C:\database\ucjmh_log.ldf’ ,
SIZE = 1024KB ,
MAXSIZE = 2048GB ,
FILEGROWTH = 10%–增长以百分比)

alter database  ucjmh add file –给数据库添加一个数据文件
(
name=’ucjmh2′,
filename=’C:\database\ucjmh2.mdf’,
size=5mb,
maxsize=10mb,
filegrowth=1mb
)

 

alter database ucjmh add log file  –添加日志文件
(
name=’ucjmh2_log’,
filename=’C:\database\ucjmh_log2.ldf’,
size=1mb,
maxsize=1mb,
filegrowth=1mb
)

 

 
alter database ucjmh remove file ucjmh2;           –删除数据文件

alter database ucjmh remove  file ucjmh2_log;    –删除日志文件

 

alter database ucjmh modify name=jmh;
alter database jmh modify name=ucjmh;–修改数据库的名字

 
DROP DATABASE ucjmh–删除数据库 数据库被删除的时候 所有的数据文件和日志文件也同时被删除了

数据类型:

说明
bit 整型,其值只能是0、1或空值。
int 整型,占4个字节
smallint 整型,占2个字节
tinyint 整型,占1个字节
decimal 精确数值型,使用时必须指定范围和精度,例:decimal(7,2)
numeric 类型
money 货币型,用来表示钱和货币值。能存储从

-9220亿到9220 亿之间的数据

smallmoney 货币型,能存储从-214748.3648 到214748.3647 之间的数据
float 近似数值型,供浮点数使用
real 近似数值型
datetime 日期时间型,取值:1753-1-1~9999-12-31
smalldatetime 日期时间型,取值:1900-1-1~2079-6-6
timestamp 特殊数据型,用来创建一个数据库范围内的唯一数码。
char 字符型,用来存储定长的非统一编码型的字符数据。列宽最大为8000 个字符
varchar 字符型,用来存储变长的非统一编码型的字符数据。列宽最大为8000 个字符
text 字符型,用来存储大量非统一编码型字符数据。最多可以有近20亿个字符
nchar 定长统一编码字符型(统一编码是用双字节结构来存储每个字符),能存储4000个字符
nvarchar 变长统一编码字符型,能存储4000个字符
ntext 变长统一编码字符型,能存储近10亿个字符
binary 二进制数据类型,存储可达8000 字节长的定长的二进制数据
varbinary 二进制数据类型,存储可达8000 字节长的变长的二进制数据
image 二进制数据类型,存储变长的二进制数据,最大可达近20亿个字节

 

 

 

 

创建表的语法:

CREATE TABLE [数据库名称.][表的属主.]自定义表名
(
自定义列名1 列类型及大小 列的约束,
.
.
自定义列名n 列类型及大小 列的约束,
)

CREATE  TABLE  ucjmh.guest.testa
(
a int primary key,
b varchar (30) not null,
)

–查看当前库一共有多少用户
select * from sysusers where gid = 0 and hasdbaccess = 1
and islogin = 1 and issqluser = 1
EXEC sp_helprotect  @username =’dbo’

–查看一共有多少张表

select count(*) 总表数 from sysobjects where xtype=’u’; –用户表

select count(*) 总表数 from sysobjects where xtype in(‘u’,’s’);–用户表+系统表
select count(*) 总视图数 from sysobjects where xtype=’v’;  –总视图数
select count(*) 总存储过程数 from sysobjects where xtype=’p’;–总存储过程数
select count(*) 总触发器数 from sysobjects where xtype=’tr’; –总触发器数
/*D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程*/

–给表添加一列
ALTER  TABLE   [数据库名称.][表的属主.]表名
ADD 新加的列名 列类型 列约束

ALTER  TABLE   guest.testa
ADD c varchar (15) not null
/***
如果不加属主 会报
消息 4902,级别 16,状态 1,第 1 行
找不到对象 “testa”,因为它不存在或者您没有所需的权限。
*/

 

 

–修改表中现有的列属性

ALTER  TABLE   [数据库名称.][表的属主.]表名
ALTER COLUMN 原列名 新列类型 新列约束
ALTER  TABLE  guest.testa
ALTER COLUMN b int not null  –在oracle中是Modify

–删除表中现有的列
ALTER  TABLE   [数据库名称.][表的属主.]表名
DROP COLUMN 原列名

ALTER  TABLE  guest.testa DROP COLUMN a –不可以删除主键列
/**消息 5074,级别 16,状态 1,第 1 行
对象’PK__testa__3BD0198E7F60ED59′ 依赖于 列’a’。
消息 4922,级别 16,状态 9,第 1 行
由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN a 失败**/

要删除了主键才可以
alter table 表名 drop constraint 主键名

alter table guest.testa drop constraint PK__testa__3BD0198E7F60ED59

ALTER  TABLE  guest.testa DROP COLUMN a –删除成功

 

–删除整张表
drop table 表名

drop table guest.testa

 

 



Copyright 2019. All rights reserved.

Posted 2014年2月14日 by ucjmh in category "sqlserver

Leave a Reply

Your email address will not be published. Required fields are marked *