如何使用SQL语句修改表内的数据

如何使用SQL语句修改表内的数据,第1张

修改表中内容

修改用到update语句,语句格式为:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

即 update 员工表 set 部门id=01 where 员工id=0004

SQL联合主键

Create Table 表名 (字段名1 Int Not Null,

字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),

字段名3…………

字段名N………… )

扩展资料

主键是数据表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说主键在一张表中的记录值是唯一的。 建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。

在数据库提供的GUI环境中建立(以SQL7为例)。输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮就行了。

通过SQL语句执行建立。又分两种,一是在建表语句中直接写,二是建表之后更改表结构。

在建表语句中直接写:

Create Table 表名 (字段名1 Int Not Null,

字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),

字段名3…………

字段名N………… )

参考资料: 网页链接

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的程式语言,是一种资料库查询和程式设计语言,用于存取数据以及查询、更新和管理关系资料库系统;同时也是资料库脚本档案的扩展名。

结构化查询语言是高级的非过程化程式语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同资料库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式资料库管理系统的标准语言(ANSI X3 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的资料库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同资料库系统之间的SQL不能完全相互通用。

基本介绍 中文名 : 结构化查询语言 外文名 : Structured Query Language 通过时间 :1986年10月 所属领域 :资料库 持续时间 :28年经久不衰 语言简介,套用,支持标准,其他版本,语句结构,发展历史,数据类型,字元型,文本型,数值型,逻辑型,日期型,语言特点,使用简要,选择列表,FROM子句,WHERE子句,查询结果排序,相关函式, 语言简介 套用 结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系资料库 *** 作语言,并且它的影响已经超出资料库领域,得到其他领域的重视和采用,如人工智慧领域的数据检索,第四代软体开发工具中嵌入SQL的语言等。 支持标准 SQL 是1986年10 月由美国国家标准局(ANSI)通过的资料库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准,1992年11月又公布了SQL92标准,在此标准中,把资料库分为三个级别:基本集、标准集和完全集。 其他版本 各种不同的资料库对SQL语言的支持与标准存在着细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。已有100多种遍布在从微机到大型机上的资料库产品SQL,其中包括DB2、SQL/DS、ORACLE、INGRES、SYBASE、SQLSERVER、DBASEⅣ、PARADOX、MICROSOFTACCESS等。 SQL语言基本上独立于资料库本身、使用的机器、网路、作业系统,基于SQL的DBMS产品可以运行在从个人机、工作站到基于区域网路、小型机和大型机的各种计算机系统上,具有良好的可移植性。可以看出标准化的工作是很有意义的。早在1987年就有些有识之士预测SQL的标准化是“一场革命”,是“关系资料库管理系统的转折点”。资料库和各种产品都使用SQL作为共同的数据存取语言和标准的接口,使不同资料库系统之间的互 *** 作有了共同的基础,进而实现异构机、各种 *** 作环境的共享与移植。 1974年,在IBM公司圣约瑟研究实验室研制的大型关系资料库管理系统SYSTEM R 中,使用SEQUEL语言(由BOYCE 和CHAMBERLIN 提出),后来在SEQUEL 的基础上发展了SQL 语言。 SQL语言是一种互动式查询语言,允许用户直接查询存储数据,但它不是完整的程式语言,如它没有DO或FOR 类似的循环语句,但它可以嵌入到另一种语言中,也可以借用VB、C、JAVA等语言,通过调用级接口(CALL LEVEL INTERFACE)直接传送到资料库管理系统。SQL基本上是域关系演算,但可以实现关系代数 *** 作。 语句结构 结构化查询语言包含 6 个部分 : 一:数据查询语言(DQL:Data Query Language): 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程式给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。 二:数据 *** 作语言(DML:Data Manipulation Language): 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。 三:事务处理语言(TPL): 它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。 四:数据控制语言(DCL): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对资料库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。 五:数据定义语言(DDL): 其语句包括动词CREATE和DROP。在资料库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人资料库目录中获得数据有关的保留字。它也是动作查询的一部分。 六:指针控制语言(CCL): 它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的 *** 作。 发展历史 在1970年代初,由IBM公司San Jose,California研究实验室的埃德加·科德发表将数据组成表格的套用原则(Codd's Relational Algebra)。1974年,同一实验室的DDChamberlin和RF Boyce对Codd's Relational Algebra在研制关系资料库管理系统System R中,研制出一套规范语言-SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名为SQL。 1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS资料库系统中也实现了SQL。 1986年10月,美国ANSI采用SQL作为关系资料库管理系统的标准语言(ANSI X3 135-1986),后为国际标准化组织(ISO)采纳为国际标准。 1989年,美国ANSI采纳在ANSI X3135-1989报告中定义的关系资料库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3135-1986版本。该标准为下列组织所采纳: 国际标准化组织(ISO),为ISO 9075-1989报告“Database Language SQL With Integrity Enhancement” 美国联邦 ,发布在The Federal Information Processing Standard Publication(FIPS PUB)127 目前(21世纪初期)主要的关系资料库管理系统支持某些形式的SQL,大部分资料库打算遵守ANSI SQL89标准。 数据类型 简要描述一下结构化查询语言中的五种数据类型: 字元型,文本型,数值型,逻辑型和日期型。 字元型 VARCHAR VS CHAR VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字元串长度小于255的字元。 假如你向一个长度为四十个字元的VARCHAR型栏位中输入数据Bill Gates。当你以后从这个栏位中取出此数据时,你取出的数据其长度为十个字元——字元串Bill Gates的长度。假如你把字元串输入一个长度为四十个字元的CHAR型栏位中,那么当你取出数据时,所取出的数据长度将是四十个字元。字元串的后面会被附加多余的空格。 当你建立自己的站点时,你会发现使用VARCHAR型栏位要比CHAR型栏位方便的多。使用VARCHAR型栏位时,你不需要为剪掉你数据中多余的空格而 *** 心。 VARCHAR型栏位的另一个突出的好处是它可以比CHAR型栏位占用更少的记忆体和硬碟空间。当你的资料库很大时,这种记忆体和磁碟空间的节省会变得非常重要。 文本型 TEXT 使用文本型数据,你可以存放超过二十亿个字元的字元串。当你需要存储大串的字元时,应该使用文本型数据。 注意文本型数据没有长度,而上一节中所讲的字元型数据是有长度的。一个文本型栏位中的数据通常要么为空,要么很大。 当你从HTML FORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型栏位中。但是,无论何时,只要你能避免使用文本型栏位,你就应该不使用它。文本型栏位既大且慢,滥用文本型栏位会使伺服器速度变慢。文本型栏位还会吃掉大量的磁碟空间。 一旦你向文本型栏位中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。 数值型 整数 INT 、小数NUMERIC、钱数MONEY INT VS SMALLINT VS TINYINT 通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个位元组;一个INT型数据占用四个位元组。这看起来似乎差别不大,但是在比较大的表中,位元组数的增长是很快的。另一方面,一旦你已经创建了一个栏位,要修改它是很困难的。因此,为安全起见,你应该预测一下,一个栏位所需要存储的数值最大有可能是多大,然后选择适当的数据类型。 NUMERIC 为了能对栏位所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型栏位可以存储从-10^38到10^38范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型栏位中存储小数314。 MONEY VS SMALLMONEY 你可以使用 INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203,685,4775808到922,337,203,685,4775807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。 SMALLMONEY型数据只能存储从-214,7483648到214,7483647 的钱数。同样,如果可以的话,你应该用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型栏位在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。 语言特点 1.一体化:SQL集数据定义DDL、数据 *** 纵DML和数据控制DCL于一体,可以完成资料库中的全部工作。 2.使用方式灵活:它具有两种使用方式,即可以直接以命令方式互动使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主语言中使用。 3.非过程化:只提 *** 作要求,不必描述 *** 作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”。 4.语言简洁,语法简单,好学好用:在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。 软道语录 结构化查询语言 SQL(Structured Query Language,结构化查询语言)是一种用于资料库 *** 作的语言。 使用简要 简单的Transact-结构化查询语言查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜寻条件等。 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变数(包括局部变数和全局变数)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT  FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名 列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 暱称=nickname,电子邮件=email FROM testtable。 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。TOP命令仅针对SQL Server系列资料库,并不支持Oracle资料库。 FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: SELECTusername,citytablecityid FROMusertable,citytable WHEREusertablecityid=citytablecityid 在FROM子句中可用以下两种格式为表或视图指定别名:

表名 as 别名

表名 别名 WHERE子句 WHERE子句设定查询条件,过滤掉不需要的数据行。 WHERE子句可包括各种条件运算符: 比较运算符(大小比较):>;、>=、=、<;、<=、<>;、!>;、!< 范围运算符(表达式值是否在指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) NOT IN (项1,项2……) 模式匹配符(判断值是否与指定的字元通配格式相符):LIKE、NOT LIKE 空值判断符(判断表达式是否为空):IS NULL、IS NOT NULL 逻辑运算符(用于多条件的逻辑连线):NOT、AND、OR 1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30 2、列表运算符例:country IN ('Germany','China') 3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字元串格式相匹配。可用于char、varchar、text、ntext、datetime和 alldatetime等类型查询。 可使用以下通配字元: 百分号%:可匹配任意类型和长度的字元,如果是中文,请使用两个百分号即%%。 下划线_:匹配单个任意字元,它常用来限制表达式的字元长度。 方括弧[]:指定一个字元、字元串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字元以外的任一个字元。 查询结果排序 使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为: ORDER BY {column_name [ASC|DESC]} [,…n] 其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排序。 相关函式 SQL Aggregate 函式 SQL Aggregate 函式计算从列中取得的值,返回一个单一的值。 有用的 Aggregate 函式: AVG() - 返回平均值 COUNT() - 返回行数 FIRST() - 返回第一个记录的值 LAST() - 返回最后一个记录的值 MAX() - 返回最大值 MIN() - 返回最小值 SUM() - 返回总和 SQL Scalar 函式 SQL Scalar 函式基于输入值,返回一个单一的值。 有用的 Scalar 函式: UCASE() - 将某个栏位转换为大写 LCASE() - 将某个栏位转换为小写 MID() - 从某个文本栏位提取字元 LEN() - 返回某个文本栏位的长度 ROUND() - 对某个数值栏位进行指定小数位数的四舍五入 NOW() - 返回当前的系统日期和时间 FORMAT() - 格式化某个栏位的显示方式

由于SQL2000里面没有"自动编号",所以你的以"自动编号"设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的"标示"选择"是",种子为"1",增量为"1",

2,另外,ACCESS2000转换成SQL2000后,原来属性为"是/否"的字段将被转换成非空的"bit",这时候你必须修改成自己想要的属性了;

ACCESS转SQL SERVER中的一些经验

1ACCESS的数据库中的自动编号类型在转化时,sql server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号! 2转化时,跟日期有关的字段,SQL SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。

3对此两种数据库进行 *** 作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete from user where id=10",而对SQL SERVER数据库进行删除是用:"delete user where id=10"

4日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对

SQL SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。

5在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL SERVER数据库处理中,却不能用。

1、必须先安装Microsoft Office Access 2003,和SQL Server2000。2、把旧的动网数据库备份,备份完成后,用Access 2003打开动网旧数据库,在打开时会出现一个警告,不要理会它(安全警告),按打开键,打开后按工具栏——数据库实用工具——转换数据库——转换为2002-2003格式,把数据库转换成2003格式。

2、转换完成后再用Access 2003打开,打开后按工具栏——数据库实用工具——升迁向导——新建数据库——填写SQL数据库登陆名称、密码和要新建的动网数据库(准备转成新的动网数据库),按下一步,按“ 》”键,再按下一步,选取所有选项,再按下一步,选择“不对应用程序作任何改动”,再按完成。

3、打开SQL企业管理器——数据库��吹礁詹判陆ǖ亩���菘饬税桑�慊髡飧鍪�菘庖幌拢�缓笤诠ぞ呃浮���/FONT>SQL脚本——常规——全部显示——编写全部对象脚本——确定(记住存放的位置)。

4、用记事本打开刚才生成的SQL脚本,在编辑栏——替换——查找内容为“smalldatetime”替换为“datetime”——替换全部;完成后再在编辑栏——替换——查找内容为“nvarchar”替换为“varcha”——替换全部,完成后保存退出。

5、打开SQL企业管理器——数据库——点击这个数据库一下新建的动网数据库,然后在工具栏——SQL查询分析器——文件——打开——“刚才生成的SQL脚本”——查询——执行,然后关闭窗口。

6、再回到SQL企业管理器——数据库——点击这个数据库一下新建的动网数据库,然后打开工具栏——数据库转换服务——导入数据——下一步——数据源“Microsoft Access”文件名“为旧的动网数据库”——下一步——再下一步——从源数据复制表和视图——下一步——全选——下一步——立即运行——下一步——完成。

7、修改动网文件夹两个文件connasp和inc\constasp。

SQL是Structured Quevy Language(结构化查询语言)的缩写。SQL是专为数据库而建立的 *** 作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库 *** 作的基础,并且现在几乎所有的数据库均支持SQL。

##1 二、SQL数据库数据体系结构 <

SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。名称对称如^00100009a^: 1 三、SQL语言的组成

在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:

1一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。

2一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。

3一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。

4一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。

5用户可以用SQL语句对视图和基本表进行查询等 *** 作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。

6SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。

##1 四、对数据库进行 *** 作

SQL包括了所有对数据库的 *** 作,主要是由4个部分组成:

1数据定义:这一部分又称为“SQL DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。

2数据 *** 纵:这一部分又称为“SQL DML”,其中包括数据查询和数据更新两大类 *** 作,其中数据更新又包括插入、删除和更新三种 *** 作。

3数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。

4嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。

下面我们将分别介绍:

##2 (一)数据定义

SQL数据定义功能包括定义数据库、基本表、索引和视图。

首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)

1数据库的建立与删除

(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:

CREATE DATABASE <数据库名> 〔其它参数〕

其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。〔其它参数〕因具体数据库实现系统不同而异。

例:要建立项目管理数据库(xmmanage),其语句应为:

CREATE DATABASE xmmanage

(2) 数据库的删除:将数据库及其全部内容从系统中删除。

其语句格式为:DROP DATABASE <数据库名>

例:删除项目管理数据库(xmmanage),其语句应为:

DROP DATABASE xmmanage

2基本表的定义及变更

本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。

阅读全文(594) | 回复(1) | 引用通告(0) | 编辑

--脚本1

select trunc(time,'dd') time,count(distinct msisdn) 尝试订购用户,count() 尝试订购次数

from item_i_game_uselog

where time between to_date('20150701 00:00:00','yyyymmdd hh24:mi:ss') and to_date('20150703 23:59:59','yyyymmdd hh24:mi:ss')

and type='01'

and status='1'

group by trunc(time,'dd');

--脚本2

select trunc(time) time,

count(distinct userid) uv,

count(1) pv

from item_i_buy

where time>=TO_DATE('20150714','YYYYMMDD') and time<TO_DATE(to_char(sysdate,'YYYYMMDD'),'yyyymmdd')

group by trunc(time);

1、简单的单列

#!/bin/sh

sqlplus 'user001/12345678'<< EOF

set define off

set hea off

spool vip1txt

select username from ACCOUNT where LEVEL=7;

spool off

quit;

EOF

sed -i 's/[ ]//g' ~/vip1txt

sed -i '/^$/d' ~/vip1txt

sed -i '1d' ~/vip1txt

sed -i '$d' ~/vip1txt

scp -P22 ~/vip1txt root@1721612:/root

2、复杂的多列

#!/bin/sh

cid=$1;

today=`date +%Y-%m-%d-%H%M`

ym=`date +%Y%m`

ymd=`date -d -1days +%Y%m%d`

last_ym=`date -d last-month +%Y%m`

next_ym=`date -d next-month +%Y%m`

file=chat_recorder_${cid}_20140707-11xls

if [[ $1 == '' ]];then

echo "Usage: $0 company_id "

exit 0;

fi

sqlplus 'user002/12345678' << EOF

set linesize 200

set term off verify off feedback off pagesize 999

set markup html on entmap ON spool on preformat off

alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

spool ${file}

select a,b from recorder_${ym} a,t_${ym} b where acompany_id='$cid' and acreate_time between TO_DATE('2014-07-07 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and TO_DATE('2014-07-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and achat_id=bchat_id order by bchat_id ;

spool off

quit;

EOF

sed -i '/select/d' $file

zip -r ${file}zip $file

scp -P22 ${file}zip root@1721615:/opt

同步两个SQLServer数据库如何同步两个sqlserver数据库的内容程序代码可以有版本管理cvs进行同步管理,可是数据库同步就非常麻烦,只能自己改了一个后再去改另一个,如果忘记了更改另一个经常造成两个数据库的结构或内容上不一致各位有什么好的方法吗一、分发与复制用强制订阅实现数据库同步 *** 作大量和批量的数据可以用数据库的同步机制处理://说明:为方便 *** 作,所有 *** 作均在发布服务器(分发服务器)上 *** 作,并使用推模式在客户机器使用强制订阅方式。二、测试通过1:环境服务器环境:机器名称:zehuadb *** 作系统:windows2000server数据库版本:sql2000server个人版客户端机器名称:zlp *** 作系统:windows2000server数据库版本:sql2000server个人版2:建用户帐号在服务器端建立域用户帐号我的电脑管理->本地用户和组->用户->建立username:zlpuserpwd:zlp3:重新启动服务器mssqlserver我的电脑->控制面版->管理工具->服务->mssqlserver服务(更改为:域用户帐号,我们新建的zlp用户\zlp,密码:zlp)4:安装分发服务器a:配置分发服务器工具->复制->配置发布、订阅服务器和分发->下一步->下一步(所有的均采用默认配置)b:配置发布服务器工具->复制->创建和管理发布->选择要发布的数据库(sz)->下一步->快照发布->下一步->选择要发布的内容->下一步->下一步->下一步->完成c:强制配置订阅服务器(推模式,拉模式与此雷同)工具->复制->配置发布、订阅服务器和分发->订阅服务器->新建->sqlserver数据库->输入客户端服务器名称(zlp)->使用sqlserver身份验证(sa,空密码)->确定->应用->确定d:初始化订阅复制监视器->发布服务器(zehuadb)->双击订阅->强制新建->下一步->选择启用的订阅服务器->zlp->下一步->下一步->下一步->下一步->完成5:测试配置是否成功复制监视器->发布衿zehuadb)->双击sz:sz->点状态->点立即运行代理程序查看:复制监视器->发布服务器(zehuadb)->sz:sz->选择zlp:sz(类型强制)->鼠标右键->启动同步处理如果没有错误标志(红色叉),恭喜您配置成功6:测试数据在服务器执行:选择一个表,执行如下sql:insertintowq_newsgroup_sselect'测试成功',5复制监视器->发布服务器(zehuadb)->sz:sz->快照->启动代理程序->zlp:sz(强制)->启动同步处理去查看同步的wq_newsgroup_s是否插入了一条新的记录测试完毕,通过。7:修改数据库的同步时间,一般选择夜晚执行数据库同步处理(具体 *** 作略):d/注意说明:服务器一端不能以(local)进行数据的发布与分发,需要先删除注册,然后新建注册本地计算机名称卸载方式:工具->复制->禁止发布->是在"zehuadb"上静止发布,卸载所有的数据库同步配置服务器注意:发布服务器、分发服务器中的sqlserveragent服务必须启动采用推模式:"d:\microsoftsqlserver\mssql\repldata\unc"目录文件可以不设置共享拉模式:则需要共享~!/少量数据库同步可以采用触发器实现,同步单表即可。三、配置过程中可能出现的问题在sqlserver2000里设置和使用数据库复制之前,应先检查相关的几台sqlserver服务器下面几点是否满足:1、mssqlserver和sqlserveragent服务是否是以域用户身份启动并运行的(\administrator用户也是可以的)如果登录用的是本地系统帐户local,将不具备网络功能,会产生以下错误:进程未能连接到distributor'@servername'(如果您的服务器已经用了sqlserver全文检索服务,请不要修改mssqlserver和sqlserveragent服务的local启动。会照成全文检索服务不能用。请换另外一台机器来做sqlserver2000里复制中的分发服务器。)修改服务启动的登录用户,需要重新启动mssqlserver和sqlserveragent服务才能生效。2、检查相关的几台sqlserver服务器是否改过名称(需要srvid=0的本地机器上srvname和datasource一样)在查询分析器里执行:usemasterselectsrvid,srvname,datasourcefromsysservers如果没有srvid=0或者srvid=0(也就是本机器)但srvname和datasource不一样,需要按如下方法修改:usemastergo--设置两个变量declare@serverproperty_servernamevarchar(100),@servernamevarchar(100)--取得windowsnt服务器和与指定的sqlserver实例关联的实例信息select@serverproperty_servername=convert(varchar(100),serverproperty('servername'))--返回运行microsoftsqlserver的本地服务器名称select@servername=convert(varchar(100),@@servername)--显示获取的这两个参数select@serverproperty_servername,@servername--如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的--删除错误的服务器名execsp_dropserver@server=@servername--添加正确的服务器名execsp_addserver@server=@serverproperty_servername,@local='local'修改这项参数,需要重新启动mssqlserver和sqlserveragent服务才能生效。这样一来就不会在创建复制的过程中出现18482、18483错误了。3、检查sqlserver企业管理器里面相关的几台sqlserver注册名是否和上面第二点里介绍的srvname一样不能用ip地址的注册名。(我们可以删掉ip地址的注册,新建以sqlserver管理员级别的用户注册的服务器名)这样一来就不会在创建复制的过程中出现14010、20084、18456、18482、18483错误了。4、检查相关的几台sqlserver服务器网络是否能够正常访问如果ping主机ip地址可以,但ping主机名不通的时候,需要在winnt\system32\drivers\etc\hosts(win2000)windows\system32\drivers\etc\hosts(win2003)文件里写入数据库服务器ip地址和主机名的对应关系。例如:127001localhost192168035oracledboracledb192168065fengyu02fengyu022028410193bj_dbbj_db或者在sqlserver客户端网络实用工具里建立别名,例如:5、系统需要的扩展存储过程是否存在(如果不存在,需要恢复):sp_addextendedproc'xp_regenumvalues',@dllname='xpstardll'gosp_addextendedproc'xp_regdeletevalue',@dllname='xpstardll'gosp_addextendedproc'xp_regdeletekey',@dllname='xpstardll'gosp_addextendedprocxp_cmdshell,@dllname='xplog70dll'接下来就可以用sqlserver企业管理器里[复制]->右键选择->[配置发布、订阅服务器和分发]的图形界面来配置数据库复制了。下面是按顺序列出配置复制的步骤:1、建立发布和分发服务器[欢迎使用配置发布和分发向导]->[选择分发服务器]->[使"@servername"成为它自己的分发服务器,sqlserver将创建分发数据库和日志]->[制定快照文件夹]->[自定义配置]->[否,使用下列的默认配置]->[完成]上述步骤完成后,会在当前"@servername"sqlserver数据库里建立了一个distribion库和一个distributor_admin管理员级别的用户(我们可以任意修改密码)。服务器上新增加了四个作业:[代理程序历史记录清除:distribution][分发清除:distribution][复制代理程序检查][重新初始化存在数据验证失败的订阅]sqlserver企业管理器里多了一个复制监视器,当前的这台机器就可以发布、分发、订阅了。我们再次在sqlserver企业管理器里[复制]->右键选择->[配置发布、订阅服务器和分发]我们可以在[发布服务器和分发服务器的属性]窗口->[发布服务器]->[新增]->[确定]->[发布数据库]->[事务]/[合并]->[确定]->[订阅服务器]->[新增]->[确定]把网络上的其它sqlserver服务器添加成为发布或者订阅服务器新增一台发布服务器的选项:我这里新建立的jin001发布服务器是用管理员级别的数据库用户test连接的,到发布服务器的管理链接要输入密码的可选框,默认的是选中的,在新建的jin001发布服务器上建立和分发服务器fengyu/fengyu的链接的时需要输入distributor_admin用户的密码。到发布服务器的管理链接要输入密码的可选框,也可以不选,也就是不需要密码来建立发布到分发服务器的链接(这当然欠缺安全,在测试环境下可以使用)。2、新建立的网络上另一台发布服务器(例如jin001)选择分发服务器[欢迎使用配置发布和分发向导]->[选择分发服务器]->使用下列服务器(选定的服务器必须已配置为分发服务器)->[选定服务器](例如fengyu/fengyu)->[下一步]->[输入分发服务器(例如fengyu/fengyu)的distributor_admin用户的密码两次]->[下一步]->[自定义配置]->[否,使用下列的默认配置]->[下一步]->[完成]->[确定]建立一个数据库复制发布的过程:[复制]->[发布内容]->右键选择->[新建发布]->[下一步]->[选择发布数据库]->[选中一个待发布的数据库]->[下一步]->[选择发布类型]->[事务发布]/[合并发布]->[下一步]->[指定订阅服务器的类型]->[运行sqlserver2000的服务器]->[下一步]->[指定项目]->[在事务发布中只可以发布带主键的表]->[选中一个有主键的待发布的表]->[在合并发布中会给表增加唯一性索引和rowguidcol属性的唯一标识符字段[rowguid],默认值是newid()](添加新列将:导致不带列列表的insert语句失败,增加表的大小,增加生成第一个快照所要求的时间)->[选中一个待发布的表]->[下一步]->[选择发布名称和描述]->->[下一步]->[自定义发布的属性]->[否,根据指定方式创建发布]->[下一步]->[完成]->[关闭]发布属性里有很多有用的选项:设定订阅到期(例如24小时)设定发布表的项目属性:常规窗口可以指定发布目的表的名称,可以跟原来的表名称不一样。下图是命令和快照窗口的栏目(sqlserver数据库复制技术实际上是用insert,update,delete *** 作在订阅服务器上重做发布服务器上的事务 *** 作看文档资料需要把发布数据库设成完全恢复模式,事务才不会丢失但我自己在测试中发现发布数据库是简单恢复模式下,每10秒生成一些大事务,10分钟后再收缩数据库日志,这期间发布和订阅服务器上的作业都暂停,暂停恢复后并没有丢失任何事务更改)发布表可以做数据筛选,例如只选择表里面的部分列:例如只选择表里某些符合条件的记录,我们可以手工编写筛选的sql语句:发布表的订阅选项,并可以建立强制订阅:成功建立了发布以后,发布服务器上新增加了一个作业:[失效订阅清除]分发服务器上新增加了两个作业:[jin001-dack-dack-5]类型[repl快照][jin001-dack-3]类型[repl日志读取器]上面蓝色字的名称会根据发布服务器名,发布名及第几次发布而使用不同的编号repl快照作业是sqlserver复制的前提条件,它会先把发布的表结构,数据,索引,约束等生成到发布服务器的os目录下文件(当有订阅的时候才会生成,当订阅请求初始化或者按照某个时间表调度生成)repl日志读取器在事务复制的时候是一直处于运行状态。(在合并复制的时候可以根据调度的时间表来运行)建立一个数据库复制订阅的过程:[复制]->[订阅]->右键选择->[新建请求订阅]->[下一步]->[查找发布]->[查看已注册服务器所做的发布]->[下一步]->[选择发布]->[选中已经建立发布服务器上的数据库发布名]->[下一步]->[指定同步代理程序登录]->[当代理程序连接到代理服务器时:使用sqlserver身份验证](输入发布服务器上distributor_admin用户名和密码)->[下一步]->[选择目的数据库]->[选择在其中创建订阅的数据库名]/[也可以新建一个库名]->[下一步]->[允许匿名订阅]->[是,生成匿名订阅]->[下一步]->[初始化订阅]->[是,初始化架构和数据]->[下一步]->[快照传送]->[使用该发布的默认快照文件夹中的快照文件](订阅服务器要能访问发布服务器的repldata文件夹,如果有问题,可以手工设置网络共享及共享权限)->[下一步]->[快照传送]->[使用该发布的默认快照文件夹中的快照文件]->[下一步]->[设置分发代理程序调度]->[使用下列调度]->[更改]->[例如每五分钟调度一次]->[下一步]->[启动要求的服务]->[该订阅要求在发布服务器上运行sqlserveragent服务]->[下一步]->[完成]->[确定]成功建立了订阅后,订阅服务器上新增加了一个类别是[repl-分发]作业(合并复制的时候类别是[repl-合并])它会按照我们给的时间调度表运行数据库同步复制的作业。3、sqlserver复制配置好后,可能出现异常情况的实验日志:1发布服务器断网,sqlserver服务关闭,重启动,关机的时候,对已经设置好的复制没有多大影响中断期间,分发和订阅都接收到没有复制的事务信息2分发服务器断网,sqlserver服务关闭,重启动,关机的时候,对已经设置好的复制有一些影响中断期间,发布服务器的事务排队堆积起来(如果设置了较长时间才删除过期订阅的选项,繁忙发布数据库的事务日志可能会较快速膨胀),订阅服务器会因为访问不到发布服务器,反复重试我们可以设置重试次数和重试的时间间隔(最大的重试次数是9999,如果每分钟重试一次,可以支持约69天不出错)分发服务器sqlserver服务启动,网络接通以后,发布服务器上的堆积作业将按时间顺序作用到订阅机器上:会需要一个比较长的时间(实际上是生成所有事务的insert,update,delete语句,在订阅服务器上去执行)我们在普通的pc机上实验的58个事务100228个命令执行花了7分28秒3订阅服务器断网,sqlserver服务关闭,重启动,关机的时候,对已经设置好的复制影响比较大,可能需要重新初试化我们实验环境(订阅服务器)从18:46分意外停机以,第二天8:40分重启动后,已经设好的复制在8:40分以后又开始正常运行了,发布服务器上的堆积作业将按时间顺序作用到订阅机器上,但复制管理器里出现快照的错误提示,快照可能需要重新初试化,复制可能需要重新启动(我们实验环境的机器并没有进行快照初试化,复制仍然是成功运行的)4、删除已经建好的发布和定阅可以直接用delete删除按钮我们最好总是按先删定阅,再删发布,最后禁用发布的顺序来 *** 作。如果要彻底删去sqlserver上面的复制设置,可以这样 *** 作:[复制]->右键选择[禁用发布]->[欢迎使用禁用发布和分发向导]->[下一步]->[禁用发布]->[要在"@servername"上禁用发布]->[下一步]->[完成禁用发布和分发向导]->[完成]我们也可以用t-sql命令来完成复制中发布及订阅的创建和删除,选中已经设好的发布和订阅,按属标右键可以[生成sql脚本]。(这里就不详细讲了,后面推荐的网站内有比较详细的内容)当你试图删除或者变更一个table时,出现以下错误server:msg3724,level16,state2,line1cannotdropthetable'object_name'becauseitisbeingusedforreplication比较典型的情况是该table曾经用于复制,但是后来又删除了复制。处理法:selectfromsysobjectswherereplinfo>'0'sp_configure'allowupdates',1goreconfigurewithoverridegobegintransactionupdatesysobjectssetreplinfo='0'wherereplinfo>'0'committransactiongorollbacktransactiongosp_configure'allowupdates',0goreconfigurewithoverridego

用insert语句: INSERT INTO table1(id, name, address) VALUES(1, ygl, 'beijing'),该语句主要适用于sql和PL/SQL。

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展而发展。目前,数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

以上就是关于如何使用SQL语句修改表内的数据全部的内容,包括:如何使用SQL语句修改表内的数据、结构化查询语言详细资料大全、sql 数据库:字段为datetime型时作为查询条件怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/10146173.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存