日志

关于SqlServer表结构 2(回归基础)

 来源    2020-08-02    0  

关于SqlServer表结构的问题。先来了解一下SqlServer中的数据类型以及它们的用法

整型: 短整型 smallint 整型 int 长整型 bitint

标识列:identity(它是只读的)只能用整型 smallint、int、bigint

浮点数:float--->C#、java的double

money--->decimal

bit 0,1--->boolean false、true

字符串类型:

char(10)    单字节固定长度的字符类型、不足不空格,最大8000

varchar(10)   单字节可变长度的字符类型,可回收没有用到的空间,最大8000

关于两者的选择,关键在于在处理数据时是否保证填满,如果保证填满可以选择char,相反如果不确定录入的数据是否能够填满多少个字节,那么就选择varchar,因为他可以回收未填满的数据,减少内存的消耗!

标准字符:可以在键盘上看得到的字符都属于标准字符(单字节)

非标准字符:中文、日文、法文、俄文等(双字节)

nchar:双字节 第一个字母 n 就是Unicode的缩写(所有键盘上看不到的都属于Unicode编码范围) 有多少存多少,最大4000,因为是双字节 8000/2

nvarchar:可回收双字节 Unicode 最大4000

与char和varchar原理是一样的,带n一个数字代表双字节。不带n一个数字代表单字节

text 最大2GB文本上限

ntext:没记错的话应该是可变的

时间类型:

date:日期 年月日

time:时间 时分秒

datetime:日期时间 年月日时分秒

--primary key 1.不允许为空 2.不允许重复 3.可以被子表的外键列引用
--identity(1,1) 标识列只能在整型列上使用 只读的不允许修改
--not null 不允许为空
--unique不允许重复,唯一
--foreign key 外键
--references 引用
--check 检查约束用来判断数据类型是否合法
--getdate获取当前系统时间
--datediff 时间差 datediff(year,BornDate,getdate())参数一:按年来算时间差(也可以是month,day),参数二:录入时间 ,参数三系统时间 后面时间-前面时间
--len()获取字符数量
create table Grade
(
    Id int primary key identity(1,1),
    GradeName varchar(10) not null
)
go
create table Class
(
    Id int primary key identity(1,1),
    ClassName varchar(10) not null unique,
    GradeId int  foreign key references Grade(Id)
)
go
create table Student
(
    Id int primary key identity(1,1),
    StuCode int not null,
    ClassId int references Class(Id) not null,
    StuName nvarchar(10) not null check(len(StuName)>=2) default('佚名'), --姓名必须大于等于2
    BornDate date not null check(datediff(year,BornDate,getdate())>=18),
    Phone varchar(25) not null,
    [Address] nvarchar(200) null default('宿舍'),
    Email varchar(20) null
)
go
相关文章
SqlServer表结构查询
日志Mysql数据库查询表结构很方便,用客户端(SQLyog)可以直接复制出需要的表结构,据说可以用简单的命令查询表结构 desc 表结构 Sqlserver导出表结构就很坑爹了,首先呢客户端不支持,表设 ...
1
查询Sqlserver 表结构信息 SQL
日志SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull ...
SQLServer 表结构相关查询(快速了解数据库)
日志-- 表结构查询 SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 th ...
sqlserver表结构查询语句
日志SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systyp ...
sql-server – 从现有表创建表(结构)
问答如何创建新表的结构应与另一个表相同 我试过了 CREATE TABLE dom AS SELECT * FROM dom1 WHERE 1=2 但是发生了不工作的错误::尝试: Select * In ...
sql-server – 使用合并复制复制没有数据的表结构
问答我正在使用SQL 2012的合并复制. 我有一个表,将该表传播给订阅者是有用的,但只是表结构,而不是实际数据. 表中的数据是按会话填充的,即当您登录软件时,数据会添加到表中,然后在退出软件时删除. 这 ...
1
sql-server – 用于存储大量图像的SQL Server表结构
问答在SQL Server 2008中存储大量图像数据的最佳做法是什么?我期待使用大约5演出的存储空间存储大约50,000张图像.目前我正在使用带有列的单个表来执行此操作: ID: int/PK/iden ...
1
sql-server – 我可以更改事务中的表结构,然后在出现错误时将其回滚吗?
问答我有一些我正在运行的ALTER TABLE语句.并非所有这些都有效(它们是运行SQL Data Compare的结果),我想在一些事务中对它们进行分组,并在出现问题时回滚语句. 这是可能的,还是只有可 ...
1
sql-server – 我可以将#temp表的表结构复制到新的物理表吗?
问答我有一个使用的#tempTable SELECT * INTO #tempTable FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0', 'Excel 8.0;Da ...
1
sql-server – 如何从ms访问中将表结构和数据导出为txt文件
问答我是ms访问的新手 在mysql中,我们可以将表结构导出为创建查询,如下所示 CREATE TABLE IF NOT EXISTS `audio_master` ( `audio_id` int(11 ...
1
sql-server – 日志记录的规范化表结构
问答如何规范化具有四列的表以记录单行的最新活动: >创建于 >创建者 >修改开 >修改者 我们有几十个表,都有这4列.有没有一种方法或模式能够以高效灵活的方式将其规范化?::我建议 ...
1
sql-server – 使用category和subcategory字段验证数据的表结构
问答我正在创建一个简单的预算应用程序,主表将是一个事务表,其中包含事务量,日期,帐户,类别和子类别(事务的类型)等内容. 支出类别可以是"娱乐"或"食品"或&quo ...
1
sql-server – 许多自定义配置文件的表结构
问答我目前正在开发一个批量电子邮件广告系列管理器,它允许客户在订阅者上传尽可能多的信息. 例如,我有一个可供所有人使用的基本配置文件: >名字 >姓氏 >电子邮件地址(等) 这存储在我的 ...
sql-server – 如何在sql server中将数据库表结构转换为XML文件?
问答如何将表Schema转换为XML格式?格式如下. <Tables> <Table> <Name>courses</Name> <Schema> ...
1
sql-server – 隐藏表结构
问答有没有办法限制用户查看表结构?我只是希望他们只对该表进行SELECT,INSERT,UPDATE,DELETE访问.我想限制一个特定的程序员:     1.他不被允许看到任何表格定义     2.他不 ...
3
sql-server – 垂直表结构的T-SQL查询
问答我正在做一个电子商务项目.现在我必须为产品列表页面构建一个过滤器. 我的桌子在下面. 制品 id title | description | Etc. -- ---------- | -------- ...
1
获取表SQLSERVER 的表结构信息(字段名,长度,精度,类型,NULL,ID,PRI)
日志select sys.columns.name, sys.types.name, sys.columns.precision,sys.columns.scale, sys.columns.is_nul ...
1
Sqlserver获取所有数据库名,表信息,字段信息,主键信息,以及表结构等。
日志原文:Sqlserver获取所有数据库名,表信息,字段信息,主键信息,以及表结构等. --获取所有数据库名: SELECT name FROM master..sysdatabases WHERE n ...
SqlServer字段说明查询及快速查看表结构
日志SqlServer字段说明查询 SELECT t.[name] AS 表名,c.[name] AS 字段名,cast(ep.[value] as varchar(100)) AS [字段说明] FRO ...
1
Oracle基础维护02-表、主键、索引、表结构维护手册
日志目录 一.项目新建表.主键.索引注意事项 二.举例说明建表.主建.索引的操作方法 2.1 设定需求如下 2.1.1 查询数据库有哪些表空间 2.1.2 本文档假设数据库有这两个业务用户的表空间 2.2 ...