SQL语法整理[1]——创建数据库

来源:互联网 发布:h5页面源码 编辑:程序博客网 时间:2024/06/16 18:40
 

SQL语法整理[1]——创建数据库

数据库在SQL Server2005的组成

SQL Server2005中的数据库由包含数据库表的集合,以及其他对象(视图、索引、存储过程、函数、触发器等)组成。

a.数据库组成实例

一个实例包含有4个系统数据库和若干个用户自定义数据库。

b.逻辑上文件组组成数据库

SQL Server2005中文件组分为两类:一类是主文件组,另一类是用户自定义文件组。

主文件组主要存储的是数据库的系统信息。

用户自定义文件组则存储着用户的数据信息。

逻辑组成从上到下可理解为:实例-数据库-文件组-对象

c.物理上看数据库的组成

数据库有两种文件组成:数据文件和日志文件。

主数据文件,扩展名是.mdf

二级数据文件,扩展名是.ndf

日志文件,扩展名是.ldf

d.系统数据库

master

model

tempdb

msdb

master数据库记录着SQL Server 2005系统中的所有系统级别信息,包括所有的登录账户和系统配置以及所包含的数据库、数据文件的位置。master数据库是SQL Server启动的第一个入口,是所有系统数据库中的重中之重,一旦master数据库损坏,那么SQL Server将无法启动。

model数据库是新建数据库的模板。当发出创建数据库的命令时,新的数据库的第一部分将通过复制model数据库的内容创建,剩余部分由空数据页填充。由于tempdb数据库在SQL Server每次启动时都要重新创建,所以model数据库在SQL Server 2005中也是必需的,不能缺少的。

tempdb数据库保存了所有的临时表和临时存储过程。默认情况下,SQL Server在运行时,tempdb数据库会根据需要自动增长。每次启动SQL Server时都要重新创建tempdb以便系统启动时,该数据库总是空的。在断开连接时会自动删除临时表和存储过程,并且在系统关闭后没有活动连接。因此tempdb中不会有什么内容从一个SQL Server会话保存到另一个会话。

     msdb数据库提供SQL Server 2005代理程序调度、警报、作业以及记录操作员等活动。

 

SQL Server是遵循先写日志,再进行数据库修改的数据库系统。

每个数据库都必须包含一个也只能包含一个主数据文件.

数据库可以没有二级数据文件,也可以拥有很多二级数据文件,二级数据文件在实际工作中主要是存储用户自定义的信息。

每个数据库必须至少有一个日志文件.每个数据库可以有一个日志文件,也可以有多个日志文件。

注意:在创建数据库的时候,每个数据库文件之间都用逗号隔开,在LOG ON关键字之前的那个数据文件结束时,就没有逗号了。)

表概述

     表:Table,列:Column,单元:Field

     表分为两类:系统表和用户自定义表

 

临时表

     临时表与永久表相似,但临时表存储在tempdb数据库中,但会话断掉之后会自动删  除。临时表是在SQL Server2005启动后,用户在操作数据库的时候创建生成的,在     断开与SQL Server2005服务连接或者关闭服务以后,临时表将自动删除

 

列的IDENTITY属性

     为表列产生一个自动生成的序列,语法:IDENTITY[(seed,increment)]

 

命名规则

尽量不要用中文对数据库对象命名

数据库对象命名是不能够出现空格的,但可以用界定符号[]来加以限制去使用.

系统保留的关键字,也需要用界定符号[]来加以限制.

对表的基本操作

1.SQL

Structured Query Language

a.DDL(Data Define Language)

b.DML(Data Manufacturing Language)

c.DCL(Data Control Languange)

 

SELECT select_list                  

FROM table_name                     

[WHERE search_condition]            

[ORDER BY order_expression[ASC|DESC]]

 

TOP字句

select top 2 name,age from student

 

DISTINCT \ BETWEEN \ IN \ NOT IN\COMPUTE \ COMPUTE BY

select * from parents where f_position in('worker','engineer')

select * from parents where f_position not in('worker','engineer')

 

 

COMPUTE BYGROUP BY的比较

select f_position,count(f_telephone),count(m_telephone) from parents group by f_position

select f_position,f_telephone,m_telephone from parents order by f_position compute count(f_telephone),count(m_telephone) by f_position

(COMPUTE不仅将汇总的数据显示出来,同时还能将详细信息显示出来。

GROUP BY只能显示汇总的信息.)

 

模糊查询LIKE字句

通配符如下:

%(百分号):表示从0~n个任意字符.

_(下划线):表示单个任意字符.

[](方括号):表示方括号里列出的任意一个字符。

[^]:任意一个没有在方括号里列出的字符。

 

外联接

LEFT OUTER JOINLEFT JOIN \ RIGHT OUTER JOINRIGHT JOIN \FULL OUTER JOINFULL JOIN

(左外联接的结果集中除了包括满足条件的行外,还包括左表所有的行(左表中没有满足条件的以空值的形式出现))

INSERT [INTO]              

Table_name(column_name)[,…n]

VALUES                     

(expression)[,…n]              

a.使用列清单

例如:向学生表中插入一条学生信息.

INSETR  INTO Student

(id  ,[name], gender ,age , grade ,class , teacher_id,  parents_id)

VALUES(2006008,'Songdan','女',22,1,4,101,2005)

b.省略列清单

例如:向学生表中插入一条学生信息.

INSETR INTO  Student  VALUES (2006009,'SD','女',23,1,1,101,2008)

 

UPDATE table_name                      

SET                                    

{column_name={expression|DEFAULT|NULL}}

[WHERE {<search_condition>}]             

 

修改多行数据

UPDATE    Student

SET

    teacher_id=103

WHERE

    id   IN

(

    2006001,

    2006002,

    2006003

)

GO

 

DELETE  [FROM]  table_name

WHERE search_condition    

 

TRUNCATE清空表

TRUNCATE TABLE table_name

 

DROP删除表

DROP TABLE table_name

 

 

——大二的期末考试整理 peace_power@126.com

 

原创粉丝点击