有问题就有答案
Q1:数据库表有100列字段,我现在要显示99列,知道不显示id那列。 该怎么简单的做
详细动作,有两个步骤:获取数据集和显示数据集。前者只需发送一个查询命令select *,而后者总是需要接口元素来显示一个数据项,所以只需要为id列安排接口元素即可。如果使用网格等批量显示控件,可以自定义数据集对应的网格列之间的映射关系,而不是映射id列。
Q2:select当一个表有100栏,只要用其中99个,是不是写99个名,有没有通过select * 除去不要栏位呢
没错。没有排除的语法。不过一般情况下是不用你一个个去输入的,GUI界面的客户端工具可以自动列出所有的列,修改它生成的查询语句,把不要的列去掉就可以了。
Q3:SQL语言的表达
SQL全称是“结构化查询语言(Structured Query Language)” SQL(STructured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 SQL同时也是数据库脚本文件的扩展名。 SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。他不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。 结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxporo、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。 美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。 SQL语言包含4个部分: ※ 数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。 ※ 数据操作语言(DML),例如:INSERT、UPDATE、DELETE语句。 ※ 数据查询语言(DQL),例如:SELECT语句。 ※ 数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。 SQL语言包括三种主要程序设计语言类别的陈述式:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。[编辑本段]SQL发展历史 1970: E.J. Codd 发表了关系数据库理论(relational database theory); 1974-79: IBM 以Codd的理论为基础开发了“Sequel”,并重命名为"SQL"; 1979: Oracle 发布了商业版SQL 1981-84: 出现了其他商业版本,分别来自 IBM(DB2),Data General(DG/SQL),Relational Technology(INGRES); SQL/86:ANSI 跟 ISO的第一个标准; SQL/89:增加了引用完整性(referential integrity); SQL/92(aka SQL2):被数据库管理系统(DBMS)生产商广发接受; 1997+:成为动态网站(Dynamic web content)的后台支持; SQL/99:Core level跟其他8种相应的level,包括递归查询,程序跟流程控制,基本的对象(object)支持包括oids; SQL/2003:包含了XML相关内容,自动生成列值(column values); 2005-09-30:“Data is the next generation inside...SQL is the new HTML”! Tim O"eilly提出了Web 2.0理念,称数据将是核心,SQL将成为“新的 HTML"; SQL/2006:定义了SQL与XML(包含XQuery)的关联应用; 2006:Sun公司将以SQL基础的数据库管理系统嵌入Java V6[编辑本段]DDL DDL 用于定义和管理物件,例如资料库、资料表以及检视表( 第18章 将会解释何谓检视表)。DDL 陈述式通常包括每个物件的CREATE、ALTER 以及 DROP 命令。举例来说,CREATE TABLE、ALTER TABLE 以及 DROP TABLE 这些陈述式便可以用来建立新资料表、修改其属性(如新增或删除资料行)、删除资料表等,下面我们会一一介绍。 CREATE TABLE 陈述式 使用 DDL 在 MyDB 资料库建立一个名为 Customer_Data 的范例资料表,本章后面的例子我们会使用到这个资料表。如前所述,CREATE TABLE 陈述式可以用来建立资料表。这个范例资料表被定义成四个资料行,如下所示: Use MyDB CREATE TABLE Customer_Data (customer_id smallint, first_name char(20), last_name char(20), phone char(10)) GO 这个陈述式能产生 Customer_Data 资料表,这个资料表会一直是空的直到资料被填入资料表内。 ALTER TABLE 陈述式 ALTER TABLE 陈述式用来变更资料表的定义与属性。在下面的例子中,我们利用 ALTER TABLE 在已经存在的 Customer_Data 资料表中新增 middle_initial 资料行。 ALTER TABLE Customer_Data ADD middle_initial char(1) GO 现在资料表的定义包括了五个资料行,而不是之前的四个资料行。关於使用ALTER TABLE 的更多细节,请参阅 第15章 。 DROP TABLE 陈述式 DROP TABLE 陈述式用来删除资料表定义以及所有的资料、索引、触发程序、条件约束以及资料表的权限。要删除我们的 Customer_Data 资料表,可利用下列命令: DROP TABLE Customer_Data GO 关於 DROP TABLE 陈述式的详细内容,请参阅 第15章 。[编辑本段]DML DML 利用 INSERT、SELECT、UPDATE 及 DELETE 等陈述式来操作资料库物件所包含的资料。 INSERT 陈述式 INSERT 陈述式用来在资料表或检视表中插入一列资料。例如,如果要在Customer_Data 资料表中新增一个客户,可使用类似以下的 INSERT 陈述式: INSERT INTO Customer_Data (customer_id, first_name, last_name, phone) VALUES (777, "Frankie", "Stein", "4895873900") 请注意 SQL 陈述式中第二行的资料行名称清单,清单上资料行名称的次序决定了资料数值将被放在哪个资料行。举例来说,第一个资料数值将被放在清单列出的第一个资料行 customer_id、第二个资料数值放在第二个资料行,依此类推。由于我们在建立资料表时,定义资料资料行填入数值的次序与现在相同,因此我们不必特意指定栏位名称。我们可以用以下的 INSERT 陈述式代替: INSERT INTO Customer_Data VALUES (777, "Frankie", "Stein", "4895873900") 注意 如果使用这种形式的 INSERT 陈述式,但被插入的数值次序上与建立资料表时不同,数值将被放入错误的资料行。如果资料的型别与定义不符,则会收到一个错误讯息。 UPDATE 陈述式 UPDATE 陈述式用来更新或改变一列或多列中的值。例如,一位名称为 Frankie Stein 的客户想要在记录中改变他的姓氏为 Franklin,可使用以下 UPDATE 陈述式: UPDATE Customer_Data SET first_name = "Franklin" WHERE last_name = "Stein" and customer_id= 777 我们在 WHERE 子句中加入 customer_id 的项目来确定其他名称为 Stein 的客户不会被影响-只有customer_id为777的客户,姓氏会有所改变。 -------------------------------------------------------------------------------- 说明 当您使用 UPDATE 陈述式时,要确定在 WHERE 子句提供充分的筛选条件,如此才不会不经意地改变了一些不该改变的资料。 -------------------------------------------------------------------------------- DELETE 陈述式 DELETE 陈述式用来删除资料表中一列或多列的资料,您也可以删除资料表中的所有资料列。要从 Customer_Data 资料表中删除所有的列,您可以利用下列陈述式: DELETE FROM Customer_Data 或 DELETE Customer_Data 资料表名称前的 FROM 关键字在 DELETE 陈述式中是选择性的。除此之外,这两个陈述式完全相同。 要从 Customer_Data 资料表中删除 customer_id 资料行的值小於100的列,可利用下列陈述式: DELETE FROM Customer_Data WHERE customer_id < 100 现在我们已经快速浏览了 SQL 提供的 DDL 与 DML 陈述式,接著,下面将介绍 T-SQL。[编辑本段]DCL DCL是用来管理数据库的语言。包含管理权限及数据更改。 --------------------------------------------------------------------------------[编辑本段]SELECT 陈述式 SELECT 陈述式用来检索资料表中的资料,而哪些资料被检索由列出的资料行与陈述式中的 WHERE 子句决定。例如,要从之前建立的 Customer_Data 资料表中检索 customer_id 以及 first_name 资料行的资料,并且只想取出每列中 first_name 资料行值为 Frankie 的资料,那麼可以利用以下的 SELECT 陈述式: SELECT customer_id, first_name FROM Customer_Data WHERE first_name = "Frankie" 如果有一列符合 SELECT 陈述式中的标准,则结果将显示如下: customer_id first_name ------------- ------------ 777 Frankie[编辑本段]SQL中的五种数据类型 简要描述一下SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型 字符型 VARCHAR VS CHAR VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于255的字符。 假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BIll GAtES。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。 当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。 VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要 文本型 TEXT 使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。 注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。 当你从HTML fORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。 一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。 数值型 SQL支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。 INT VS SMALLINT VS TINYINT 他们的区别只是字符长度: INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数 SMALLINT 型数据可以存储从-32768到32768的整数 TINYINT 型的字段只能存储从0到255的整数,不能用来储存负数 通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。 NUMERIC 为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-1038到1038范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。 当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。如:MUNERIC(23,0) 一个 NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。 MONEY VS SMALLMONEY 你可以使用 INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203,685,477.5808到922,337,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。 SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。 逻辑型 BIT 如果你使用复选框( CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。 当心,在你创建好一个表之后,你不能向表中添加 BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。 日期型 DATETIME VS SMALLDATETIME 一个 DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。 如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。 DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。
Q4:原先QQ某个分组里面有100个好友,现在显示99了,怎么知道少了谁?
在qq下,会有一个小喇叭符号,叫做打开消息管理器。打开后,看看里面有没有删除的联系人,就可以了。如果没有,我不知道。
Q5:在表格中B1-B8会出现1-99的数字,现在我需要在C1-C8显示B1-B8中包含1,9,12,15,32,66,79,的数字怎么列函数
C1=if(计数if(B $ 1: B $ 8,1),1 " ")C2=if(计数if(B $ 1: B $ 8,9,9 " ")C3=if(计数if(B $ 1: B $ 8,12),12 " ").
Q6:关于数据库存储键值对的问题?
这是一个前端(应用程序端)和后端(服务器端)的问题。这应该由每个用户单独配置,因此应该放在前端而不是后端。如果放在后端,每个用户都必须阅读,所以体验肯定不好。对于前端,只需添加一个“配置文件”(其实就是一段代码),然后通过服务器的程序读取这个“配置文件”,就会知道对应的顺序,比连接的服务器读取对应的表要快。如果一定要用数据库来解决问题,我们假设有100项,有人把所有的项都从后往前倒写了,也就是100项和1项互换,99项和2项互换。这样,第50项和第51项终于互换了,也就是说,第100项已经完全改变了位置,所以无论你如何存储或读取它们,所有这些项目都必须保留。当然,如果非要这样做,有一个稍微简单一点的方法,但也需要前端的配合。而且征收的可能性很大,使用效果可能不会太好。我的方法是建立一个类似于userid 10001 10002 10003的表。说白了就是一个以缺省序列Moleid(个人认为这可能是你的头码,如果不是,不介意)为字段名的表,然后每个用户id对应一组数字,比如(缺省数字为1,2,3,4):userid 10001 10002 10003 100041 4 3 1 22 1 3 1 2 3 4类似于这个,可以直接得到用户的编号序列, 但这并不如前端的配置文件舒服(用户修改配置文件后,服务器也会对其进行备份(类似上表,也可以作为客户端配置的备份)。 但是,这种备份比直接修改数据库省了很多麻烦,至少节省了数据库的资源。此外,可能会发生征用。比如两个人或两个人以上同时修改代码,那么多人不可能同时更新一个表,肯定会发生征用,所以服务体验不会很好(备份没那么及时,所以征用可能性不大,即使发生,也会发生在后端,对用户体验不会有什么影响)。以上都是个人的理解,一起讨论。