sql server:是微软公司的产品
oracle:是甲骨文公司的产品
DB2:数据核心又称DB2通用服务器
Mysql:是一种开发源代码的关系型数据库管理系统
6.2.1:实体和记录
实体:就是客观存在的事物
记录:每一行对应的实体,在数据库中,通常叫做记录
6.2.2:数据库和数据库表
数据表:不同类型组织在一起,形成了数据库表,也可以说表示实体的集合,用来存储数据。
数据库:并不是简单地存储这些实体的,还有实体的关系,这种关系要数据库来表示,关系是数据库的一部分
6.2.3:数据库管理系统和数据库系统
数据库管理系统:是系统软件,由一个相互关联的数据集合和一组访问数据构成。这个数据集合称为数据库,包含了很多有用信息,数据库管理系统是基本目标是提供一个有效的存储数据的环境,维护数据库。访问数据库信息。
数据库系统:是一个实际可运行的系统,可以对系统数据存储,维护,信用!
6.2.4:数据冗余和数据库完整性
数据冗余:数据重复现象
数据完整性:指数据库数据的准确性
新建数据库连接:文件----连接对象资源管理器
服务器下拉框选择已经连接的服务器
选择身份验证方式
6.3.2:新建数据库登录名
安全性—登录名----新建登录名
输入密码,登录名-指定数据库
赋予操作限权
6.5.1:创建数据库
数据库文件
事物日志文件
文件组
步骤:选择新建数据库---输入名字—设置参数
6.5.3:数据库的管理和维护
分离和附加数据库
分离:右击数据库---任务 ---分离
附加:数据库右击—附加----然后添加
备份和还原:
备份:任务---备份----填写数据
还原:数据库右击—还原---目标数据库---设置位置
收缩数据库:
属性—选项----自动收缩
7.1.1:数据的完整性
检验每行数据是否符合要求
检验每列数据是否符合要求
1:实体完整性:
实体完整性:要求每行数据都反应不同的实体,不能存在相同的数据行 通过索引,唯一约束,主键约束或标识列可以实现实体完整性
域完整性:域完整性指给指定列输入有效性。
引用完整性约束:在输入或删除时,引用完整性约束保持表之间的定义关系
自定义完整性约束:用户自定义完整性来定义的规则
7.1.2:主键和外键
主键:如果在存储了很多行时,如何判断表中没有重复的数据行,这时需要的列,这个列的值用来标识表中的每一行,用于强制表实体完整性,这样的列就是主键。
一个表只能一个主键,并且不允许为空
外键:外键就是用来和主键建立引用关系,相对主表,就是从表的列,这个值要求与主键想对应,外键用来引用完整性,一个表可以有多个外键。
7.2.1:在数据库中创建表
步骤:单机数据库的表节点—奖显示数据表
7.2.2:数据类型
二进制数据类型
用来储存非字符的数据
Binary。Varbinary。image
固定长度二进制
可变长度二进制
储存图像
文本数据类型
字符数据包括任意字母,符号或数字
Char,varchar,nchar,nvarchar,text,ntext
固定长度非unicode字符
可变长度非unicode字符
固定长度unicode字符
可变长度unicode字符
储存长文本信息
储存可变长度的文本
日期和时间数据类型
用于储存日期
Datetime
日期
数字数据类型
数字,正数,负数,分数
Int,smallint,tinyint,bigint,float,real
整数,浮点型
货币数据类型
储存货币值
Money
金钱
Bit数据类型
是/否
Bit
布尔类型
7.3.1:书否允许为空
数据库书否允许为空是一项约束,如果该列为空,则输入这行的时候,这一项可以不输入
7.3.2:建立主键
选择列---右击---然后设置主键(有个钥匙说明成功)
默认值:在不输入的情况下,指点的值!!
7.3.3标识列:
添加了标识列,就可以实现自增,要有种子和标识增量
7.5.1:如何建立标间的关系
在设计表的时候,可以添加关系(右键)
单击表和列最右侧,弹出建立关系,及主键对话框,
选择表,主键列对应的外键列,单击确定,并保存结构,这样就确立了关系
Check约束:用来控制输入的值得范围的,(如果输入不在范围就报错)
右击数据库表,右击删除(如果有建立的关系,一定要先删除从表的数据,在删主表的数据)
数据需要一套指令集,能够识别指令,执行相应的操作并微程序提供数据。
Sql语言:是针对数据库的一门语言,他可以创建数据库,数据表,可以进行增 删 改 插,可以创建视图,存储过程
DML 用来插入,修改,删除,数据库,(关键词:insert,update,delete)
DDL:用来建立数据库,数据库对象和定义其列,以create完成指令,如create table(建表)
DQL用来查询数据库的,如SELECt(查询关键词)
DCL用来控制数据库组件许可
+
加
-
减
*
乘
/
取商
%
取余
=
赋值运算符,等于
=
比较运算符
>
大于
<
小于
>=
大于等于
<=
小于等于
<>
不等于
And
并且
Or
或者
Not
逻辑运算符 不是
语法:insert 【into】 表名 (列名) values(列值)
Insert select(必须先创建表)
语法:insert into 新表名(列名) select 列名(旧表中的列)1,2,3 from 旧表
Select into (会自动创建表)
Select 旧表的列1,列2,列3 into 新表 from 旧表
插入标识列: select identity(数据类型,种子,增长量) as 别名 into 新表 from 旧表
通过Union 插入多条数据
Insert 表名(列名)
Select 列值 union
Select 列值 union
Select 列值 union
最后一个不要union
Update 表名 set 列名=值 [where 条件]
1:使用DELETE删除数据
语法:DELETE 【from】 表名 【where 条件】
2:使用truncate + table +表名 彻底删除
数据在接收查询请求时,可以理解为逐行判断,判断是否符合查询条件,如果符合,就抽取出来,形成一个类似于表的结构,这就是记录集
9.1.2:使用select查询
语法:select 列名(或者*全部) from 表名 where +条件 order by +列名(asc/desc)
查询所有:select * from 表名
查询部分列:select 列名1,列名2,from 表名 where +条件
在查询中取别名:select 列 as +别名 列的别名
在查询中取别名:select 表 as +别名 表的别名
查询空值:select 列名 from 表 where 列名(另一个) is null
查询中使用常量:select 姓名=Sname ,地址=address as 学校 from 表名
查询返回的行数:select top 5 name,address from 表 where sex=0
9.2.1:如何使用order by
Order by+列名 desc /asc
Charindex
查找指定字符串其始位置
Select charindex (‘值’,字符串,1)返回数字
Len
返回字符串长度
Select len (字符串)
Ltrim
清除左空格
Select trim (字符串)
Ritrim
清除右空格
Select ritrim (字符串
Right
重右边截取字符串
Select right(字符串,3)(3表示截取长度)
Replace
替换一个字符串的字符
Selct replace (字符串,替换额字符,替换为那个字符)
Stuff
在字符串中删除一定长度,在该文置插入另一个
Select stuff(之前的很字符串,替换的坐标,替换的长度,替换为什么)
Getedate()
取得当前系统时间
Select getdate()
Dateadd()
Datediff
将制定的值添加到日期的指定日期后面
Select date (mm,4,日期
返回:)相当于月份增加4,最后返回日期
Datename
两个日期指定位置的差
Select datediff(mm,日期一,当前日期)
dateprat
日期以字符串的形式显示
Select datename(dw,日期。返回日期的形式(dw,表示周))
日期中指定的部分显示出来
Select datepart (day,日期),返回 日
Rand
返回0~1的随机数
Select rand()
Abs
取绝对值
Select abs(数值)
Celing
向上取整
Floor
向下取整
Power
去表达式的幂值
Select power(5,2) 五的二次方
Round
将表达式四舍五入
Sign
正数取1,负数取-1,0取0
Select sign (-23)返回-1
Sqrt
取浮点的平方根
Select sort(9) 返回3
_
输入一个字符
A like ‘C_’ cs/cd 都符合
%
输入任意长度
B like ‘o%’ const/coke 都符合
[ ]
括号中表示范围值
C like ‘9wo[1-2]’ 9wo1/9wo2 f符合
[^ ]
不在 括号里面
D like ‘9w0[^1-2]’ 9w03/9wo7符合
[01]
表示值是0或者1
C like ‘[01]’,
例:select * from student where sname like ‘张%’ 表示后面任意
例:select * from student where sname like ‘%张%’ 只要有张字符就合法
Select * from student where sex like ‘[01]’, 表示性别可以选择0 或者 1
In来进行匹配
Select * from student where gradeId in (“0” , ”1”), 表示gradeId的值是0或则1都符合条件
Select * from scroe where score (not) between 60 and 80
使用in在列举值中查询
例:select sname as 学生姓名,from student where address in (’北京’,’上海’,’广州’) order by address
(group by)用于对列进行分组,前面必须先select 后面有列(此列),才能使用 group by 加此列
Having也是相当于where条件关键词:但having用于使用了聚合函数的表达式进行加条件 having +用于聚合函数使用的表达式(条件)
Sum函数
SUM(列名) 返回一个值,返回的是此列名的所有值的和
AVG()函数
AVG(列名) 返回的是此列的所有的值的平均值
MAX() 和 MIN()函数
max返回此列所有值得最大值,min返回此列所有值得最小值
分组查询就是把列进行不同值得分组,然后在分组的基础上分开查询! 分组查询一般结合着聚合函数一起使用!
例子(语法):select couseID ,(第二个分组列) AVG(Score) as 别名 from 表名 group by couseID,(第二个分组列)
注意:如果是多分列的话,直接在couseID后面和group by 后面的cousrID加列就行了
如果使用了group by 关键词查询,在select 后面指定的列是有限的,允许:
要分组的列
值得表达式 :如聚合函数
Having和where条件类似,不过having条件只能用于group by 分组过后进行加条件
顺序:(where group by having)
内连接查询
内连接查询一般用于两个表有朱外键关系的表,(更具表中的共同的列匹配)
语法1:select 列,列 from 表名,表名 where 表.列名=表.列名(两个列有朱外键关系)
语法2:select 列,列 from 表名 inner join 表名 on表.列名=表.列名(两个列有朱外键关系)
(如果是多个表,直接在列后面加,或者在后面加inner join on 条件)
外连接查询
外连接查询至少返回表中的所有记录,根据匹配的有选择的返回另一章表的记录
(一般,如果主表中有的记录可能没有,也会以null的形式返回,一主表为中心,返回主表那么多条数据)
左外链接:
语法:select 列,列 from 表名 left join 表名 on表.列名=表.列名(两个列有朱外键关系)
右外链接:
语法:select 列,列 from 表名 right join 表名 on表.列名=表.列名(两个列有朱外键关系)
(一般以from后面的表为主表)外连接查询,以主表为中心,返回主表那么多条数据你,即使有的数据可能没有,以null显示
如果要给列的值另去别名(例如要把性别为0或1变成男或女)
u Case when 列 =值 then ‘别名值’ when 列 =值 then ‘别名值’ end
ADO.Framwork组件:NET.Framework数据库提供 程序专门的数据处理及快速地只进,只能访问数据设计的组件.使用它可以连接数据源,执行命令和检索结果,直接对数据源进行操作,.
DataSet:是专门为独立任何数据源的数据访问而设计的.使用它,可以不必直接和数据源打交道,大批量的独立操作,也可以将数据绑定在空件上.
ADO.Framwork数据提供包含量访问各种数据库的对象,它是和数据类型有关的,目前有四种类型的数据提供程序:
导入命名空间:Using system.Data.SqlClient 才能使用数据库相关的东西
Connetion
建立数据源的连接功能
Commend
对数据库执行命令(比如sql语句)
DataReader
从数据源中读取只进且只读的数据源
DateAdpter
用数据源填充DateSet并解析更新
导入命名空间:using System Data.sqlclient
Connection对象::是NET.Framwork数据提供程序核心对象之一,它的作用是建立应用程序与数据库的连接
Connection对象的常用属性和方法
属性
说明
ConnectionString
设置/获取应用程序连接数据库的连接字符串
方法
说明
Void open()
使用connectionString属性打开数据库连接
Viod Close()
关闭数据库连接
建立数据库与应用程序建立联系三步走:
- 定义连接字符串(不同的数据库连接,格式不同)
- Data Source =服务名;Initial CataLog=数据库; user id =用户名; pwd=密码
- 创建Connection对象 使用定义好的字符串创建Connection对象.
- 打开与数据库的连接:调用Connection对象的Open() 方法打开数据库连接. Connection.open();
Try-catch-finally:
Try:一般把容易出现问题的代码的语句放在try结构里面.
Catch:可以补货异常,在catch(exaption e) ------输出e.message
Finally:一定会执行的代码,一般把关闭数据库连接的代码放在里面
例子:SqlCommend commend=new sqlcommend(string sql, sqlconnection conn);
Commend对象的主要属性和方法
属性
说明
Connection
Commend对象使用数据库连接
CommandText
执行sql语句
方法
说明
IntExcuteNonQuery()
执行不返回的语句,如增,删,改
sqlDataReader ExcuteReader()
执行sql语句,返回dataReader对象,用于查询
Object ExcuteScalar()
返回单个值,,如执行count(*),返回首行的第一列
创建:SringBuffer stb=new StringBuffer();
例子: Stb.Append(“hello”)---------stb.Append(“world”)
可以节省空间,应为在后面用AppendLine追加字符串的时候不会从新创建空间
String Buffer常用的属性和方法
属性
说明
Capacity
获取或设置可包含在当前对象所分配的内存中的最大字符个数
Lenth
获取当前对象长度
方法
说明
String Budffer AppendFroma(string fromat,object arg0,object arg1)
添加特点格式的字符串
StringBuffer Insert (int index,string Value
在指定的位置插入指定的字符串
String Buffer Append (string value)
在尾部追加字符串
Remove (int startInedx,int length)
移除指定字符串
To.String()
Z转化为字符串格式的字符
Commend对象:ExcuteReader()方法,返回的是dataReader对象,通过DataReader就可以从据库读取多条数据了.
ADO.NET的DataReader对象可以从数据库中检索,只读,只进的数据流,每次从数据源中提取一条记录!
SqlDataReader reader =c ommend.ExcuteReader();
DataReader对象的主要属性和方法
属性
说明
HasRows
判断是否读到记录,reader.HasRows这个会返回一个布尔类型的值
FieldCount
当前的行数
方法
说明
Bool Read()
Reader.reader() 读取数据库中的记录,返回true/false
Void Colse()
关闭DataReader对象
DataReader对象的用法
创建一个DataReader对象需要调用Commend对象的ExcuteReader() 方法,返回值是一个DataReader对象,可以调用Reader()方法读取一行记录
步骤:
- 创建Commend对象
- 调用Commend的对象ExecuteReader方法返回一个DataReader对象.假设已创建一个Commend对象,名为commend,
- 调用Datareader的Reader()方法逐行读取结果集的记录,若能读取到数据,则返回true,否则返回false----- dataReader.Reader();
- 读取当前行的某一列的数据. 象数组一样,用方括号一样来读取一列的值,如(Type) Reader[“StudentName”];
例:(string)dataReader[“StudentName”];
- 关闭DataReader对象,调用它的Close()方法.
DataReader.Close()
Return comm.ExcuteReader(CommendBEhavior.CloseConnection)
如果在()里面加了CommendBEhavior.CloseConnection如果关闭了这个reader.Close() , conn.Close()也将关闭了
EXcuteNonQuery() 此方法是用来进行增,删,改 用comm. EXcuteNonQuery()方法,
15.3:commend对象的ExcuteNonQuery()方法用于执行指定的sql语句,如update,dalete,它返回的是受影响的记录行数,现在使用Commend对象的ExcuteNonquery();
步骤:
- 创建Connection对象Conn.
- 编写要执行的sql语句.
- 创建Commend对象
- 执行ExcuteNonquery() 注意:完成操作后不要忘记忘记关闭了conn对象.
- 根据ExcuteNonquery() 方法的返回值进行后续的处理,如果返回值小于或等于0,说明没有记录影响!!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/69330.html