“黑马程序员”视频学习笔记之数据库基础

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

创建数据库,创建表,设置主键

僧删改查 不仅可以手工完成,还可以用sql语句
(*)sql主要分为DDL(数据定义语句)(建删)、DML(数据操作语句)(更新等)两类。


常用字段类型:
  bit(可选值0,1)、datelime、int、varchar(字符串)、nvarchar(可能含有非英文的字符串);
!varchar、nvarchar和char(n)的区别:char(n)不足长度n的部分用空格填充 
!sql中字符串用单引号。
!sql中关键字大小写不敏感,但字符串值大小写敏感




主键设定有限定:大多数都可以,但不合理。
两种常用主键数据类型:int(或bigint)+标识列(又称自动增长字段);uniqueidentifier(又称Guid、UUID)
标识列:  实现字段自增避免并发问题,用标识列的字段在instrl的时候不用设定主键值。
          将字段的“是标识列”设置为“是”,一个表只能有一个标识列。
guid算法:是一种可以产生唯一标识的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等计算出来,保证每次生成          
          的guid永远不会重复,公元3400年前不会相同。SQL中生成guid的函数是newid()
.net中生成guid的方法:Guid.NewGuid(),返回Guid类型。
(*)int自增优点:占用空间小、无需开发人员干预,易读。     缺点:效率低,数据导入导出很痛苦。
(*)guid   优点:效率高、数据导入导出方便。               缺点:占用空间大,不易读。
(*)业界主流倾向于guig


insert插入时表名后的列名可以省略,但不建议省略。
如插入行中有些字段值不确定,那么insert的时候不指定那些列即可
可以给字段设定默认值,如guid类型主键默认值设定为newid()就会自动生成。很少这么干。






【@】表的建立:
create table 表名(id int NOT NULL,列名 类型 非空,列名 类型)


【@】表的删除:
drop table 表名


【@】数据插入:
普通数据插入:insert into 表名(字符串列明1,列明2) values('字符串数据1',数据2)
插入guid主键:insert into 表名(id,字符串列明2,列明3) values(newid(),'字符串数据2',数据3)
    int 主键:将字段的“是标识列”设置为“是”,一个表只能有一个标识列。


【@】数据更新:
更新一个列:update 表名 set 列名1 = 数据1
更新多个列:update 表名 set 列名1 = 数据1,列名2 = 数据2
更新一部分:update 表名 set 列名1 = 数据1  where 条件(例:列名2=数据2), 
          //用where语句表示只有 (列名2 是 数据2) 的行才会更改,SQL中等于判断用单个=。
where中可使用逻辑运算符:or(相当于C#中的||,或者)、and(并且)、not(非)、<、>、>=、<=、!=(或<>)等  


【@】数据删除:
删除全部数据:delete from 表名
删除部分数据:delete form 表名 where 条件


【@】数据检索:
简单的数据检索:select*from 表名
只检索需要的列:select 字段名 from 表名
                select 列名,列名 from 表名
列别名:        select 字段名 as 别名
where条件检索 :select*from 表名 where 条件
检索不与任何表关联的数据:select 要查内容


】数据汇总:     select 函数(*或列名)from 表名 where 条件
                 SQL聚合函数:count 数量,max 最大,min 最小,avg 平均,sum 总和
       
】数据排序:     select*from 表名 order by 列名 asc            //asc升序;desc降序
                 select*from 表名 order by 列名 asc,列名2 desc //值1相等;按值2排序
                 //有判断条件时, where要在order by 之前
】通配符过滤:   模糊匹配 模糊查询
like:单字符匹配:select*from 表名 where 列名 like'字符串_字符串'                               
                 通配符为半角下划线“_”,即英文的。任意字符开头,剩余部分为“erry”   
     多字符匹配:select*from 表名 where 列名 like'字符串_字符串'  like'%字符串%' 
                 通配符为半角百分号“%”,
】空值处理:     空值即为NELL,表示不知道
查询不知道的数据:select*from 表名 where 列名 is null
                  select*from 表名 where 列名 is not null
】多职匹配:      select*from 表名 where 条件1 or 条件2 or 条件3
                  select*from 表名 where 列名  in (值1,值2,值3)
                  select*from 表名 where 条件1 and 条件2
   between:      select*from 表名 where 列名 between 值1 and 值2;//指定列中 值在值1与值2间的数据
】数据分组:      select 列名,函数 from 表名 group by 列名  //函数例如:count(*);前列名表示是否显示分组的根据
】having语句:    select 列名,函数 from 表名 group by 列名 having 函数  
               ! where中不能使用聚合函数,必须使用having,要位于group by之后,
                  是对分组后信息进行过滤,    
】限制结果集行数:select top3*from 表名 各种条件(排序 过滤语句)  //前三前      【分页】
     例:select top3*from 表名 where 编号列 notin (select top 5 编号列 from 表名 order by 工资列 desc)order by 工资列desc
     //工资从高到低排序检索 从第六名起三人的信息  
】row_number:    2005后增加
】去掉重复数据:   
                //distinct 去除重复项关键字; 消除完全重复的行
】联合结果集:    select 列名1 from 表名1 UNION select 列名1 from 表名2
                //基本原则:每个结果集必须有相同的列数,每个结果集的列必须类型相容。【两表有相应的列】【默认重复数据合并】
  Union all:     同上 union all 同上  【重复行不合并】
】数字函数:    abs():求绝对值
            ceiling():舍入到最大整数。【3.33舍入到4】
              floor():舍入到最小整数。
              round():四舍五入。 【round(数值,精确到位数)据我半径最近的数】
】字符串函数:  len():计算字符串长度。
   lower()、upper():准换小写、大写。
              ltrim():字符串左侧的空格去掉
              rtrim():字符串右侧的空格去掉    【ltrim(rtrim(字符串));去两边】
  【取字符串中部分字符】substring(主字符串,子字符串在主字符串中的起始位置,子字符串的最大长度)
】日期函数:gerdate():取得当前日期
            dateadd(计量单位,增量,待计算日期):计算增加后日期。例:deteadd(day,3,date);三天后日期
            datediff(计量单位,开始日期,结束日期):计算两个日期间的差额。
            datepart(计量单位,date):返回一个日期的特定部分。      
                  
】类型转换函数: cast(表达式 as 数据类型);
                 convert(数据类型,表达式);
】空值处理函数:isnull:  select isnull(要判断是否为空的 列名,‘显示的字符串’)as 要显示的列名 from 表名 
              
*】case函数用法1:判断表达式值 执行不同事件
                  case 要判断的
                  when 值1 then 返回值
                  when 值2 then 返回值
                  else 默认返回值 end            //否则默认返回值
*】case函数用法2:条件范围判断
            例:  select name,
                 {
                  case 
                  when 收入<4000 then 低收入
                  when 收入>4000 then 高收入
                  else 一般般
                  and
                  } as 收入水平
                  from 表名 


【@】索引:   声明目录 经常进行查询的字段 


【@】表连接: 表1 as 别名1 join 表2 as 别名2 on 别名1.列名 = 别名2.列名
     jion
【@】子查询:将查询到得 当做表处理
 单值子查询:返回一行一列的值 
多行单列的子查询:
               
【【@】】SQL2005以后
把查询结果作为子查询
row_number() 内置行号 开窗函数 只能出现于select或order by子句中;
 用子查询来用 ---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima/

你可能感兴趣的:(“黑马程序员”视频学习笔记之数据库基础)