varchar

SQL联合主键 查重

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-17 06:21:11
2014年最后一天,今天在给数据库导入数据的时候,遇到一个问题,就是联合主键去重。 事情是这样的,现有一个表M,我想找个表中导入了许多数据,并需要将字段A(int)和B(int)联合设置为主键。 但是在设置主键时,告知我有重复的内容,无法设置主键。 正常情况下,这两个字段的组合是唯一的,不应该重复,为了找到重复数据,看看是什么方面出了问题。 采用distinct方式 但是发现 select count(distinct name, id) from A 这句话在SQL里不适用, http://www.cnblogs.com/rainman/archive/2013/05/03/3058451.html 这个里面写了,当然SQL里也会报错。 所以只能将两个字段进行转换并重新组合成一个字段进行查询 select cast(A as varchar(10))+cast(B as varchar(10)) newkey from M group by cast(A as varchar(10))+cast(B as varchar(10)) having count(cast(A as varchar(10))+cast(B as varchar(10)))>1 代码本身没有什么难度,就是在于要转换思想,不能仅仅纠结于两个int类型的主键,重新组合就方便查询了。 来源: https:/

MySQL数据类型优化

自作多情 提交于 2020-03-17 05:50:25
1.更小的通常更好。 一般情况下,应该尽量使用可以正确存储数据的最小数据类型。 更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。 2.简单就好。 简单数据类型的操作通常需要更少的CPU周期。 例如:整型比字符操作代价更低,因为字符集和校对规则使字符比较比整型比较更复杂。这里有两个例子:一个是应该使用MySQL内建的类型而不是字符串来存储日期和时间,一个是应该用整型存储IP地址。 3.尽量避免NULL。 通常情况下最好指定列为NOT NULL,除非真的需要存储NULL值。 如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引、索引统计和值比较都更复杂。 通常把可为NULL的列改为NOT NULL带来的性能提升比较小,所以调优时,没有必要首先在现有schema中查找并修改掉这种情况,除非确定会导致问题。如果计划在列上建索引,就应该尽量避免设计成可为NUll的列。 时间和日期上,TIMESTAMP(4个字节)只使用DATETIME(8个字节)一半的存储空间,并且会根据时区变化,具有特殊的自动更新能力。另一方面,TIMESTAMP允许的时间范围要小很多,有时候它的特殊能力会成为障碍。 整数类型: TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,分别使用8,16,24,32

Mysql索引笔记

