验收学生的时候师父问了我好多关于数据库的知识,还真是一问三不知呀!只能下来查一下啦!
一、Char nchar varchar nvarchar 的联系与区别
链接中的文章给出了详细的解释和区别
http://www.cnblogs.com/mekong/archive/2009/04/17/1437996.html
http://www.cnblogs.com/14lcj/archive/2012/07/08/2581234.html
联系:这四种都是字符型数据类型
区别:
是否有前缀var
是否定长,char是定长的,例如:char(8)就算只输入一个字节所占的空间也是8个字节;而vchar的存储空间是可变的,即输入几个字节就占几个字节的的空间。
是否有前缀n
有前缀n的表示可以是汉字字符即使用unicode的数据类型,而不带n则只能是英文或数字即ANSI数据类型
注意:ANSI主要是以单字节来存储数据,一般适合英文。而我们常用的汉字需要用两个字节来存储,所以就要使用unicode的数据类型,不然读取出来的数据可能会乱码。
二、主键和外键
1.主键:
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
例如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
注意:成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
2.外键:
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。
3.主键、外键和索引的区别
主键
外键
索引
定义:
唯一标识一条记录,不能有重复的,不允许为空
表的外键是另一表的主键, 外键可以有重复的, 可以是空值
该字段没有重复值,但可以有一个空值
作用:
用来保证数据完整性
用来和其他表建立联系用的
是提高查询排序的速度
个数:
主键只能有一个
一个表可以有多个外键
一个表可以有多个惟一索引
4.怎样在已经存在的表中设置主键
用
SQL
语句:
alter
table
表名
add
constraint
[
主键名称
] primary
key(
字段
)
可视化界面:选择表中要设为主键的列,右击设为主键
三、
Null
值
空 (NULL)值:空值一般表示数据未知、不适用或将在以后添加数据。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。
例如,客户的中间名首字母在客户下定单时可能不知道
Null在数据库中表示不知道的数据,主要有3种意思:
1)知道数据存在,但不知道具体值.
2)不知道数据是否存在.
3)数据不存在.
四、数据库的备份还原和导入导出的区别
1.备份还原:这个操作是对数据库的维护,我们把数据库备份好,当数 据库的某一部分发生错误是就可以将我们原来的备份的数据库进行还原。也可以对某一时间点进行还原。
2.导入导出:通过数据引擎导入导出数据库数据,可以实现不同类型的数据库系统的数据转换。
3.复制数据库:直接备份数据物理文件
五、数据库表头和表体
1.表头:数据库表的结构,包括字段名,字段类型和长度,如下图
2.表体:表中的数据
3.下面是一些命名规则和设计规范,整理的比较全面
六、简单SQL语句类型
(1)数据记录筛选:
sql="select * from数据表 where字段名=字段值 order by字段名 [desc]"
sql="select * from数据表 where字段名 like '%字段值%' order by字段名 [desc]"
sql="select top 10 * from数据表 where字段名 order by字段名 [desc]"
sql="select * from数据表 where字段名 in ('值1','值2','值3')"
sql="select * from数据表 where字段名 between值1 and值2"
(2)更新数据记录:
sql="update数据表set字段名=字段值 where条件表达式"
sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式" (3)删除数据记录:
sql="delete from数据表where条件表达式"
sql="delete from数据表"(将数据表所有记录删除)
(4)添加数据记录:
sql="insert into数据表(字段1,字段2,字段3…) values (值1,值2,值3…)"
sql="insert into目标数据表select * from源数据表" (把源数据表的记录添加到目标数据表)
(5)数据记录统计函数:
AVG(字段名)得出一个表格栏平均值
COUNT(*¦字段名)对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名)取得一个表格栏最大的值
MIN(字段名)取得一个表格栏最小的值
SUM(字段名)把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名)as别名 from数据表 where条件表达式"
set rs=conn.excute(sql)
用 rs("别名")获取统计的值,其它函数运用同上。
查询去除重复值:select distinct * from table1
(5)数据表的建立和删除:
CREATE TABLE数据表名称(字段1类型1(长度),字段2类型2(长度)…… )