上次介绍了如何在SQL Server中建立数据库和表,并且做备份和还原。这一次将用上次建立的School数据库做演示,学习SQL语句。本文为0基础入门级别,所以介绍的知识非常有限,例子也是最简单的,还是建议大家买本SQL的书学习。
先回顾一下,上次我们建立的数据库和表结构如下:
School数据库里只有一张Student表,其中Id是自增长的主键。下面我们以它为例,来演示SQL语句的基本用法。
在SSMS中编写SQL脚本的方法是:点击工具栏上的“新建查询”,在编辑器中输入SQL脚本,选择一个正确的数据库,检查语法正确后,点击“执行”,最后在消息面板可以看到执行结果。如下图:
一、 使用SQL语句创建表
除了前面一片文章介绍的用图形化界面建表,我们还可以用SQL语句来创建表,创建Student表的SQL脚本如下:
01 | CREATE TABLE [dbo].[Student]( |
02 | [Id] [ int ] IDENTITY(1,1) NOT NULL , |
03 | [SName] [nvarchar](50) NULL , |
04 | [Phone] [nvarchar](50) NOT NULL , |
05 | [Address] [nvarchar]( max ) NOT NULL , |
06 | CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED |
07 | ( |
08 | [Id] ASC |
09 | ) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ] |
10 | ) ON [ PRIMARY ] TEXTIMAGE_ON [ PRIMARY ] |
这段脚本不必去记,可以使用SSMS生成。不过当我们用程序去创建表的时候,就需要手写SQL脚本的能力了。
二、 插入数据
例:向Student表插入一条新记录。
1 | INSERT INTO [dbo].[Student] ([SName],[Phone],[Address]) VALUES ( 'Edi' , '123456' , 'ABCDEF' ); |
执行完成后,右键点击student表,选择“选择前1000行”,来检验我们的执行结果。
在下面的结果面板里,已经显示了Student表现在的数据。
三、 查询
在刚才点击“选择前1000行”之后,你可能注意到了SSMS自动为我们编写了查询脚本。这就是现在要介绍的。
刚才的脚本是:
1 | SELECT TOP 1000 [Id] |
2 | ,[SName] |
3 | ,[Phone] |
4 | ,[Address] |
5 | FROM [School].[dbo].[Student] |
其中TOP 1000表示前1000条记录,通常TOP语句都会和ORDER BY 排序一起使用,这在后面会介绍。如果你希望查询所有的数据,就把TOP 1000去掉即可。
另外,SELECT你可以省略后面的字段,用*代替,表示希望查询所有的字段。
1 | SELECT * FROM Student |
这条语句的结果和之前是一样的,因为之前的SELECT语句也是筛选全部的字段,并且我们目前只有一条记录。
为了介绍后面的技巧,我先给在表中插入一些别的数据。最后结果如下:
现在,我们的SELECT语句可以玩更多的花样了。比如:
按Id从大到小排序:
1 | SELECT * FROM Student ORDER BY Id DESC |
按条件查询(匹配Address为AAAAA)的记录:
1 | SELECT * FROM Student WHERE Address = 'AAAAA' |
配合起来也能用:
SELECT * FROM Student WHERE Address = 'AAAAA' ORDER BY ID DESC
四、 修改
如果我们需要修改记录,就要用到UPDATE语句。比如Stone的地址改为BBBBB:
1 | UPDATE STUDENT SET Address = 'BBBBB' WHERE SName = 'Stone' |
当然,你也可以批量UPDATE,这取决于后面的WHERE语句。
五、删除
最后我们来学习如何删除记录。这个非常简单,不过得注意WHERE条件,以免误删。比如我要删除Id为5的记录:
1 | DELETE FROM Student WHERE Id = 5 |
最后扯一个小常识。细心的读者可能注意到了,本文所操作的Student表,Id居然不是连续的,读者可能会问了,这个不是自动加1的吗?却是是这样。但数据库的机制必须确保这个Id的唯一性,因为他是主键,数据库也要保证完整性,因为这个Id可能在别的地方被使用。如果因为删除了某条记录而自动更新这个Id的话,那么引用这个Id的地方就会指向错误的位置,毕竟数据库无法知道这个Id到底最后给谁用了。它可能是别的程序,别的表的外键,或者网络上某篇新闻的Id。
其实最后我想说的是,本文只是0基础入门,没有介绍过任何关系型数据库的基本知识,但这些知识非常重要,读者如果想学SQL Server或者其他数据库,一定得去看有关的书籍。
联系客服