数据库简介
解决的问题:持久化存储 优化读写 保证数据的有效性
关系型数据库:基于E-R模型 使用sql语言进行操作
分类:文档型 服务型
数据库设计
1.三范式:列不可拆分 唯一标识 引用主键
2.关系及存储:1对1 1对多 多对多
查询
- as 给表取别名
语法:select * from table_name as tn; as可以省略
完成列筛选
语法:select table_name,column查询前n部分的数据
top n column:表示查看前n行
top n percent column:表示查看前百分之几的数据
- 排序:order by column
eg: select top 2 * from table_name order by column asc/desc,column2 desc 多个条件的排序
- 消除重复:distinct
eg: select distinct column from table_name
- 条件查询:写在where后面
between…and 表示一个连续范围内
in 表示在一个非连续范围内
- 模糊查询
用于处理字符串类型的值,运算符包括:like % _ [] ^
%与写在[]中表示本身的含义
在[]表示一个连续范围内可以使用
^写在[]内部的开头语,表示不适用内部的任意字符
- 连接查询
当需要的结果从多张表中取时
内连接:inner join 两表中完全匹配的数据
左外连接:left outer join 两表中完全匹配的数据 左表中特有的数据
右外连接:right outer join 两表中完全匹配的数据 右表中特有的数据
完全外连接:full outer join
语法:select * from table_name1 inner join table_name2 on table_name1.cid=table_name2.cid
- 聚合函数
对数据进行合并
count: select COUNT(*) as count1 from table_name
NULL不做计数
max(min):select max(scorevalue) from table_name
avg:select avg(secorevalue) from subjectinfo inner join scoreinfo on subid=subject.sid where sTitle=’语文’
- 开窗函数 over()
和聚合函数一起使用,将统计信息分布到每一行中去
分组 group by 列名1 列名2
联合查询:列数要一致,列的类型要一样
union/union all/ except/ intersect
在查询结果出显示汇总
- 快速备份
向未有表备份:select 列名 into 备份表名 from 源表名
向已有表备份:insert into table_name(column1) select column1 fron table_name2
- 总结
select distinct top n * from t1 join t2 on…where group by…having…order by
内置函数
- 类型转换函数
cast(expression as date_type): 将任意类型转换到任意类型
convert(date_type,expression[style]) 将任意类型转换到任意类型,如果目标类型是字符串,则可以设置格式 - 字符串函数
ascii,left,right.substring:字符串截取
len,lower,upper,ltrim,rtrim:转大小写 去空格 - 日期函数
getDate,dateAdd,dateDiff,datePart
