数据库知识2--一般操作

数据库增删改
  插入数据  insert  into 表(列)values(值)  值和列是一一对应的
  insert into 表(列) select 列  union--可以一次行添加多条数据
  insert into 表1(列)select 列 from 表2 
  表示从表2 中将数据插入新创建的表1中
  更新数据  update 表 set 列=值。。。
  可以更新一列,也可以更新多列,也可以后面加where进行限定
  not  and  or优先级为not>and>or  可以通过()来改变优先级
  删除数据  delete from 表  只删除数据 表还在
            drop Table 表   删除数据, 表不在了
   truncate Table 表 只删除数据 表还在
 delete from 表与truncate Table 表名
 都能将数据删除 保留表格式delete删除数据,自动编号不会改变,而truncate会回复默认值,重新设置自动编号
 delete可以根据where条件删除,而truncate则一次清空
 delete效率远远低于truncate
 truncate不会触发delete触发器
 
  约束: 非空约束 主键约束(PK) 唯一约束(UQ) 默认约束(DF) 
         检查约束(CK) 外键约束(FK) 
   SQL语句创建约束
   非空 alter table 表 alter column 列名 类型 not null
   主键 alter table 表 add constraint PF_表名_列名 primary key(列名)
   唯一 alter table 表 add constraint UQ_表名_列名 unique(列名)
   默认 alter table 表 add constraint DF_表名_列名 default('值') for 列名
   检查 alter table 表 add constraint CK_表名_列名 Check(列名表达式)
   外键 alter table 表 add constraint FK_表名_列名 foreign key(列名) references 主键表(列名)
  
  top distinic:top 获取前几行数据  前几行 select top n...;select top n percent...(前%多少)
               dintinic 去除重复项 select distinic * from ...去除重复项,一般表中没有重复项(因为主键不一致)
               一般根据条件针对行去除重复想  select distinic 列名1,列名2 from表名  列可以是一列 也可以多列
 
  聚合函数:max(最大值) min(最小值) sum(总和) avg(平均值) count(行数,记录的条数) 
            聚合函数对null不进行计算
   
  起别名的三种方式:‘待修改’ as 别名;‘待修改’ 别名;‘代修改’=别名
 
  带条件查询:通配符‘%’任意多个字符;‘_’一个任意字符(有且只有一个)当通配符需要当普通字符使用用[],^不能用[],因为^只有在[]是表示通配符的意思
             通配符一般配合like或者not like使用
  空值处理:表示不知道意思,不能用‘=’或‘<>’判断 需要使用is判断

  order by :数据排序 升序asc,降序desc   order by 在sql语句的最后

  group by:分组,没有出现在group by 子句中的列不能放在select语句后的列名列表中(聚合函数除外)

  having:筛选,having只能对组进行过滤 
 
  SQL语句执行顺序:from->where->group by->having->select->order by
  SQL语句格式顺序:select->from->where->group by->having->order by
 
  类型转换:cast(代转字符 as 数据类型)
            convert(数据类型,代转字符)
   
 union:联合结果集,使用union必须相同的列数,且列数是相同类型(至少能够隐式转换),最后输出的集合列数由第一个集合的列名来确定
       在进行联合的时候,union会去除重复项,union要进行重复值扫描,所以效率较低,union all则不会
   
  字符串函数:len('字符串')  :长度;ltrim(),rtrim():去除左右空格 去除两边 rtrim(ltrim());substring('字符串',n):截取n个数,substring('字符串',m,n):从m个数开始截取n个数
 
  日期函数:GETDATE()当前时间;DATEADD(datepart[计量单位],number[增量],dete[日期])增加;DATEDIFF(datepart[计量单位],startdate[开始时间],enddate[结束时间])得到两个日期差值;DATEPART(datepart[计量单位],date[日期])得到日期的特定部分

posted @ 2013-11-18 22:28  郭海静  阅读(200)  评论(0)    收藏  举报