数据库笔记1

数据库:Database

Java基础

Database数据库

Java+database  = jdbc java访问数据库的一种技术

Javaweb开发中使用jdbc

对于jdbc的封装:orm框架   hibernate,mybatis,spring+mvc


三种类型的数据库代表:

由小到大:

1、 Mysql,小,开源,免费,主要用于小型项目中。

a) 小型项目的判别:50万行以下

2、 Sqlserver系列,功能比mysql强,但远弱于oracle,主要用于中型项目开发中。

a) 中型项目:50-100万行之间

3、 oracle系列,是现今功能最强的数据库产品,用于大型项目的开发,100万行以上。


JavaDatabase的一些对应关系:

1、 一个数据库对应一个java项目

2、 数据库中的一个目录(模式)对应java中的一个包

3、 一张表对应Java中的一个实体类(并非一一对应)

4、 表中的一列对应java类中的一个字段

5、 表中的每列的数据类型在java中都有相应的类或内置类型对应


数据库对象有多种类型:

1、 数据库,它本身也是一类数据库对象;

2、 表,

3、 约束

4、 视图

5、 函数

6、 存储过程

7、 游标

8、 索引

9、 触发器

10、 …

以上的多种数据库对象信息,都由表来负责管理的,这样的表称为“数据字典”。

以上多种数据库对象中,其中可用数据库信息,是由master数据库中的表sysdatabases负责管理;在整个服务器中,只有这一个表;

其他类型的数据库对象,由所在数据库中的系统表sysobjects负责管理,每个数据库都有自己的sysobjects表;


数据库分为系统数据库和用户数据库,对于系统数据库(4个),如何操作?对于此类数据库中的数据(主要是表),可以查询,但不能做修改,更不能删除!也不要将用户表建在这些库中。

用户数据库是用户根据系统提供的model数据库模型创建的属于自己的数据库,对于此类数据库,可以执行任何的操作,即增、删、改、查的操作。


数据库由以下几部分组成:

1、 数据库主文件

2、 数据库日志文件

3、 数据库辅助文件(可选)

4、 最大值

5、 最小值

6、 文件增长率

一个数据库至少包括两个文件,主文件mdf和日志文件ldf

系统数据库(4个)的存放位置:

C:\Microsoft SQL Server\MSSQL.1\MSSQL\Data

用户数据库可以与系统数据库存放一起,也可以存放到其他盘符,还可以将主文件和日志文件分别存放。

在创建用户数据库之前,必须要检测要建的数据库是否已经存在,如果存在,则不能创建成功。方法,如果检测到数据库存在,则删除之,再建。

如何检测数据库是否存在?

if exists(select name from sysdatabases where name='mydb')

建立一个数据库

create databASE mydb on primary

(

name='mydb_dat',  --逻辑名称

filename='e:\db\mydb.mdf',  --物理名称

size=5Mb, --最小值

maxsize=20mb, --最大值

filegrowth=10% --2mb

)log on

(

name='mydb_log_dat',  --逻辑名称

filename='f:\db\mydb_log.ldf',  --物理名称

size=2Mb, --最小值

maxsize=5mb, --最大值

filegrowth=1mb

)

go

查看数据库信息:利用系统提供的方法sp_helpdb [dbname]

execute sp_helpdb mydb


sqlserver脚本中的注释:

1、 单行注释 –

2、 多行注释  /* 段落注释内容*/


一、 整型类:

1、 bigint,完全等于Java中的long

2、 int,完全等于java中的int

3、 smallint,完全等于Java中的short

4、 tinyint,它相当于Java中的byte类型,但表示的数值范围不同。byte: [-128,127],tinyint:[0,255]

5、 bit,比特类型,这种数据类型在Java中不存在,不但如此,在很多编程语言中都不存在,即使存在(如CC++),也非直接存在。

a) 它表示一个二进制位,即1/8个字节的长度

b) 它只能存储两个数字,0或者1

c) 它的用处在于保存两种状态中的其中一种,而且只能一种。

二、 实型类:

1、 单精度

a) 关键字表示:real

b) 范围与Java中的单精度范围相同

2、 双精度

a) 关键字表示:float

b) 范围类同于Java中的double

三、 时间与日期类型:

datetime/smalldatetime

四、 货币类型:

money/smallmoney

五、 字符类型

1、 单字节字符   char

a) 定长  char(n),它用来表示长度固定的单字节数据(如数字,英文或混合)

b) 变长  varchar(n),长度不固定的列,

c) 超长  text 大量的数据  8000个字符

2、 双字节字符  nchar

a) 定长 nchar(n),用于有中文存在的长度固定的列

b) 变长 nvarchar(n),用于有中文存在长度不固定的列

c) 超长 ntext 4000个中文

