数据库是如何解决数据存储问题的
1、表的相关数据
字段
一个事务的某一个的特征
记录
字段的组合 表示的是一个具体的事物
主键
能够唯一标识表中的一条记录
特点:1—>不能重复、2—>主键不能为空,不允许为null
外键
能够把事务和事务产生联系
2、选择什么样的列作为主键
1、不允许为空的列
2、没有重复的列
3、与实际业务没有关系的列 (逻辑主键)
4、稳定的列(列中保存的数据不经常改变)
5、选择单列作为主键(当通过多列共同唯一标识表中的一记录时候,此时可以选择多列组成一个主键,这种主键叫做:组合主键、复合主键、联合主键)一般不推荐使用组合主键
6、尽量选择数字类型作为主键,不要选择字符串,或者数据类型比较大的列作为主键。(选择比较小的列作为主键)
注意:
当创建完毕一张表的时候,可以不设主键吗?可以。但是建议每张表都应该有一个主键
三、SQL Server中常用的数据类型
1、image类型,用来存储byte[]
2、字符串类型
char nchar varchar nvarchar
text ntext varchar(max) nvarchar(max)
以上这些数据都是表示字符串
带n和不带n的区别:
char(2) 表示:可以存储2个子节。例如:ab,12,赵
不带n的数据类型,存储中文等双字节字符,占用2个子节,存储英文,数字等每字符一个1个子节nchar(2) 表示:可以存储两个字符,每个字符占用两个子节
无论存储中文、英文、数字等,每个字符都是占用2个子节。
注意:不带n的这些数据类型,长度最长可与i设置8000,而带n的这些数据类型,长度可以设置为4000
带var的和不带var的区别:
比如:
varchar nvarchar char nchar
varchar(10)
带var的表示的是:可变长度,会根据实际存储的数据的大小动态的重新分配存储空间,相对来说节省存储空间
char(10)
不带var的表示的是:固定长度,存储1字符也是要占用10个字节的,会自动补9个空格
10:表示最多10个子节,存储的数据超过了10个子节,那么无论是固定长度还是可变长度都会报错的。
四、脚本操作
-》不区分大小写,字符串使用单引号,末尾不需要加分号
-》按照功能分类:
DDL:数据定义语言,用于进行各种数据库对象的创建,主要操作包括create、alter、drop
DML:数据管理语言,用于对表数据的添加、修改、删除、查询,主键操作包括insert、 update、 delete、select
DCL:数据控制语言,用于进行权限分配等
五、数据表的操作
简单的查询: select * from 表名
插入数据: insert into 表名(列名) values(值)
说明1:要求值的列名与值要位置对应
说明2:如果所有列要插入值,可以省略列名部分
扩展:一次性增加多行,可以直接在values后面拼接多个数据
修改数据库:update 表名 set 列名1=值2,列名1=值2,…where…
-》删除数据:delete from 表名 where …
清空:truncate table 表名
说明:from关键字可以省略不写
通常实现:逻辑删除,物理删除
-》常用辅助命令及快捷键
set statistics time on/off:在消息栏显示详细执行时间
ctrl+e 执行
ctrl+r 隐藏消息栏
ctrl+l 计划任务,对sql语句进行分析-》作业:科目表(编号,标题)
成绩表(编号,学生编号,科目编号,分数)
向表中插入一些示例数据
六、表数据的关键字
通过 select * from sysobjects where xtype = ‘u’ 可以查看所存在的表
主键:pirimary key 非空:not null
唯一:unique 默认:defult()
检查:check() 外键:foreign key(列名) references 表名(列名)