A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© theking 中级黑马   /  2014-11-17 23:11  /  1370 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数据库的重要性和作用
(哪里会用到数据库)?    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关键字后面的列一定是公共列

6 个回复

倒序浏览
这   大神,受教了   
回复 使用道具 举报
受教了!:lol
回复 使用道具 举报
果断顶起。大神啊啊。
回复 使用道具 举报
虽然不懂,给你顶一下,看着好牛牛的样子!
回复 使用道具 举报
受教了。。
回复 使用道具 举报
还会更新吗!就这些吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马