首页 > 代码库 > 数据库2014年6月10日08:17:28

数据库2014年6月10日08:17:28

平时谈到“数据库”可能有两种含义:MSSQLServer、Oracle等某种DBMS(软件);存放一堆数据表的一个分类Catalog(数据库文件)。

SQL----Structured Query Language,结构化查询语言。SQL != SQL server != MS SQL server(MicroSoft)

主键(PrimaryKey)---一个表中每个数据行的唯一标识,是唯一非空的不会有重复值---不能为null---有且仅有一个(不涉及复合主键)。

业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键(推荐)是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。

脱机---软件中存在着数据库文件----通过联机还原,分离---不存在数据库文件---通过附加还原。

数据库的备份和还原: 还原----右击数据库文件---任务,还原数据库----源设备,选取备份文件。*选项中“覆盖现有数据库”一定要勾选

数据类型:bit(Bool类型)数据库中存储的是true和false,sql语句中用1和0代表;DateTime类型在SQL语句中用单引号输入;

char类型 固定长度(空格补充) 不包含中文 最长8000字符
varchar类型 可变长度 不包含中文 最长8000字符
nvarchar类型 可变类型 可含中文 最长4000字符

SQL语句中字符串用单引号括起来,大小写不敏感(关键字+数据库名字+表名+列名)。

SQLserver中生成GUID的函数NEWID(),.NET中生成GUID的方法是 Guid.NewGuid(),返回类型是Guid类型。

【1】insert into 表名 (列1,列2---) values (值1,值2---);列名和values值必须一一对应。

    insert into 表名 values (值1,值2---);省略列名,则values值应该给(除标识列以外)其他列都有对应值(有默认值的,default代替)。

【2】update 表名 set 列名=新值 where 列名=旧值。

【3】delete from 表名 where 列名=某值。-----delete和truncate区别:前者清空过后,但是主键不会从1开始;后者清空数据,还原标识列,从1开始。

【4】drop 表名。------drop和delete区别:drop是删除整个表;delete是清空表中的数据,但是表还在。

【5】select 列名 from 表名 where 判断。------select number as 学号, name as 姓名,age as 年龄 from student:AS是给结果集中的列起个别名

order by---此字句位于select语句的尾部,语序按照一个列或多个列进行排序----默认为升序ASC,(降序为DESC)-----select * from employee order by age DESC,salary ASC;先按年龄从大到小排,年龄相同按工资从低到高排列。

Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等。

WHERE------GROUP BY------HAVING(先后顺序)

WHERE+GROUP BY:是对原始数据进行过滤,在进行分组;GROUP BY+HAVING:对分组后的数据进行过滤。WHERE+GROUP BY+HAVING:select name,sum(salary) from employee WHERE name=‘Bush‘ or name=‘Adas‘ GROUP BY name HAVING sum(salary)>1500,查找员工表中姓名为"Bush"或“Adas”工资超过1500的按姓名排列。

联合结果集:union因为要进行重复值扫描,所以效率地下,因此如果不是确定要合并重复,推荐使用union all。

通配符:必须和LIKE一起使用。单字通配符"_";多字通配符"%",匹配任意次数(0或者多个)出现的任意长度(0或者多个)字符;[]括号内所指定范围内的一个字符-----[ao]代表a与o里二选一;[^]不在括号范围内的一个字符。

null在c#和数据库中的区别 :C#中,一个变量赋值为null,表示变量不指向任意对象;数据库中的null表示不知道,而不是没有。------select * from employee where name is null-----对姓名为null时,用IS关键字。

BETWEEN:在where子句中使用,select * from employee where name between ‘Adas’ and ‘salar‘----------SQLserver会列出姓名介于‘adas’和‘salar’之间并且包括这两个值的人。

IN关键字:IN 操作符允许我们在 WHERE 子句中规定多个值;SELECT * FROM Persons WHERE LastName IN (‘Adams‘,‘Carter‘)-----从表中选取姓氏为 AdamsCarter 的人。

 

DISTINCT:select distinct 列名 from 表名-----去掉重复数据,返回唯一不同的值。