六、 唯一性标识符类型

a) uniqueidentifier 唯一性标识

b) 

七、 image类型

a) 图片

b) 流媒体


SQLserver中的运算符问题:

任何一个数据库都是一个功能超强的计算器。

1、 四则运算

+-*/,%

2、 逻辑运算符

and or not

3、 比较运算符

>,<,>=,<=,=,!=,<>(推荐使用这个不等于)

表示某个范围内的运算符:[a,b] between a and b

相当于>=a and


Sqlserver中只有两类变量,

1、 一是全局变量(由服务器已经定义好了,用户可以使用,但不能自定义),全局变量的名称之前用@@标记;

2、 一是用户自定义的变量,称为局部变量,用户只能定义局部变量。定义的局部变量只在定义它的代码块中有效。局部变量的名称之前用@标记。

局部变量的使用范围:

1、 Sql代码块

2、 函数中

3、 存储过程中

作一个简单的代码块,完成:定义一个局部变量,给这个变量赋值,并且输出。

/*

declare  声明局部变量

set/select  给局部变量赋值

set 一次只能给一个局部变量赋值

select可以一次给多个局部变量赋值

*/

sqlserver中的循环,它只支持一种循环就是while循环;

格式:

while   条件

begin

//…

end


对于表,必须了解的知识:

1、 表是一种数据库对象,而且在数据库中它是最重要的对象,所谓操作数据库,主要是操作表;

2、 通常来说,表的结构由列组成,在一张表中,列名不能重复;

3、 表中内容由行记录表示,一张表中的行记录为0行到多行;

4、 从规范上说,无论表中有多少行记录,没有任何两行记录是重复的;

5、 表中的每列数据都有自己的固定数据类型;


为了增强表的安全性,需要给表添加各种约束。

约束,简单就是“限制”。这里的约束是为了增加表的安全性,在表上加的约束越多,这个表就越安全。

约束类型:

1、 非空/可空

2、 主键约束

3、 唯一性约束

4、 检查约束

5、 默认约束

6、 外键约束(用于多表之间)

为了增强表的安全性(在数据库中创建的用户表必须安全),需要对表中的每列数进行约束。

约束方式有两种:

1、 建表时设置约束

2、 建表后追加约束

当应用程序访问数据库时,还要注意的是,如果是数据库设计方面的操作,一定要在数据库中完成,而不能借用其他形式(如在应用程序中操作);

单表的五类约束:

多表的一类约束:

第一类约束:可空、非空约束

null,默认可空,用来约束列的,标明这列数据可有可无;

not null,非空,用来约束列的,标明这列数据必须有;


第二类单表约束:

主键约束:primary key

它的作用是用来标记行的唯一性,即某行记录与其他所有行记录不同。

要求对于任何一个表,都要设计主键约束,而且一个表中只有一个主键约束。

对于表中的多列,如何选择主键约束到哪一列上?

按照生活中的实际逻辑关系进行选择。

表中作为主键的列,可以是单列,也可以是多列(称为复合主键或联合主键),在sqlserver中不建议使用复合主键。

约束的要素:

1、 约束名称,可以由用户定义,如果用户不定义,则由服务器自动命名;

2、 约束类型


主键列的几种形式:

1、 字符型主键列数据,其内容需要用户输入,无论是否包括中文;

a) 如果不包括中文,则使用单字节字符编码

b) 如果数据中有中文存在,则一定要使用双字节编码

c) 如果是变长的数据,也以按照以上两点执行。

2、 整数自增型数据作为主键

a) sqlserver中的自增属性,此技术在mysql(increment)oracle(sequence)也都存在;用法为提供一个种子和一个增量,每添加一行记录,此列就会增大或减小。

b) 在数据值数据中,只有整型数据可以作主键,实数不行。

c) 整数作主键,只是唯一非空即可,不一定非自增。


主键约束的另一种操作形式,建表后向表中追加。

如果表中已经存在了主键约束,就不能继续向表中追加了;当追加约束时,如果表中已经有了记录,如果记录中有不符合主键约束的条件,仍然追加不上。

向表中追加约束的过程,相当于修改了表的结构,使用关键字alter 


批量插入记录:

将提供的数据,将其存入一个文本文件f:/data.sql文本中,内容如下:

表已存在,现在将数据文件中的数据批量导入到表中。

bulk insert emp from 'f:/data.sql'

go

select * from emp

如果文本中的数据列与列之间不是用默认的TAB键间隔,是其他字符,则使用bulk insert命令中更全面的部分:

假如此时的文件内容中,列与列之间的间隔为分号:

此时使用批量插入命令:

bulk insert emp from 'f:/data.sql'

with

(

fieldterminator=';',

rowterminator='\n'

)









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值