Sql语言复习

一、创建数据库

 

  1. 创建和打开数据库

    注意一点:在新建数据库的时候,一般放置数据文件与日志文件的位置,需要提前建立文件夹,不然会报错。

    一般主数据文件,我们以.mdf结尾,次数据文件用.ndf结尾。对于日志文件,我们一般以.ldf结尾。

    create database UserDB

    on primary

    (name=userdb_dat,filename='d:\magmisdata\magdbdat1.mdf',

    size=10,maxsize=50,filegrowth=5)

     

    log on

    ( name=userdb_log,filename='d:\magmisdata\magdblog1.ldf',

       size=10,maxsize=50,filegrowth=5)

    打开数据库:

    use database UserDB

 

CREATE DATABASE UserBD1

ON PRIMARY

(name=user1,filename='d:\dbfile\user1.mdf',size=20,maxsize=200,filegrowth=5

),

(name=user2,filename='d:\dbfile\user2.ndf',size=20,maxsize=200,filegrowth=10%

),

(name=user3,filename='d:\dbfile\user3.ndf',size=20,maxsize=200,filegrowth=5

)

log on

(name=use1log,filename='d:\dbfile\user1.ldf',size=20,maxsize=200

),

(name=user2log,filename='d:\dbfile\user2.ldf',size=20,maxsize=200

)

2、修改数据库

增加和删除数据文件和日志文件

缩小分配给数据文件或日志文件的空间

扩大分配给数据文件或日志文件的空间

创建文件组

改变默认文件组

改变数据库名称

 

注意:在利用文件组的时候需要先增加文件组,然后在把增加的文件放到文件组里面去。

         而且 name 记录的是 数据文件的逻辑名称,不是物理名称。

alter database UserBD1

add filegroup userdbFG

alter database UserBD1

add file

(name=add_user2,filename='d:\dbfile\adddat2.ndf',size=5,maxsize=200,filegrowth=10%)

to filegroup userdbFG

 

注意:如果把下面的modify换成 remove的话,就可以删除某一个数据文件或者日志文件

当我们增加日志文件的话,我们使用命令 add log file (文件参数)

alter database UserBD1

modify file

(name=add_user2,size=10)

下面是缩小数据文件或数据库命令,

use UserBD1

dbcc shrinkfile(add_user2,5)

 

    dbcc shrinkdatabase(UserBD1,100)

删除数据库

    drop database UserBD1

二、数据库表

    1、创建数据库表

注意: identity(10,5) 表示初始值为10,然后按照5的速度往上涨。默认为自增1.

对于表名,一般#开头的表示临时表,它是存在于内存空间中的,随之数据库的关闭,自动关闭,不会保存到硬盘中。

      建立表格

 use UserBD1

 create table mag_dept

(

DepId int identity primary key,

DepName varchar(50) NOT NULL,

DepManager varchar(50) ,

DepTel varchar(24),

)

 

create table mag_emp

(

EmpId int identity,

EmpName varchar(30) NOT NULL,

SexInfo char(2),

EmpAge tinyint,

DepId int,

EmpRole varchar(20),

PermitStr varchar(100)

)

 

create table mag_info

(

MagId char(9),

MagName varchar(50) NOT NULL,

DesignerName varchar(30),

DesFinishDate datetime,

PubDate datetime,

DepId int

)

 

create table mag_doc

(

DocId int identity,

DocTitle varchar(180),

AuthorName varchar(30),

DocText text,

WordsSum int,

EditorName varchar(50),

EditFinishDate datetime,

ColumnName varchar(50),

DepId int,

MagId char(9)

)

2、数据类型

字符型 char varchar

日期时间类型 datetime smalldatetime

数值类型 int samllint tinyint float real decimal numeric money samllmoney

二进制类型 binary varbinary

位型 bit

文本型 text

图像型 image

时间戳型 timestamp

        3、修改数据库表

添加列

alter table mag_emp

add ID char(18)

删除列

alter table mag_emp

drop column ID

修改列的属性

alter table mag_info

alter column PubDate smalldatetime

更改列名和表名

use UserTest

create table test

(

number int identity,

stu_name varchar(10),

class varchar(20)

)

use UserTest 这一句不用加不然会报错

更改列名的写法表名.列名

Sp_rename '表名.列名' , 新的列名

sp_rename 'test.class',class_no

更改表名中间的逗号不可以省略

Sp_rename 原表名 , 新表名

 sp_rename test,student

4、使用约束

  1. 总共有5种约束,分别是 primary key 主键约束unique 该列不允许出现重复、

    foreign key 外键约束,保证数据表间数据的一致性check定义表中某些列的数据范围、 default 为列的数据提供默认值。

    可以实现实体完整性、参照完整性、自定义完整性。

    建立约束:

    1)实体完整性

    增加主键约束

    use UserBD1

    alter table mag_dept

    add primary key (DepId)

     

    联合主键的定义

    use UserBD1

    create table grade

    (

    sno varchar(10) NOT NULL ,

    cno varchar(10) ,

    gmark numeric(5,1) -- 表示整数有位,小数位,其中这里的逗号可有可无,但是上面的逗号不可少

    primary key (sno,cno)

)

 

    不允许重复出现

use UserBD1

alter table mag_dept

      add unique (DepManager)

      2)参照完整性

[constraint 约束名] foreign key (列名1[,列名2]) references 表名(列名1[,列名2]

定义外键

use UserBD1

alter table mag_emp

      add foreign key(DepId) references mag_dept(DepId)

 

use UserTest

create table mag_dept

(

DepId int identity primary key,

DepName varchar(50) NOT NULL,

DepManager varchar(50) ,

DepTel varchar(24),

)

 

create table mag_emp

(

EmpId int identity,

EmpName varchar(30) NOT NULL,

SexInfo char(2),

EmpAge tinyint,

DepId int references mag_dept (DepId), //省略foreign key

EmpRole varchar(20),

PermitStr varchar(100)

)

    3)用户自定义完整性

  自定义数据范围约束,将年龄值固定在到1100之间(注:这里是自主命名的,前面几个都不是自主命名)

use UserTest

alter table mag_emp

  add constraint ck_age check (EmpAge between 1 and 100)

 

为某个属性添加默认值

use UserTest

alter table mag_emp

add default '编辑' for EmpRole

删除约束如果是自主命名的直接删去约束名即可如果不是需要删除系统自动生成的约束名

注意斜杠的个数不然容易弄错

use UserTest

 

alter table mag_emp

       drop constraint FK__mag_emp__DepId__03317E3D

总结:建立约束总共有2种方法,其一是使用 cteate table 命令在建立表的同时一同定义。其二是利用alter table 命令针对已经建立的表添加约束。

还有就是不自主定义约束名时,需要省略 constraint 约束名。

5、建立与删除索引

索引分成两类:聚集索引(物理存储方式)与非聚集索引(逻辑存储方式)。

聚集索引:顺序存储结构。非聚集索引:线性结构。

Create [unique][clustered|noclustered] index 索引名 on 表名(列名1,列名2)

默认建立的是非唯一的非聚集索引。建立索引时必须先建立聚集索引,然后建立非聚集索引。

而且,当一个数据表建立主键后,自动建立了一个唯一的聚集索引。当使用了unique 约束后,自动建立一个非聚集索引。

建立与删除索引虽然标红了但语法正确

use UserTest

create index age_index on mag_emp(EmpAge)

 

drop index 表名.索引名

drop index mag_emp.age_index

6、删除数据表

    drop table 表名

posted on 2015-04-07 08:46  zhuxuekui3  阅读(160)  评论(0编辑  收藏  举报