我的SQL server 学习

来源:互联网 发布:男士衣服品牌 知乎 编辑:程序博客网 时间:2024/06/05 03:34
在开发我的一个游戏的过程中,考虑到需要数据库的支持,所以打算学一下数据库的基础部分,这里是我在学习过程


中的一些笔记,多数是关于SQL 数据库查询语言的,希望以后能温故知新,也让自己的知识能够更加的牢固。
用自定义文件格式保存数据有很多的劣势和不便,对于查询和冲突的处理也不近人意。在这一点上数据库完全可以很


好的代替他,数据库可以方便管理人员对各个分类进行个性化处理,安全性更高。
DataBase Management System 简称DBMS数据库管理系统,这是我们在管理数据库时候用到的软件,而不是数据库。平


时我们说数据库其实需要搞清楚的是,是数据库管理系统还是存放一堆数据表的一个分类(Catalog),这两个概念是不同的。


这里我主要学习的就是用DBMS来处理数据。大部分数据库都需要数据库服务器才能运行。一般数据库是单独运行在一个服务器
中。


这里我学到的第一个东西就是表的概念,在数据库中有一个一个独立的区域,这样的区域叫做表,每一个表可以存放


一组不同的数据,一个一个分开即方便了人去管理,又避免了很多冲突的产生。
这里就需要提到一个东西——主键,主键是数据行的唯一标识。不会重复的列才能当主键。一般表都需要有一个主键


,这个主键的使得表的处理方便化,当然我还没学习到运用主键的程度,这里就不多说啦。
首先要做的当然是安装软件了。原来我在学校内网上下载了一个SQLserver 2008安装上了之后感觉东西怎么这么少,


操作了半天连建表也不会,后来在群上一问才知道SQL server Management Studio 没有安上。这可是折腾了我好久。在打开


SQL server Management Studio 需要知道的是 SQL server的两种验证方式:用户名验证和Windows验证。具体我也不知道有什

么用。


第一步创建数据库;
首先要说明的是在SQL语句中是大小写不敏感的。就是说查询可以写成SELECT也可以写成select,他们的实现的功能是一样的。
创建表:
CREATE TABLE Phonerwork(FNumber int NOT NULL,Fphone nvarchar(10),Fbgtime datetime ,Fentime datetime ) 

建立一个名字为Phonerwork 的表,其中包含的列有FNumber 数据类型为 int 不能有NULL,Fphone 数据类型为 nvarchar(10)

,Fbgtime数据类型为 datatime,Fentime 数据类型为 datatime
向表中插入数据:
INSERT INTO Phonerwork(FNumber,Fphone,Fbgtime,Fentime) VALUES (111,'01121464','12:22:09','2:22:12') 


向表Phonerwork 中插入一个行的数据FNumber,Fphone,Fbgtime,Fentime 代表列名,111,'01121464','12:22:09','2:22:12'代


表这一行具体的值。
修改表
UPDATE Phonerwork Set FNumber = 110,Fphone = 11012321

 

把表Phonerwork 中所有的列名为 FNumber 的数据改为110 列名为 Fphone 的数据改为 11012321

删除表(DROP)
DROP table person1

删除表person1
删除表的数据(DELETE)
DELETE from person1

 删除表person1 中的所有数据


delete from person2where id = 1


删除表 person1中的列名id的数值为1的一行





字段是数据的一种分类,比如 在一个表中存有一个人的姓名,年龄等信息,这些信息的类型就叫字段。

常用字段类型:bit(像C#中的bool)、datetime(年月日时分秒)int、varchar(非中文)、nvarchar(可能含中文)、char。


注意:char(n) 不足的长度n的部分系统会自动用空格填充
 
SQL语句与C#之类编程语言的区别,在表示逻辑运算符上 表示 不等于可以用<>来表示。 or 相当于 ||(或者),and 相当于 


&&(和),= 相当于 == 
where 中可以用的运算符 or,and,not,<,>,>=,<=,!=(或者<>)


Guid算法
Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,这保证了生成的


GUID永远不会重复,不管是在哪一台电脑上算出来。因为这个特点数据库可以用来做为主键的数据类型,类型的写法


为:uniqueidentifier
.Net中生成Guid的方法是:Guid.NewGuid()
SQL语句则可以用
 NEWID()


主键可以用int 自增字段,也可以用Guid,它们又有什么区别呢?
Int 自增字段的优点:占用空间小、无需开发人员开发人员干预、易读;缺点:
效率低;数据导入导出很不方便。
Guid的优点:效率高、数据导入导出方便;缺点:占用空间大、不易读。
Guid的形式如:
06E30891-7157-4CE3-8180-A4D520CC6B51


一些SQL 查询语句


SELECT * from Phonerwork 

 "*" 表示查询表Phonerwork中所有的数据


SELECT Fnumber from Phonerwork 

查询表Phonerwork中列名为Fnumber一列数据,查询多列数据可以在Fnumber后面加逗号加列


名来查询


SELECT id,FNumber from Phonerworkwhere id>5


查询表Phonerwork中列名为id 和 Fnumber的两列数据,查询的限制条件为 id>5的行


SELECT FNumber from Phonerworkgroup by FNumber


查询表Phonerwork中列名为Fnumber 的一列数据,并且把这一列中重复的数据分组


SELECT distinct FNumber from Phonerwork 


查询表Phonerwork中列名为Fnumber 的一列数据,并且把这一列中重复的数据去除


SELECT idfrom Phonerworkorder by id ASC


查询表Phonerwork中列名为id 的一列数据,并且按照id列的数据来进行升序排列,把字段ASC 改为DESC则变位降序排列


SELECT idfrom Phonerworkgroup by idhaving id>20


查询表Phonerwork中列名为id 的一列数据,并且把列id中的重复数据分组,之后根据语句 having id >20 来过滤掉分组后的


id 列的一部分信息


子查询
SELECT id,FNumberFROM Phonerworkwhere id in (select idfrom Phonerworkwhere id<5)



查询表Phonerwork中列名为id和FNumber的两列数据,查询范围是另一个查询
(select id from Phonerwork where id<5)的结果,也就是id小于5


SELECT top 5 id from Phonerwork 


查询表Phonerwork中列名为id的一列数据,取这列数据的前5项做为查询结果


select (case idddwhen 1 then 'Ok'when 2 then 'Ok2'else 'else'end)from Phonerwork2



查询表Phonerwork2 中的iddd列,对这一列的数据做如下处理,当iddd为1的时候把它命名为 'Ok' 当iddd为2的时候把它命名


为'Ok2',剩下的全部命名为 else 
这里也可以这样写
select (case when iddd>5 then 'Ok'when iddd>10 then 'Ok2'else 'else'end)from Phonerwork2

对一个范围的数据进行处理。


暂时写到这里吧,关于SQL 知识还有很多,需要继续学习,希望我的笔记对大家有帮助。

原创粉丝点击