数据库知识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[日期])得到日期的特定部分
浙公网安备 33010602011771号