数据库系统基础:
一、数据库:存储数据的仓库
二、数据库能够做什么:
1.存储大量的数据,方便检索和访问。
2.保持数据的信息一致、完整
3.共享和安全
4.通过组合分析,产生新的有用信息。
三、应用程序和数据库的关系
应用程序——》发送一个请求到数据库–》数据库返回操作数据结果
应用程序:
作用:响应操作并显示结果,向数据库请求数据
要求:美观、操作简便
数据库:
作用:存储数据、检索数据、形成新的数据
要求:统一、安全、性能
四、时下流行的数据库:
1.Oracle:产品免费、服务收费
2.SQL Server:版本多,易用性好,只支持windows操作系统
3.DB2:支持多操作系统的使用,使用范围不大
4.Mysql:免费的,使用范围特别广
五、实体:客观存在,可以被描述的事物。
六、数据库表中的行:代表一条记录
数据库表中的列:代表一个字段
七、数据库是由表组成,表是由行(记录)和列(字段)组成。
字段–》记录–》表–》数据库–》服务器
八、数据库数据的操作:添加数据、修改数据、查询数据、删除数据
九、安装数据库。
十、创建数据库:
数据库文件包含:
1.数据文件:后缀是.mdf
2.日志文件:后缀是.ldf
十一、分离数据库:
当数据库需要移动或者删除的时候,就得使用分离
分离数据库的方法:右击数据库–》任务–》分离–》确定
十二、附加数据库:
当从别的地方拷贝数据库到本机时,需要使用附加
附加的方法:右击“数据库”–》附加–》添加数据库文件(mdf)–》确定
用表组织数据:
一、数据库的完整性大多数是由设计的时候引起的。
二、可靠性+准确性=数据完整性
三、数据库的四种完整性约束:
1.实体完整性约束
2.域完整性约束
3.引用完整性约束
4.自定义完整性约束
四、数据库数据的数据类型:
1.char:字符类型,一般用于单个字符的,比如性别
2.varchar:字符串类型,一般用于姓名,身份证号
3.text:长文本类型,一般用于文章等
4.datetime:日期类型,比如出生日期,创建时间
5.数字类型:int和float。
int:整数类型,一般用于年龄
flaot:小数类型,一般用于身高,分数。
6.货币类型:money,一般用于金钱
五、主键
1.一个表的主键只有一列组成
2.尽量选择单个键作为主键
3.尽量选择更新数值较少的列作为主键
用SQL数据操作数据:
一、sql是什么:
1.结构化查询语言
2.在什么情况下使用:
(1)对sqlserver执行所有操作的时候
(2)对程序进行增删改查的时候
3.sql组成:
(1)DML数据操作语言,insert update delete
(2)DCL数据控制语言,grant remoke
(3)DQL数据查询语言,select
(4)DDL数据定义语言,create drop
4.sql 中的运算符:
(1).算术运算符
“+”:两个数相加
“-”:两个数相减
“*”:两个数相乘
“/”: 两个数相除
“%”:两个数相除取余数
(2).赋值运算符
“=”:将一个数或者变量或者表达式赋值给另一个变量。
eg:name=“李四”;
(3).比较运算符
“>”, “<”, “=”, “>=”, “<=”, “!=”(不等于)
(4).逻辑运算符
and:并且
or:或者
not:非
二、T-SQl语句
1.注释:–
2.查询表中的全部数据:
select * from [表名]
3.插入数据:
insert into 表名(列名) values(值);
插入数据的注意事项:
(1)标识列不能显示的插入值。
(2)所有的括号、单引号、逗号都必须是英文的。
(3)列名的个数必须要和值的个数一致。
(4)表里面的列名必须要和插入语句的列名一致。
(5)列名可以省略,但是值的个数必须和列名相对应(除了标识列)
(6)如果字段有默认值,那么在值的地方写default就可以
(7)如果字段的类型是varchar,datetime,char类型时,所对应的值必须要用英文的单引号括起来,如果字段的类型是int,float,所对应的值不需要使用单引号
(8)一定要选择需要操作的数据库(下拉列表里面)
4.附加数据库出现的问题及解决方法:
1.问题:附加时报错。
2.解决方式:
(1)右击放数据库的文件夹--》属性--》只读对勾去掉--》点击安全--》编辑--》设置所有的权限为完全控制。
5.插入数据的错误以及解决方法:
问题:
(1)对象名无效
(2)列与值的数目不匹配
(3)附近有语法错误
解决:
(1)选错数据库
(2)检查写的列与写的值是否一一对应
(3)检查逗号,单引号是不是英文的。
6.修改:
update 表名 set 列='值' where 列='值'
7.删除:
delete from 表名 where 列='值'
数据查询基础:
一、查询流程:
1.客户端–》请求一条查询语句–》数据库–》返回查询结果
二、导出数据库脚本:
1.选中数据库–》右击–》任务–》生成脚本–》下一步–》选择存放路径–》高级–》选择架构和数据–》下一步–》确定。
三、查询的语法:
select 列名
from 表名
where 查询条件表达式
order by 排序方式
四、使用别名查询信息
select 列名 as 别名,列名 as 别名 from 表名
where 查询条件
五、查询空值:
select 列名 from 表名 where 列名 is null
六、查询返回限制的行数(查询前10条记录)
select top 10 列名 from 表名 where 查询条件
七、查询20%的数据
select top 20 percent 列名 from 表名
八、查询排序:
升序:
select 列名 from 表名 order by 列名 asc
降序:
select 列名 from 表名 order by 列名 desc
注意:
1.默认是升序(asc)
2.只能升序和降序数值类型的数据
3.order by必须放在最后
九、在查询中使用的函数:
1.len():返回给定字符串的长度
eg:select len(‘男’),输出1
2.getDate():返回当前系统日期
eg:select getdate(),输出2018-12-6-10:35:156
模糊查询和聚合函数:
一、模糊查询:
1.关键词:like
2._代表:一个字符,eg:like ‘c’,查询的结果是三个字,中间必须是c
3.%代表:多个字符,eg:like ‘%张’,查询的结果是张结尾的,前面可以是任意多个。
4.[]代表:一个指定范围,eg:like [1-2],查询的结果是1-2范围的值
5.[^]代表不在指定范围的记录。
6.between……and:查询已知的两个值之间的未知值。
语法:
select 列名 from 表名 where 列名(分数) between 60 and 90
意思是:查询分数在60-90之间的学生信息
7.使用in在列举值内进行查询:
语法:
select 列名 from 表名 where in(‘值1’,‘值2’)
eg:select * from student where Address in (‘山西吕梁’,‘学生宿舍’)
意思是:只查询地址为山西吕梁的和学生宿舍的学生信息
8.is null:
查询指定列名为空的信息
连接和分组查询:
一、分组查询:
1.语法:select 列名 from 表名 where 条件 group by 分组的列 order by 列名 排序方式(asc/desc)
2.多列分组的语法:
select 列名1,列名2 from 表名 where 条件 group by 分组的列1,分组的列2 order by 列名
3.分组的注意事项:
(1)除聚合函数所在的列之外,from前面的列必须和group by 子句的列一一对应。
(2)order by 后面可以跟聚合函数,eg:order by sum(result) desc,按照总分数降序显示
4.分组筛选:
(1)having:先分组在筛选
(2)语法:
select 列名 from 表名 group by 列名
having 筛选条件
order by 排序方式
(3)查询顺序:
where -->group by -->order by
(4)查询的语法:
select 列名 from 表名 where 条件 group by 分组列 having 筛选列 order by 排序列
二、连接查询:
1.内联接:
语法:select 列名 from 表名1,表名2
select 列名 from 表名1 join 表名2 on 表名1.外键 = 表名2.外键
2.外联接:
需要显示哪个表的全部信息,然后观察这个表在左边还是右边,左边的话用左外链接,右边的话用右外连接
(1)左外联接
查询左表的全部数据
select 列名 from 表1 left join 表2 on 表1.外键=表2.外键
(2)右外联接
查询右表的全部数据
select 列名 from 表1 right join 表2 on 表1.外键=表2.外键