数据库基础知识总结

1.基本术语:

分类(Catalog):表空间(TableSpace)和数据库(DataBase)
表(Table)
列(Column)
字段(Field)

2.设置主键:
业务主键和逻辑主键   推荐使用逻辑主键。

业务主键:使用有业务意义的字段做主键,比如身份证号,银行账号等,难以保证没有重复。
逻辑主键:使用没有任何业务意义的字段做主键,完全给程序看的,比如序号,流水号。

3.表间关联、外键(ForeignKey):用于表设计,合理设计。外键约束,对于维护数据完整性数据一致性有重大作用。

外键约束:

 缺点:对性能影响比较大

 优点:操作方便

是否使用外键:

      对性能要求低、安全控制高的大型系统,使用外键约束,数据安全性主要由数据库控制。

     海量数据、高性能系统,不适用外键约束,安全性有程序控制。

    小型系统根据性能和便捷性进行权衡。


推荐:使用无意义的逻辑主键,只要主键和索引,不使用任何外键约束,必要时再使用。


4.

MS SQL Server 2005/2008


4.1数据库的表格数据类型:

Var:variable,可变的

bit  位,只能是0/1
char(n)  n个字符,不足长度n的部分用空格填充
int  32位整数
bigint 64位大整数
varchar(MAX)  无限长的英文字符串,存一篇文章
varchar(n)  n个字符长的英文字符串

nvarchar(MAX)  无限长的中文字符串,存一篇文章
nvarchar(n)  可以存中文等。含中文的字段都用nvarchar


4.2  SQL语言


    4.2.1     SQL语句中字符串用单引号
    4.2.2     SQL关键字、表名、字段等不区分大小写,但是字符串值大小写敏感。
   4. 2.3     SQL包括DDL(数据定义语言)和DML (数据操作语言)两类。

   4.2.4      自动增长:

(3)标识规范:标识列设置为是,并设置增量=k,自动增长k
(4)使用Guid算法产生唯一标识。guid效率高,导入导出方便,但是占用空间大。业界倾向于这个。

SQL server中生成guid的函数时newid():  select newid()
.Net中生成guid的方法是Guid.NewGuid(),返回是guid类型:Guid id=Guid.NewGuid();

int自动增长:占用有点小,易读,但是效率低,而且数据导入和导出的时候麻烦。
guid标识:效率高,数据导入和导出的时候方便,但是占用空间大,不易读懂。全部主键和外键都用guid,可能占用整个表空间的20%-40%


5. 

SQL语句的通配符


通配符过滤使用like关键字

5.1

单字符匹配 用下划线“_”,匹配单个出现的字符。

select * from table1 where name like '_erry'
//匹配以任意字符开头,剩余部分为“erry”

5.2

多字符匹配 用百分号“%”,匹配任意次数(0次或多次)出现的任意字符。

'k%'匹配以k开头,任意长度的字符串。
‘%n%’ 匹配包含有字符n的记录



6.

SQL的常用函数


newid()  //返回一个新的guid值
abs() //求绝对值  abs(-3)=3
ceiling() //天花板   舍入到最大整数 ceiling(3.14)=4
floor() //地板   舍入到最小整数floor(3.14)=3
round() //半径   四舍五入  round(3.14,3)  保留精度为3位
len() //计算字符串长度  len('abc')=3  len(name)
lower()  //转小写
upper()  //转大写
rtrim()  //字符串右侧的空格去掉
ltrim()  //字符串左侧的空格去掉
//没有trim()函数:去掉字符串的左右两端的空格,ltrim(rtrim(string))
substring(string,start_position,length)//截取字符串

getdate()  //取得当前日期
dateadd(datepart,number,date) //计算增加后日期值
   dateadd(day,3,getdate())  //3天后的日期
   参数datepart可选:year,month,day,hour,hh,...
datediff(datepart,start_date,end_date) //计算两个日期的差值
datepart(datepart,date)  //返回一个日期的特定部分



类型转换函数

cast(expression as data_type)
convert(data_type,expression)

select cast('123' as int),cast('2008-08-08' as datetime),
convert(datetime,'2010-01-01'),convert(nvarchar(50),'123得')



空值处理函数
isnull(expression,value) //exp不空则返回exp,否则返回value
    isnull(name,'佚名') //如果name字段为null,则写为‘佚名’



case函数 :单值判断
</pre><p><pre name="code" class="sql">case expression
when exp1 then returnvalue1
when exp2 then returnvalue2
when exp3 then returnvalue3

//例子1:
select name,
(case score
when '1' then ‘第1名’
when '2' then ‘第2名’
when '3' then ‘第3名’
)
from user;

//例子2:
select name,
(
case
when salary<2000 then '低收入'
when salary>=2000 and salary<=5000 then '中等收入'
else '高收入'
end
)
as 收入水平
from user;



7.索引


全表扫描:效率最差,线性扫描全表

创建索引的方式:

添加索引的原则:只在经常检索的字段上(where子句)创建索引。

索引占用空间,insert、update和delete都要更新索引,影响速度。

(*)操作:有时候索引会失效,导致检索不走索引,而走全表扫描,比如like,函数、类型转换等等。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值