黑马程序员--.Net学习日记——数据库

---------------------- Windows Phone 7手机开发Net培训、期待与您交流! ----------------------

 

黑马程序员--.Net学习日记——数据库

 

数据库中的概念:

    1.Cataiog(分类)(又叫数据库DataBase,表空间TableSpace),不同类的数据应该防倒不同的数据库中.

         (1).便于各个Cataiog进行个性化管理

         (2).避免命名冲突

         (3).安全性更高

    2.Table():书都放在书架上,碗都放在橱柜中,不同类型的资料放到不同的"格子中",将这种区域叫做""(Table).不同的表根据放的数据不同进行空间的优化,找起来也方便.

    3.(Column),字段(Field)

 

主键(PrimaryKey)

    主键就是数据行的唯一表示.不会重复的列才能当主键.一个表可以没有主键,但是会非常难处理,因此没有特殊的理由表都要设定主键.

    主键有两种选择策略:业务主键和逻辑主键.业务主键是使用有业务意义的字段做主键,比如身份证号,银行账号等;逻辑主键试试用没有任何意义的字段做主键.因为很难保证业务主键不会重复(身份证号重复),不会变化(帐号升位),因此推荐用逻辑主键.

 

常用字段类型:bit(可选值0,1),datetime,int,varchar,nvarchar(可能含有中文用nvarchar)

 

SQL语句入门:

      1.SQL语句是和DBMS"交谈"专用的语句,不同DBMS都认SQL语法.

      2.SQL语句字符串用单引号.

      3.SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的.

      4.创建表,删除表不紧可以手工完成,还可以执行SQL语句完成,在自动化部署,数据导入中用的很多,create table T_Person(Id int NOT NULL,Name nvchar(50),Age int NULL)Drop table T_Person1

      5.简单的Insert语句. INSERT INTO T_Person(id,Name,Age)VALUES(1,'Jim',20)

      6.SQL主要分DDL(数据定义语言)DML(数据操作语言)两类.Create Table,Drop Table等属于DDL,Select,Insert等属于DML

 

主键选择

      1.SQLServer中两种常用的主键数据类型:int(blgint)+标识列(又称自动增长字段):uniqueidentifier(又称Guid,UUID)

      2.用标识列实现字段自增可以避免并发等问题,不要开发人员控制自增.用标识列的字段在Insert的时候不用指定主键的值.将字段的"是标识列"设置为"",一个表只能有一个标识列.

      3.Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC,地址,纳秒级时间,芯片ID码等算出来的,这样保证每次生成的Guid都不相同.SQLServer中生成GUID的函数newid(),.NET中生成Guid的方法:Guid.NewGuid(),返回是Guid类型.

      4.Int自增字段的优点:占用空间小,无需开发人员干预,易读;缺点:效率低;数据导入导出的时候很痛苦.

      5.Guid的优点:效率高,数据导入导出方便;缺点:占用空间大,不易读.(倾向于使用Guid)

 

数据插入:

      1.Insert语句可以省略表名后的列名,但是不推荐.

      2.如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可.

      3主键:Insert into Person3(Name,Age)values('Lily',38);

            Insert into Person4(Id,Name,Age)values(Newid(),'Tom',30);

 

数据更新:

      1.更新一个列:UPDATE T_Person Set Age=30

      2.更新多个列:UPDATE T_Person Set Age=30,Name='tom'

      3.更新一部分数据:UPDATE T_Person Set Age=30 where Name='tom',where语句表示只更新Name'tom'的行,注意:SQL中等于判断用单隔=,而不是==.

      4.where中还可以使用复杂的逻辑判断UPDATE T_Person Set Age=30 where Name='tom' or Age<25,or相当于c#中的||(或者).

      5.where中还可以使用其他逻辑运算符:or,and,not,<,>,>=,<==,!=(<>).

 

数据删除:

      1.删除表中全部数据:DELETE from T_Person.

      2.Delete只是删除数据,表还在,Drop Table不同.

      3.Delete也可以带where子句来删除一部分数据:DELETE from T_Person where FAge>20

 

数据检索:

      1.简单的数据检索:select*from T_Person

      2.只检索需要的列:select FNumber from T+Person

      3.列别名:select FNumber AS 编号,FName as 姓名,FAge as Age111 from T_Person

      4.使用where检索符合条件的数据:select FName from T_Person where FSalary<5000.

      5.还可以检索不与任何表关联的数据:select 1+1;select newid();select getdate();

 

通配符过滤:

      1.通配符过滤用like.

      2.单字符匹配的通配符为半角下划线"_",它匹配单个出现的字符.以任意字符开头,剩余部分为"erry":select * from T_Person where FName like '_erry'.

      3.多字符匹配的通配符为半角百分号"%",它匹配任意次数(零或多个)出现的任意字符."k%"匹配以k开头,任意长度的字符串.检索姓名中包含字母"n"的员工信息:select * from T_Person where FName like '%n%'.

 

空值处理:

      1.数据库中,一个列如果没有指定的值,那么值就为null,这个nullC#中的null不同,数据库中的null表示"不知道",而不是表示没有.因此select null+1结果是null,因为不知道"1"的结果还是"不知道".

      2.select*from T_Person where FName=null;

        select*from T_Person where FName!=null;

        都没有任何返回结果,因为数据库也"不知道".

      3.SQL中使用is null,is not null 来进行空值判断:select*from T_Person where FName is null;select*from T_Person where FName is not null;

 

数据分组:

      1.按照年龄进行分组统计各个年龄段的人数:select FAge,Count(*) from T_Person group by Fage

      2.group by子句必须放到where 语句之后

      3.没有出现在GROUP子句中的列是不能放到select语句之后的列名列表中的(聚合函数除外)

 

---------------------- Windows Phone 7手机开发Net培训、期待与您交流! ----------------------

详细请查看:http://net.itheima.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值