数据库概述:
DBMS(databasemanagement system)数据库管理系统
SQLServer数据库MSSQLServer
Catalog分类(又叫数据库DataBase、表空间Tablespace)
不同的类的数据应该放到不同的数据库中
便于对各个Catalog进行个性化管理
避免命名冲突
安全性更高
Table表
不同类型的资料放到不同的格子中将这种区域叫做表table
不同的表根据放的数据不同进行空间的优化
Column列field字段
SQLSever管理:
创建数据库,创建表,设置主键
SQLServer2008ManagementStudio中:编辑200行。05中:打开表。
常用字段类型:bit(可选值0、1)、datetime、int、varchar、nvarchar(
可能含有中文用nvarchar)
Nvarchar(50)、Nvarchar(MAX)
varchar、nvarchar 和char(n)的区别: char(n)不足长度n的部分用空格
填充。Var:Variable,可变的。
1、主键primkey
主键是数据行的唯一标识,不会重复的列才能当主键,一个表可以没有主键但是会非常难以处理,因此没有特殊的理由表都要设定主键
一般两种数据类型可以设置主键
SQLServer中两种常用的主键数据类型:
int(或bigint)+标识列(又称自动增长字段);
uniqueidentifier(又称Guid、UUID)
用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增。
用标识列的字段在Insert的时候不用指定主键的值。将字段的“是标识列”设置为“是”即可,一个表只能有一个标识列。
SQLServer中生成GUID的函数newid()
.Net中生成Guid的方法:Guid.NewGuid(),返回是Guid类型。
(*)Int自增字段的优点:占用空间小、无需开发人员干预、易读;
缺点:效率低;数据导入导出的时候很痛苦。
(*)Guid的优点:效率高、数据导入导出方便;
缺点:占用空间大、不易读。
业界主流倾向于使用Guid。
表间关联、外键(ForeignKey)
2、SQL语句入门
SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法。
SQL语句中字符串用单引号。
SQL语句是大小写不敏感的,不敏感指的是SQL关键字(包括表明,列名等),字符串值(‘’内部的字符)还是大小写敏感的
创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多
CREATE TABLE T_Person(Id int NOT NULL,Name nvarchar(50),Age int NULL)
Drop table T_Person1
简单的Insert语句。
INSERT INTOT_Person(Id,Name,Age)VALUES(1,'Jim',20)
(*) SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。
Create Table、Drop Table、AlterTable等属于DDL,Select、Insert、Update、Delete等属于DML
3、数据插入(字段)
Insert语句可以省略表名后的列名,但是不推荐。
如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。
可以给字段默认值,如Guid类型主键的默认值设定为newid()就会自动生成。
主键:insert intoPerson3(Name,Age)values('lily',38);
insert into Person4(Id,Name,Age)values(newid(),'tom',30);
4、数据更新
更新一个列:UPDATET_Person SET Age=30
更新多个列:UPDATE T_Person Set Age=30,Name=‘tom’
更新一部分数据:UPDATE T_Person Set Age=30 where Name=‘tom’,
用where语句表示只更新Name是’tom’的行,
注意SQL中等于判断用单个=,而不是==。
Where中还可以使用复杂的逻辑判断
UPDATE T_Person SetAge=30 where Name=‘tom’orAge<25,
or相当于C#中的||(或者)
update Person1 setNickName=N'二十岁'where (Age>20 and Age<30) or(Age=80)
Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等