别等时光非礼了梦想. 提交于 2020-03-16 18:10:07
CREATE TABLE t_mobilesms_11 ( id bigint(20) NOT NULL AUTO_INCREMENT, userId varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ‘’ COMMENT ‘用户id,创建任务时的userid’, mobile varchar(24) NOT NULL DEFAULT ‘’ COMMENT ‘手机号码’, billMonth varchar(32) DEFAULT NULL COMMENT ‘账单月’, time varchar(32) DEFAULT NULL COMMENT ‘收/发短信时间’, peerNumber varchar(64) NOT NULL COMMENT ‘对方号码’, location varchar(64) DEFAULT NULL COMMENT ‘通信地(自己的)’, sendType varchar(16) DEFAULT NULL COMMENT ‘SEND-发送; RECEIVE-收取’, msgType varchar(8) DEFAULT NULL COMMENT ‘SMS-短信; MSS-彩信’, serviceName varchar(256) DEFAULT NULL COMMENT

SQL 通用数据类型解析

眉间皱痕 提交于 2020-03-16 10:02:44
SQL 通用数据类型 数据类型定义列中存放的值的种类。 SQL 通用数据类型 数据库表中的每个列都要求有名称和数据类型。Each column in a database table is required to have a name and a data type. SQL 开发人员必须在创建 SQL 表时决定表中的每个列将要存储的数据的类型。数据类型是一个标签,是便于 SQL 了解每个列期望存储什么类型的数据的指南,它也标识了 SQL 如何与存储的数据进行交互。 下面的表格列出了 SQL 中通用的数据类型: 数据类型 描述 CHARACTER(n) 字符/字符串。固定长度 n。 VARCHAR(n) 或 CHARACTER VARYING(n) 字符/字符串。可变长度。最大长度 n。 BINARY(n) 二进制串。固定长度 n。 BOOLEAN 存储 TRUE 或 FALSE 值 VARBINARY(n) 或 BINARY VARYING(n) 二进制串。可变长度。最大长度 n。 INTEGER(p) 整数值(没有小数点)。精度 p。 SMALLINT 整数值(没有小数点)。精度 5。 INTEGER 整数值(没有小数点)。精度 10。 BIGINT 整数值(没有小数点)。精度 19。 DECIMAL(p,s) 精确数值,精度 p,小数点后位数 s。例如:decimal(5

[Mysql] Learning_Notes for MYSQL

旧城冷巷雨未停 提交于 2020-03-15 09:19:20
create database mydata; use mydata; create table dept ( deptno int primary key, dname varchar(14), loc varchar(13) ); create table emp ( empno int primary key, ename varchar(10), job varchar(10), mgr int, hiredate datetime, sal double, comm double, deptno int, foreign key (deptno) references dept(deptno) ); ? \. c:\\mysql_script\\mydata.sql desc dept insert into dept values(10, 'A', 'a'); insert into dept values(20, 'B', 'b'); insert into dept values(30, 'C', 'c'); insert into dept values(40, 'D', 'd'); insert into dept values(50, 'E', 'e'); commit; select * from dept order by deptno desc

SQL Server分页查询存储过程

五迷三道 提交于 2020-03-15 09:04:00
--分页存储过程 create PROCEDURE [dbo].[commonPagination] @columns varchar(500), --要显示的列名,用逗号隔开 @tableName varchar(100), --要查询的表名 @orderColumnName varchar(100), --排序的列名 @order varchar(50), --排序的方式,升序为asc,降序为 desc @where varchar(100), --where 条件,如果不带查询条件,请用 1=1 @pageIndex int, --当前页索引 @pageSize int, --页大小(每页显示的记录条数) @pageCount int out --总页数,输出参数 as begin declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句 declare @sqlSelect nvarchar(1000) --查询语句 set @sqlRecordCount=N'select @recordCount=count(*) from ' +@tableName + ' where '+ @where declare @recordCount int --保存总记录条数的变量 exec sp_executesql

Sql Server 常用日期格式

孤街醉人 提交于 2020-03-14 12:16:19
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.177 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') 20040912110608 select CONVERT(varchar(12) , getdate(), 111 ) 2004/09/12 select CONVERT(varchar(12) , getdate(), 112 ) 20040912 select CONVERT(varchar(12) , getdate(), 102 ) 2004.09.12 select CONVERT(varchar(12) , getdate(), 101 ) 09/12/2004 select CONVERT(varchar(12) , getdate(), 103 ) 12/09/2004 select

一些常用的sql语句

徘徊边缘 提交于 2020-03-13 17:29:27
1 、创建表 2、追加字段-删除字段 3、随机数 4、时间转字符串 5、查询年、月、日 6、Case、When、Then 7、获取新增Sql的Id 8、增加序号 9、Try-Catch 10、与时间相关的Sql查询 11、查询sql执行时间和CPU占用时间和I/O操作情况 12、替换 13、删除表、清空表、复制表 14、清理日志 15、锁表查询、解锁 16、Sql语句性能Top10 17、查询 表信息 18、查询表说明 19、查询表字段详情 ok!!! 1 、创建表 --删除表 --DROP TABLE [dbo].[表名] --创建表 CREATE TABLE [dbo].[System_Code_InstallationPeriod] ( [Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY, [Name] nvarchar(50) NULL DEFAULT '默认值', [TypeId] INT NULL, [Money] money NULL, [CreatePeople] nvarchar(50) NULL , [CreateTime] datetime NULL , [ModifyPeople] nvarchar(50) NULL , [ModifyTime] datetime NULL ) --添加表说明 EXECUTE sp

Postgres: Convert varchar to text

本小妞迷上赌 提交于 2020-03-13 05:34:29
问题 I screwed up and created a column as a varchar(255) where that is no longer sufficient. I've read that varchar has no performance benefits over text on Postgres, and so would like to convert the varchar to a text column in a safe way that preserves the data. What's the best way for me to do this? 回答1: ALTER TABLE table1 ALTER COLUMN column1 TYPE text; 来源: https://stackoverflow.com/questions/2813049/postgres-convert-varchar-to-text

Postgres: Convert varchar to text

喜夏-厌秋 提交于 2020-03-13 05:34:12
问题 I screwed up and created a column as a varchar(255) where that is no longer sufficient. I've read that varchar has no performance benefits over text on Postgres, and so would like to convert the varchar to a text column in a safe way that preserves the data. What's the best way for me to do this? 回答1: ALTER TABLE table1 ALTER COLUMN column1 TYPE text; 来源: https://stackoverflow.com/questions/2813049/postgres-convert-varchar-to-text