一、创建数据库

  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)用户自定义完整性

与100之间(注:这里是自主命名的,前面几个都不是自主命名)

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

种方法,其一是使用 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 表名

Sql语言复习的更多相关文章

  1. sql语言复习2

    一.查询 select 字段列表 from 表名列表 [where 条件表达式][group by 字段列表[having 条件表达式]] [order by 字段列表[asc|desc]] 含义:在 ...

  2. sql语言不经常用,复习

    sql语言不经常用,每次再用都隔好久的时间,以致最基本的都想不起来了,只好转一篇记着= - 找的时候方便 SQL分类:  DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE)  ...

  3. SQL基础复习1

    一.概述 SQL语言组成:DDL,DCL,DML 二.数据定义 1.模式定义(Schema) Schema这个东西一直感觉不大明白,一直以为就是对表的字段定义则被称为Schema,在复习数据库理论中才 ...

  4. SQL语句复习【专题三】

    SQL语句复习[专题三] DML 数据操作语言[insert into update delete]创建表 简单的方式[使用查询的结果集来创建一张表]create table temp as sele ...

  5. sql期末复习(二)

    1.概念模式是对dba所看到的全局数据逻辑结构和特征的描述 概念模式是对数据整体的逻辑结构的描述 2.数据库网状模型应满足的条件是允许一个以上的结点无父结点,其余结点都只有一个父结点 3.sql语言中 ...

  6. 2016 - 3 - 12 SQLite的学习之SQL语言入门

    1.SQL语句的特点: 1.1 不区分大小写 1.2 每条语句以;结尾 2.SQL语句中常用关键字: select,insert,update,from,create,where,desc,order ...

  7. SQL 语言 - 数据库系统原理

    SQL 发展历程 从 1970 年美国 IBM 研究中心的 E.F.Codd 发表论文到 1974 年 Boyce 和 Chamberlin 把 SQUARE 语言改为 SEQUEL 语言,到现在的 ...

  8. SQL语言

    SQL语言的分类:DDL DML DQL DCL SQL中的操作无非就是(增删改查) DDL:Data Query Language,数据查询语言! 主要是用来定义和维护数据库的各种操作对象,比如库. ...

  9. SQL语言分类

    SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. 1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHER ...

随机推荐

  1. Python序列化、date、random、os模块

    知识点一:序列化与反序列化(json和pickple) 01 什么是序列化/反序列化    序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输    发序列化就是硬盘中或者网络中 ...

  2. springMVC 引入静态资源Js的方式

    前两天项目出现了Js无法引入的情况,本篇博客先总结分析+批判自己犯的低级错,再说说几种访问静态资源的方式! 首先,由于在web.xml里面的servlet拦截匹配为<url-pattern> ...

  3. HashSet源码分析 jdk1.6

    Set的特点:Set元素无顺序,且元素不可以重复. 1.定义 public class HashSet<E> extends AbstractSet<E> implements ...

  4. iOS----精品开源库-开发强力助攻

    30个精品iOS开源库,超强助攻 你不会想错过他们,真的. 我爱开源.  文章的尾部你会看到一个太长不看的版本——一个简单的列表,只有标题和到项目的链接.如果你发现这篇文章是有用的,把它和你的iOS开 ...

  5. 【bzoj1959】[Ahoi2005]LANE 航线规划 树链剖分+线段树

    题目描述 对Samuel星球的探险已经取得了非常巨大的成就,于是科学家们将目光投向了Samuel星球所在的星系——一个巨大的由千百万星球构成的Samuel星系. 星际空间站的Samuel II巨型计算 ...

  6. 算法复习——树形dp

    树形dp的状态转移分为两种,一种为从子节点到父节点,一种为父节点到子节点,下面主要讨论子节点到父亲节点的情况: 例题1(战略游戏): 这是一道典型的由子节点状态转移到父节点的问题,而且兄弟节点之间没有 ...

  7. spring中MessageSource的配置使用方法1

    Spring定义了访问国际化信息的MessageSource接口,并提供了几个易用的实现类.首先来了解一下该接口的几个重要方法:  String getMessage(String code, Ob ...

  8. Django自定义User模型和登录验证

    用户表已存在(与其他App共用),不能再使用Django内置的User模型和默认的登录认证.但是还想使用Django的认证框架(真的很方便啊). 两个步骤: 1)自定义Use模型,为了区分系统的Use ...

  9. offsetWidth clientWidth scrollWidth 三者之间的区别和联系

    scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大. clientWidth:对象内容的可视区的宽度,不包滚动条等边线,会随对象显示大小的变化而改变. off ...

  10. POJ3067 Japan

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26270   Accepted: 7132 Description Japa ...