数据库的重要性和作用
(哪里会用到数据库)? where
为软件提供长期保存数据的服务
打开服务列表窗口:开始=》运行=》services.msc=》回车
启动数据库服务的命令:net start mssqlserver
停止数据库服务的命令:net stop mssqlserver
打开企业管理器:sqlwb
名词记忆:
DB:数据库(database)
DBA:数据库管理员(database administrator)
DBMS:数据库管理系统(database manage system)
sa:系统管理员(system administrator)
四种常用数据库:
Sql Server/DB2/oracle/mysql
数据库文件的默认存储位置:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA
数据库的两个必要文件:
.mdf:主数据文件(main data file)
.ldf:事务日志文件(log data file)
.ndf:次要数据文件(Secondary data file)
移动数据库需要做的操作:
分离或者脱机:让数据库文件脱离企业管理器的管理
附加或者联机:让数据库文件重新接受企业管理器的管理
数据库备份:
四个系统数据库:
master model msdb tempdb
建表和建约束
列=》字段
行=》实体(记录)
字符串:varchar(长度)nvarchar(长度)
区别:varchar:长度为字节数
nvarchar:长度为字符数
char:固定长度字符串
小数:float(数据库里面没有double类型)
存放金额的数据类型:money
日期:Datetime
约束的作用:保证数据的完整性
数据完整性:所有数据都是真实有意义的
完整性分类:
实体完整性;(主键)
自定义完整性;(Check约束,唯一约束)
引用完整性;(外键约束)
域完整性;(非空,默认值绑定)
非空约束:限制数据不能为Null
检查约束(check):限制数据必须在自定义范围以内
唯一约束:限制数据不能重复
主键约束:唯一并且非空,可以代表一个实体
外键约束:约束外键表的字段值必须在主键表中存在
选择主键的原则:
最少性,稳定性;
标识列:必须是int类型,系统自动管理,如果某个值被删除,后面的数字继续累加,一般作为主键;
varchar和char类型的区别:
varchar:可变长度,如果定义8个长度,只输入4个字节,省4字节;
char:不可变长度,如果定义8个长度,输入4个字节,剩下4个字节会用空格填充,一般用于长度固定的字段;
外键约束:约束一张表里面的一个字段值必须在另一张表里出现(通常是主键)
四种数据完整性:
实体完整性
域完整性
引用完整性
自定义完整性
插入数据:
insert into 表名(列1,列2...) values (值1,值2...)
insert into 表名 values(值。。。。)
修改数据:
update 表名 set 列1=值1,列2=值2 where 条件
删除数据:
Delete from 表名 where 条件
删除所有数据并重新排列标识
truncate table 表名
逻辑运算符:
并且:and
或者:or
非:not
在两个数之间:
列名 between 数值1 and 数值2
相当于:列名 >=数值1 and 列名<=数值2
查询语法:
select 列名 from 表名 where 条件
为空:
列名 is null
不为空:
列名 is not null
sql里面的不等于符号:<>
查询分为:精确查询和模糊查询(like)
模糊查询: 列名 like '通配符和条件'
四种通配符:
%:任意字符
[]:多个值中取一个
_:一个字符
[^]:不包含某些字符,跟[]相反
in关键字:在。。里面(not in相反)
列名 in (值1,值2....)
排序:order by 列名 [desc(降序)、asc(升序)]
注意:排序的代码永远写在最后面
如果有两个排序字段,不需要写两个order by
order by 列一[desc,asc],列二[desc,asc]
查询前N条记录:
select top N 列名 from 表名 where 条件
总结:
select [top N] 列名 from 表名 [where 条件]
[order by 排序字段]
取别名:
select 列名 [as] 别名,。。。from 表名
聚合函数(分组函数):
max(列名):求最大值
sum(列名):求和
avg(列名):求平均值
min(列名):求最小值
count(*):求数量
分组查询:
select 列名 from 表名 group by 列名
聚合函数做为条件,用having关键字,写在group by的后面
select 【top N】字段名 【as 别名】 from 表名 【where 条件】【group by 字段名】【having 条件】 【order by 排序字段】
四大日期函数:
获取当前时间:getdate()
计算时间差:
datediff(日期部分,开始时间,结束时间)
增加时间:
dateadd(日期部分,增加的值,日期)
获取日期部分:
datepart(日期部份,日期)
字符串函数:
求长度:len(字符串)
截取字符串:
1)left('字符串',个数):从左边截取N个字符
2)right('字符串',个数):从右边截取N个字符
3)substring('字符串',开始位置,个数):从任意地方开始截取N个字符
第二个参数为字符串下标,下标从1开始,第三个参数为要截取的字符个数
替换字符串:
replace(字符串,要替换的字符,替换后的字符)
类型转换:convert(类型,要转换的值)
len(字符串):计算字符串含有多少个字符
left('字符串',字数):从左边开始截取N个字符
right('字符串',字数):从右边开始截取N个字符
substring('字符串',开始位置,个数):
自定义位置截取字符串
替换字符串:replace(字符串,要替换的字符,替换后的字符)
类型转换:convert(类型,要转换的值)作类型转换的
ltrim(字符串):去掉左边空格
rtrim(字符串):去掉右边空格
连接查询:select 列名 from 表一
inner join 表二 on 表一.列一=表二.列二
where 条件
注意:on关键字后面的列一定是公共列 |
|