MSSQL SERVER详析:常用数据类型与开发规范

需积分: 9 0 下载量 39 浏览量 更新于2024-09-10 收藏 40KB DOCX 举报
MSSQL SERVER数据类型提供了丰富的选项来处理不同类型的数据,确保了数据库设计的灵活性和效率。本文档详细介绍了MSSQL Server中的核心数据类型,涵盖了精确数字、字符串值以及特定于货币的类型。 1. **精确数字**: - **bit**:用于存储二进制值,只有1、0和NULL三种状态,SQL Server能够高效地存储和处理这类数据,特别适合存储布尔值。 - **int、bigint、smallint、tinyint**:整数数据类型,适用于无需高精度的数值存储。 - **decimal和numeric**:这两种数据类型用于存储带固定精度和小数位数的数值,如decimal[(p[,s])], 其精度范围广泛,支持精确计算。 - **money和smallmoney**:专为金融应用设计,存储货币或货币值,提供有限的精度和存储空间。 2. **字符串值**: - **char和varchar**:非Unicode字符数据类型,char固定长度(1-8,000字节),存储大小由长度决定;varchar是可变长度,最大长度可达2GB,存储大小为实际数据加上2字节的额外开销。 - **nchar和nvarchar**:Unicode字符数据类型,nchar用于固定长度,nvariant长度可变,适用于需要处理多语言文本的场景。 3. **特殊类别**: - **精度优化**:对于bit列,SQL Server会根据列长度进行存储优化,如8bit以下为1字节,9-16bit为2字节等。 这些数据类型的设计考虑了性能和存储空间的需求,同时也满足了不同应用场景下的数据表示和计算需求。在实际数据库开发过程中,选择合适的数据类型是至关重要的,它直接影响到查询效率、存储成本以及应用程序的兼容性。遵循数据库开发规范,对数据类型的了解和合理使用,有助于构建健壮、高效和一致性的数据库结构。

def getJSONSchemaMysqlSource(optionArg: String, serverIdArg: String, args: Array[String]): MySqlSource[String] = { //ParameterTool是Flink提供的读取程序启动参数、配置文件、环境变量以及Flink自身配置参数等配置的的一个工具类 val parameterTool: ParameterTool = ParameterTool.fromArgs(args) val mysqlHostname: String = parameterTool.get("mysql-hostname", "hadoop-1") val mysqlPort = Integer.parseInt(parameterTool.get("mysql-port", "3306")) val mysqlUsername = parameterTool.get("mysql-username", "root") val mysqlPasswd = parameterTool.get("mysql-passwd", "root") val serverId = parameterTool.get("server-id", serverIdArg) val option = parameterTool.get("start-up-options", optionArg) // 创建配置信息 Map 集合,将 Decimal 数据类型的解析格式配置 k-v 置于其中 val config = new util.HashMap[String, Object]() config.put(JsonConverterConfig.DECIMAL_FORMAT_CONFIG, DecimalFormat.NUMERIC.name()) // 将前述 Map 集合中的配置信息传递给 JSON 解析 Schema,该 Schema 将用于 MysqlSource 的初始化 val jsonDebeziumDeserializationSchema = new JsonDebeziumDeserializationSchema(false, config) // 创建 MysqlSourceBuilder 对象 val builder: MySqlSourceBuilder[String] = MySqlSource.builder() .hostname(mysqlHostname) .port(mysqlPort) .username(mysqlUsername) .password(mysqlPasswd) .deserializer(jsonDebeziumDeserializationSchema) // 根据方法的 option 参数做不同的初始化操作,返回不同的 MysqlSource 对象 option match { case "dim" => builder .databaseList("tms") .tableList("tms.user_info", "tms.user_address") .startupOptions(StartupOptions.initial()) .serverId(serverId) .build() case "dwd" => builder .databaseList("tms") .tableList("tms.order_info", "tms.order_cargo", "tms.transport_task", "tms.order_org_bound") .startupOptions(StartupOptions.initial()) .serverId(serverId) .build(); } logger.error("不支持的操作类型") null }实现了什么功能

2023-07-14 上传