Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168169
  • 博文数量: 56
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 650
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-12 10:39
文章分类

全部博文(56)

文章存档

2009年(1)

2008年(55)

我的朋友
最近访客

分类: 数据库开发技术

2008-05-18 11:39:21



    SQL语言:不仅可以用于查询数据库中的数据外,还可以用来控制整个数据库系统。

    1.数据定义语言(DDL):它是对数据库中的对象进行创建、修改和删除的SQL语句的集合。
   
    创建、删除数据库;
    创建、更改、删除表;
    创建、更改、删除视图;
    创建、更改、删除索引;
    创建、删除模式。

    2.数据操作语言(DML):它是对数据库中的数据进行增加、修改和删除的SQL语句集合。

    INSERT语句:插入数据,
    UPDATE语句:修改数据,
    DELETE语句:删除数据。

    3.数据查询语言(DQL):它包括的是查询数据库中数据的语句。

    Select子句
    Where子句
    SQL运算符
    Order By子句
    Group By子句
    Having子句
    子查询
    高级复杂查询

    4.数据控制语言(DCL):它包括的是对数据库进行控制的一些语句。

    GRANT授权语句
    REVOKE收回权限语句
    .....



############################################

1.数据定义:
A,创建库,修改库,删除库
创建数据库:CREATE DATABASE [mydatabase] /*最简单的创建只用此行命令,其他参数由系统默认创建。*/
完整命令如下:
/*在master.dbo.sysdatabases系统数据表中查询是否已经存在名为mydatabase 的数据库,如果存在就先删除*/
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'mydatabase')
    DROP DATABASE [mydatabase]
GO
CREATE DATABASE [mydatabase]        /*创建数据库mydatabase*/
ON                                  /*创建数据库的数据文件*/
(
NAME = N'mydatabase_Data',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\mydatabase_Data.MDF' ,
SIZE = 1,
FILEGROWTH = 10%
)
LOG ON                              /*创建数据库的日志文件*/
(
NAME = N'mydatabase_Log',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\mydatabase_Log.LDF' ,
SIZE = 1,
FILEGROWTH = 10%
)
COLLATE Chinese_PRC_CI_AS           /*数据库的默认排序规则*/
GO

修改数据库:
ALTER DATABASE [mydatabase]
ADD FILE
(
NAME = N'mydatabase_Data2',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\mydatabase_Data2_Data.NDF' ,
SIZE = 100,
FILEGROWTH = 10%
)
删除数据库:DROP DATABASE [mydatabase]

B,创建表,修改表,删除表
创建表:
use [mydatabase]                  /*使用数据库mydatabase*/
GO
/*如果名称为s_info的数据表已经存在则删除*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[s_info]') and OBJECTPROPERTY(id,N'IsUserTable') = 1)
drop table [dbo].[s_info]
GO
CREATE TABLE [dbo].[s_info] /*创建数据表student_info*/
(
[studentno] [int] IDENTITY (1, 1) NOT NULL ,
[studentid] [int] NOT NULL PRIMARY KEY,
[name] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[sex] [char] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[type] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[birthday] [datetime] NULL ,
[classno] [smallint] NOT NULL ,
[major] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[departmentno] [smallint] NOT NULL ,
[photo] [image] NULL
)
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
EXEC sp_help [s_info] /*调用系统存储过程sp_help 来查看创建的数据表的结果信息*/
GO
修改表:
USE [MYDATABASE]
GO
ALTER TABLE [s_info] ADD MEMO VARCHAR(200) NULL
/*添加MEMO字段,若原表中已存在数据,则新添字段必须设置为NULL
语法形式:ALTER TABLE <表名> ADD (<列名><数据类型>[NULL|NOT NULL],…);*/
ALTER TABLE [s_info] DROP COLUMN TYPE /*删除TYPE字段*/
ALTER TABLE [s_info] ALTER COLUMN NAME VARCHAR(50) NOT NULL /*修改NAME字段*/
ALTER TABLE [s_info] ALTER COLUMN CLASSNO CHAR(8) NOT NULL /*修改CLASSNO字段*/
ALTER TABLE [s_info] MODIFY (BPLACE CHAR(30));
/*增大某个列条件:列为空。改变类型和缩短长度。
语法形式:ALTER TABLE <表名> MODIFY(<列名>[<数据类型>][NULL|NOT NULL],…);
如果列中已存在数据,则不能改变数据类型,且不能缩短列的宽度,但可以增大列宽; */
EXEC sp_help [s_info]
GO
删除表:
USE [mydatabase]
GO
DROP TABLE [s_info]
/*注:删除表后,索引、视图随之消失;有的DBMS要求在DROP TABLE之前、先用DELETE清空表中所有数据行。*/
C,创建视图,修改视图,删除视图

D,创建索引,修改索引,删除索引

2.数据操纵:
插入数据,修改数据,删除数据
插入数据:
INSERT [INTO] {表名 WHIT(<表限制>[....n]) | 视图名}
{[(列的列表)]
{VALUES({DEFAULT|NULL|列值表达式}[,...n])}
}|DEFAULT VALUES
INSERT INTO EMPLOYEES VALUES('Jones','Davy','1970-10-10','Boston',8,45000);
INSERT INTO EMPLOYEES VALUES('Jones','Indiana','1992-02-01','Chicago',NULL,NULL);
INSERT INTO 学生表(学号,姓名,性别,院系名称,班级代号,出生日期,入学年月)
VALUES ('20040003','王海洋','男','计算机','200401','1979-05-20','200409')
修改数据:
UPDATE {表名 WITH(<表限制>[...n]) | 视图名}
SET {列名 = {列值表达式 | DEFAULT | NULL}} [WHERE <查询条件表达式>]
UPDATE 学生表 SET 姓名='欧阳疯',院系名称='电子' WHERE 学号='20040003'
删除数据:
DELETE FROM 学生表 WHERE 学号='20040003'


3.数据控制:


阅读(1322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~