上次介绍了如何在SQL Server中建立数据库和表,并且做备份和还原。这一次将用上次建立的School数据库做演示,学习SQL语句。本文为0基础入门级别,所以介绍的知识非常有限,例子也是最简单的,还是建议大家买本SQL的书学习。

先回顾一下,上次我们建立的数据库和表结构如下:

School数据库里只有一张Student表,其中Id是自增长的主键。下面我们以它为例,来演示SQL语句的基本用法。

在SSMS中编写SQL脚本的方法是:点击工具栏上的“新建查询”,在编辑器中输入SQL脚本,选择一个正确的数据库,检查语法正确后,点击“执行”,最后在消息面板可以看到执行结果。如下图:

一、 使用SQL语句创建表

除了前面一片文章介绍的用图形化界面建表,我们还可以用SQL语句来创建表,创建Student表的SQL脚本如下:

CREATE TABLE [dbo].[Student](
         [Id] [int] IDENTITY(1,1) NOT NULL,
         [SName] [nvarchar](50) NULL,
         [Phone] [nvarchar](50) NOT NULL,
         [Address] [nvarchar](max) NOT NULL,
 CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
         [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

这段脚本不必去记,可以使用SSMS生成。不过当我们用程序去创建表的时候,就需要手写SQL脚本的能力了。

二、  插入数据

例:向Student表插入一条新记录。

INSERT INTO [dbo].[Student] ([SName],[Phone],[Address]) VALUES ('Edi','123456','ABCDEF');

执行完成后,右键点击student表,选择“选择前1000行”,来检验我们的执行结果。

在下面的结果面板里,已经显示了Student表现在的数据。

 

三、 查询

在刚才点击“选择前1000行”之后,你可能注意到了SSMS自动为我们编写了查询脚本。这就是现在要介绍的。

刚才的脚本是:

SELECT TOP 1000 [Id]
      ,[SName]
      ,[Phone]
      ,[Address]
FROM [School].[dbo].[Student]

其中TOP 1000表示前1000条记录,通常TOP语句都会和ORDER BY 排序一起使用,这在后面会介绍。如果你希望查询所有的数据,就把TOP 1000去掉即可。

另外,SELECT你可以省略后面的字段,用*代替,表示希望查询所有的字段。

SELECT * FROM Student

这条语句的结果和之前是一样的,因为之前的SELECT语句也是筛选全部的字段,并且我们目前只有一条记录。

为了介绍后面的技巧,我先给在表中插入一些别的数据。最后结果如下:

现在,我们的SELECT语句可以玩更多的花样了。比如:

按Id从大到小排序:

SELECT * FROM Student ORDER BY Id DESC

按条件查询(匹配Address为AAAAA)的记录:

SELECT * FROM Student WHERE Address = 'AAAAA'

配合起来也能用:

SELECT * FROM Student WHERE Address = 'AAAAA' ORDER BY ID DESC

四、 修改

如果我们需要修改记录,就要用到UPDATE语句。比如Stone的地址改为BBBBB:

UPDATE STUDENT SET Address = 'BBBBB' WHERE SName = 'Stone'

当然,你也可以批量UPDATE,这取决于后面的WHERE语句。

五、删除

最后我们来学习如何删除记录。这个非常简单,不过得注意WHERE条件,以免误删。比如我要删除Id为5的记录:

DELETE FROM Student WHERE Id = 5

最后扯一个小常识。细心的读者可能注意到了,本文所操作的Student表,Id居然不是连续的,读者可能会问了,这个不是自动加1的吗?却是是这样。但数据库的机制必须确保这个Id的唯一性,因为他是主键,数据库也要保证完整性,因为这个Id可能在别的地方被使用。如果因为删除了某条记录而自动更新这个Id的话,那么引用这个Id的地方就会指向错误的位置,毕竟数据库无法知道这个Id到底最后给谁用了。它可能是别的程序,别的表的外键,或者网络上某篇新闻的Id。

其实最后我想说的是,本文只是0基础入门,没有介绍过任何关系型数据库的基本知识,但这些知识非常重要,读者如果想学SQL Server或者其他数据库,一定得去看有关的书籍。