varchar

MySQL时间字段究竟使用INT还是DateTime的说明

丶灬走出姿态 提交于 2020-03-01 15:14:47
今天解析DEDECMS时发现deder的MYSQL时间字段,都是用 `senddata` int(10) unsigned NOT NULL DEFAULT '0'; 随后又在网上找到这篇文章,看来如果时间字段有参与运算,用int更好,一来检索时不用在字段上转换运算,直接用于时间比较!二来如下所述效率也更高。 归根结底:用int来代替data类型,更高效。 环境: Windows XP PHP Version 5.2.9 MySQL Server 5.1 第一步、创建一个表date_test(非定长、int时间) CREATE TABLE `test`.`date_test` ( `id` INT NOT NULL AUTO_INCREMENT , `start_time` INT NOT NULL , `some_content` VARCHAR( 255 ) NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = InnoDB; 第二步、创建第二个表date_test2(定长、int时间) CREATE TABLE `test`.`date_test2` ( `id` INT NOT NULL AUTO_INCREMENT , `start_time` INT NOT NULL , `some_content` CHAR( 255 ) NOT

QT模仿QQ界面的简单小程序

﹥>﹥吖頭↗ 提交于 2020-03-01 14:48:09
本文介绍利用QT写一个简单的模仿QQ小程序。使用到的有数据库、scoket通信、ui布局的使用、数据库的增删改查等功能。 界面布局如下: QPushBotton的使用以及按钮使用可根据自己的喜欢设置颜色以及背景图片等功能。 创建连接数据库为: 数据库的相关代码为: bool createConnection_SQLITE() { db_sqlite = QSqlDatabase::addDatabase("QSQLITE"); db_sqlite.setDatabaseName("user.dat"); if(!db_sqlite.open()) { return false; } return true; } void createFakeData_xinxi_SQLITE() { QSqlQuery query; query.exec("DROP TABLE xinxi"); query.exec("CREATE TABLE xinxi(" "id INTEGER PRIMARY KEY AUTOINCREMENT, " //键值默认的 "time VARCHAR(40) NOT NULL, " //表有几列 "user VARCHAR(40) NOT NULL, " //NOT NULL不能为空 "pwd VARCHAR(40) NOT NULL, " "iphone

SELECT INTO T-SQL中的表变量

浪尽此生 提交于 2020-02-29 22:17:25
有一个复杂的SELECT查询,我想从中将所有行插入表变量,但是T-SQL不允许它。 同样,您不能将表变量与SELECT INTO或INSERT EXEC查询一起使用。 http://odetocode.com/Articles/365.aspx 简短的例子: declare @userData TABLE( name varchar(30) NOT NULL, oldlocation varchar(30) NOT NULL ) SELECT name, location INTO @userData FROM myTable INNER JOIN otherTable ON ... WHERE age > 30 表变量中的数据稍后将用于将其插入/更新回不同的表(大多数是具有次要更新的相同数据的副本)。 这样做的目的是简单地使脚本比直接在右表中执行 SELECT INTO 更易读,更容易定制。 性能不是问题,因为 rowcount 相当小,并且只在需要时手动运行。 ......或者告诉我,如果我做错了。 #1楼 使用SELECT INTO的一个原因是它允许您使用IDENTITY: SELECT IDENTITY(INT,1,1) AS Id, name INTO #MyTable FROM (SELECT name FROM AnotherTable) AS t 这不适用于表变量

7、SQL Server索引、表压缩

放肆的年华 提交于 2020-02-29 17:54:46
索引 什么是索引? 索引是一种磁盘上的数据结构,建立在表或视图的基础上。使用索引可以使数据的获取更快更高校,也会影响其他的一些性能,如插入或更新等。 索引主要分为两种类型:聚集索引和非聚集索引。 字典的目录就是一个索引,按照拼音查询想要的字就是聚集索引(物理连续,页码与目录一一对应),偏旁部首就是一个非聚集索引(逻辑连续,页码与目录不连续)。 聚集索引存储记录是物理上连续存在的,而非聚集索引是逻辑上的连续,物理存储并不连续。 聚集索引一个表中只能有一个,而非聚集索引一个表中可以有多个。 索引的利弊 使用索引是为了避免全表扫描,因为全表扫描是从磁盘上读取表的每一个数据页,如果有索引指向数据值,则只需要读少次数的磁盘就可以。 带索引的表在数据库中占用更多的空间,同样增、删、改数据的命令所需时间会更长。 索引的存储机制 书中的目录是一个字词以及所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表。 聚集索引是在数据库中新开辟一个物理空间,用来存放他排列的值,当有新数据插入时,他会重新排列整个物理存储空间。 非聚集索引只包含原表中的非聚集索引的列和指向实际物理表的一个指针。 数据表的基本结构 当一个新的数据表创建时,系统将在磁盘中分配一段以8k为单位的连续空间。当一个8k用完的时候,数据库指针会自动分配一个8k的空间,每个8k的空间称为一个数据页,并分配从0-7的页号

Sql日期时间格式转换

狂风中的少年 提交于 2020-02-29 01:03:37
sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/ 语句及查询结果: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 Select CONVERT(varchar(100), GETDATE(), 6):

mysql行转列,列转行

雨燕双飞 提交于 2020-02-28 11:02:16
行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单、更具可读性。下面我们通过几个简单的例子来介绍一下列转行、行转列问题。 我们首先先通过一个老生常谈的例子,学生成绩表(下面简化了些)来形象了解下行转列 CREATE TABLE [StudentScores] ( [UserName] NVARCHAR(20), --学生姓名 [Subject] NVARCHAR(30), --科目 [Score] FLOAT, --成绩 ) INSERT INTO [StudentScores] SELECT 'Nick', '语文', 80 INSERT INTO [StudentScores] SELECT 'Nick', '数学', 90 INSERT INTO [StudentScores] SELECT 'Nick', '英语', 70 INSERT INTO [StudentScores] SELECT 'Nick', '生物', 85 INSERT INTO [StudentScores] SELECT

SELECT INTO FROM 与 insert into from

≡放荡痞女 提交于 2020-02-28 08:41:11
1. SELECT INTO FROM语句 语句形式为: SELECT vale1, value2 into Table2 from Table1 要求目标表Table2不存在, 因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中,请注意vale1,vale2一定要是Table1有的字段,否则就会出错 。示例如下: View Code 1 --1.创建测试表 2 create TABLE Table1 3 ( 4 a varchar(10), 5 b varchar(10), 6 c varchar(10), 7 CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED 8 ( 9 a ASC10 )11 ) ON [PRIMARY]12 GO13 14 --2.创建测试数据15 Insert into Table1 values('赵','asds','90')16 Insert into Table1 values('钱','asds','100')17 Insert into Table1 values('孙','asds','80')18 Insert into Table1 values('李','asds',null)19 GO20 21 --3.SELECT INTO

SQL Server类型与C#类型对应关系

我的未来我决定 提交于 2020-02-27 21:41:44
SQL Server 2000 C# CodeSmith 数据类型 取值范围 数据类型 取值范围 空值代替值 数据类型 bigint -2^63 (-9,223,372,036,854,775,807) 至 2^63-1 (9,223,372,036,854,775,807) Int64 -9,223,372,036,854,775,808;即十六进制的 0x8000000000000000至9,223,372,036,854,775,807;即十六进制的 0x7FFFFFFFFFFFFFFF Int64.MinValue Int64 binary 固定长度的 n 个字节二进制数据。 N 必须从 1 到 8,000。存储空间大小为 n +4 字节。 Byte[] null Binary bit True,False enum 0,1,-1(使用一个枚举变量来代替) public enum bitNull { False, True, Null = -1 }; -1 Boolean char 长度为 n 个字节的固定长度且非 Unicode 的字符数据。 n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。 string null AnsiStringFixedLength datetime 存储从 1753 年 1 月 1 日至 9999 年 12 月 31

数据库-面试题

无人久伴 提交于 2020-02-27 12:55:09
1.简述 OSI 7层模型及其作用?(2分) OSI协议 作用 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化,代码转换,数据加密 没有协议 会话层 解除或建立与别的接点的联系 没有协议 传输层 提供端对端的接口 TCP,UDP 网络层 为数据包选择路由 IP RIP 数据链路层 传输有地址的帧以及错误检测功能ARP 物理层 以二进制数据形式在物理媒体上传输数据 2.简述 TCP三次握手、四次回收的流程。(3分) 三次握手: 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。 四次挥手: ​ 先由客户端向服务器端发送一个FIN,请求关闭数据传输。 ​ 当服务器接收到客户端的FIN时

Python面试重点(进阶篇)

雨燕双飞 提交于 2020-02-27 12:19:32
第一部分 必答题 简述 OSI 7层模型及其作用?(2分) 应用层:与用户直接交互,软件、网站等 表示层:使用软件、网站可以查看的数据,图片等 会话层:保持登录状态,电脑中为cookie 传输层:选择TCP/UDP协议,进行数据发送。 网络层:通过IP路径寻址,并且对数据进行封装 数据链路层:使用mac地址寻址,又进行了数据封装 物理层:将上面得到的数据转化为信号 简述 TCP三次握手、四次回收的流程。(3分) 三次握手: 第一次握手:Client将标志设置为SYN=1,随机产生一个seq=J,并将该数据包发送给server,client进入SYN_SENT状态,等待server确认。 第二次握手:server收到数据包后由标志位SYN=1知道client请求建立链接,server将标志位SYN和ACK都设置为1,ack=J+1,随机产生一个值seq=K,并将数据包发送给client确认连接,server进入syn_rcvd状态。 第三次握手:client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK设置为1,ack=K+1,并将该数据包发送给server,server检查ack是否为K+1,ACK是否为1,如果正确则建立链接,client和server进入ESTABALISED状态,完成三次握手。 四次挥手: 第一次挥手