Sql常用语句汇总教案资料
SQL讲义

软件技术讲义一、键的概念1. 键――如果关系的某一属性或属性组的值能唯一地决定其它所有属性的值,而其任何真子集无此性质,则称该属性或属性集为关系的候选键或键2. 主键――当一个关系能有多个候选键时,可选定一个作为主键( PK )3. 候补键――主键之外的候选键4. 主属性――包含在任何一个候选键中的属性5. 非主属性――不包含在任何一个候选键中的属性6. 外键――不是本关系的键,却引用了其它关系或本关系的键的属性或属性组,记做( FK )二、SQL1. SQL支持的数据类型:2. DDL(1). 定义基本表:①.语法:CREATE TABLE <表名>(<列名> <类型> [列级完整性约束条件][,<列名> <类型> [列级完整性约束条件] … ][,<表级完整性约束条件>] ) ;②. 列级完整性约束条件――两个任选项·NOT NULL →此列不得设置为NULLNOT NULL后加UNIQUE任选项→列值唯一,不得重复·DEFAULT→此列的值空缺时,由系统填以该缺省值缺省值有三种:事先定义的字值用户标识符(USER)NULL,前面应无NOT NULL选项③. 表级完整性约束条件(主键子句,外键子句,CHECK子句)·主键(PRIMARY KEY)子句——提供实体完整性约束的说明, 每表一个主键格式:PRIMARY KEY (<列名表>)列名表中的各列必须满足NOT NULL和唯一性条件·外键(FOREIGN KEY)子句——提供参照完整性约束说明,每表0~多个格式:FOREIGN KEY [外键名] (<列名表1>)REFERENCES <主表名>[(列名表2)][ON DELETE <RESTRICT | CASCADE | SET NULL>] RESTRICT:主表中的值已被访问时,不能删除CASCADE:主表中的值被删除时,引用表(副表)中元组全部删除SET NULL:主表中的值被删除时,引用表(副表)中元组外键值为NULL ·可选的检查(CHECK)子句——对元组某属性的取值的约束说明格式:CHECK(约束表达式)例如:说明分数GRADE应取NULL或0~100之间的整数值CREATE TABLE SC( SNO CHAR(7) NOT NULL,… ,GRADE SMALLINT,CHECK((GRADE IS NULL) OR (GRADE BETWEEN 0 AND100)) ); 举例:定义STUDENT(学生), SC(选课)两个基表。
oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句ORACLE 常用的SQL语法和数据对象一.数据控制语句(DML) 部分1.INSER T (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看OR ACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WI TH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.3.UPDATE (修改数据表里记录的语句)UPDATE表名SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令ROLLBACK 复原.B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成, 其间加上COMMIT 确认事物处理.二.数据定义(DDL) 部分1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAUL T SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMAR Y KEY2.AL TER (改变表, 索引, 视图等)改变表的名称AL TER TABLE 表名1 TO 表名2;在表的后面增加一个字段AL TER TABLE表名ADD 字段名字段名描述;修改表里字段的定义描述AL TER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件AL TER TABLE 表名ADD CONSTRAINT 约束名PRIMAR Y KEY (字段名);AL TER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区AL TER TABLE 表名CACHE;AL TER TABLE 表名NOCACHE;3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句(SELECT) 部分SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如: (字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1[HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE表名1.字段名= 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );AL TER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;AL TER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接(DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSER T ON 数据对象名, AL TER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;查询数据库中第63号错误:select orgaddr,destaddr from sm_histable0116 where error_code='63';查询数据库中开户用户最大提交和最大下发数:select MSISDN,TCOS,OCOS from ms_usertable;查询数据库中各种错误代码的总和:select error_code,count(*) from sm_histable0513 group by error_code orderby error_code;查询报表数据库中话单统计种类查询。
SQL语句培训教材

SQL语句培训教材一、SQL概述1、SQL初识SQL(Structured Query Language,结构化查询语言)是一种查询、插入、更新和删除数据,生成、修改和删除数据库对象,提供数据库安全控制,完整性及数据保护控制,是面向数据库的通用数据处理语言规范。
数据库对象包括表、视图、索引、同义词、族、触发器、函数、过程、包、数据库链和快照等。
2、SQL数据库的体系统结构(1)S QL数据库是表的汇集;(2)S QL表由行集构成,行是列的序列,每列对应一个数据项;(3)表或者是基本表,或者是视图;(4)一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。
存储文件与物理文件对应。
(5)用户可以用SQL语句对表进行操作,包括视图和基本表。
(6)S QL的用户可以是应用程序,也可以是终端用户。
3、SQL的组成SQL由4部份组成:(1)数据定义:SQL DDL。
定义SQL模式、基本表、视图和索引。
(2)数据操纵:SQL DML。
包括数据查询和数据更新(增、删、改)。
(3)数据操制:包括对基本表和视图的授权、完整性规则的描述和事务控制等。
(4)嵌入式SQL的使用规定二、数据库查询1、SQL语句符号:2、简单查询当我们可以用SQL*PLUS登录到SQL>下后,我们可以用DESC 显示某表的结构,也可以用select 语句简单查询表中的一些列的内容。
例:要查询T_person表中人员的姓名、出生日期及出生地,则:SQL> select name,dob,natal_place from t_person;3、伪列及伪表Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。
Oracle目前有以下的伪列:CURRVAL and NEXTVAL 使用序列号的保留字LEVEL 查询数据所对应的级ROWID 记录的唯一标识ROWNUM 限制查询结果集的数量有关伪列的详细解释和使用见相关章节。
SQL基础培训资料

SQL应用培训资料目录:1、Select语句基础(基本语法、单表查询、分组查询)2、Select语句高级应用(多表查询、子查询、嵌套查询、集合操作、用SQL创建SQL)3、DML语句(Insert、Update、Delete)4、DDL语句(Create、Alter、Drop)5、DCL语句(Grant、Revoke)章节内容:1.Select语句基础(基本语法、单表查询、分组查询)SELECT语句的功能:1.1select语句的基本语法和基本运算符:SELECT column1,column2.、、(distinct,expression,alias,||,as)/*指定提取的列FROM table1,table2、、/*指定表提取WHERE条件设置:/*设置条件范围GROUP BY/*分组HAVING/*设置分组条件ORDER BY ASC/DESC/*设置排序1.1.1各种运算符及运算等级:(算术运算符,连接运算符,关系运算符,其他运算符,逻辑表达式)1、(),+,-,*,/数字和日期数据可以使用进行计算2、||(=concat)连接运算符3、=,>,>=,<,<=关系运算符4、IS[NOT]NULL,LIKE,[NOT]IN其他运算符5、[NOT]BETWEEN AND其他运算符6、NOT逻辑表达式7、AND逻辑表达式8、OR逻辑表达式注释:①NULL值定义NULL值是未赋值的未知数NULL值是与零或空串不同的NULL值运算算术表达式中含有NULL值,表达式的计算结果为NULL(NULL值传播)查找NULL使用IS NULL字句②使用别名表示表或列(AS)利用表别名可以进行自查询(多个别名)和方便程序编写,利用列别名可以简化列显示标题③使用连接操作(||)可以归并多列显示为一列④重复行默认的查询结果包括重复行要去掉重复行需在SELECT语句中使用DISTINCT关键字⑤字符型与日期型字符型与日期型的值要用单引号标识字符型值大小写敏感,日期型值格式敏感⑥使用LIKE子句使用LIKE子句执行一个含有通配符的模糊查找。
sql语法知识点总结大全

sql语法知识点总结大全一、数据查询1. SELECT语句SELECT语句是SQL中用于从数据库中检索数据的关键字。
可以使用SELECT语句从一个或多个表中选择数据,还可以使用WHERE子句对查询结果进行筛选。
例如:```SELECT column1, column2FROM table_nameWHERE condition;```2. DISTINCT关键字DISTINCT关键字用于去除查询结果中的重复行,只返回唯一的行数据。
例如:```SELECT DISTINCT column1, column2FROM table_name;```3. WHERE子句WHERE子句可以用来过滤查询结果,只返回满足指定条件的数据。
可以使用比较运算符(=、<、>等)、逻辑运算符(AND、OR、NOT等)、IN、BETWEEN、LIKE等来构建条件。
例如:```SELECT column1, column2FROM table_nameWHERE column1 = 'value';```4. ORDER BY子句ORDER BY子句用于对查询结果进行排序,可以指定一个或多个列进行排序,并可以指定升序(ASC)或降序(DESC)。
例如:```SELECT column1, column2FROM table_nameORDER BY column1 ASC, column2 DESC;```5. GROUP BY子句GROUP BY子句用于将查询结果按照指定的列进行分组,并可以使用聚合函数(如COUNT、SUM、AVG等)进行汇总。
例如:```SELECT column1, COUNT(*)FROM table_nameGROUP BY column1;```6. HAVING子句HAVING子句用于对分组后的结果进行筛选,类似于WHERE子句对单行数据进行筛选,但是HAVING子句对分组后的数据进行筛选。
常用经典SQL语句大全完整版-权威人士总结出的-详解+实例

下列语句部分是Mssql语句,不可以在access中使用。
SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)首先,简要介绍基础语句:1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建备份数据的deviceUSE masterEXEC sp_addumpdevice ‟disk‟, ‟testBack‟, ‟c:\mssql7backup\MyNwind_1.dat‟--- 开始备份BACKUP DATABASE pubs TO testBack4、说明:创建新表create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:A:create table tab_new like tab_old (使用旧表创建新表)B:create table tab_new as select col1,col2… from tab_old definition only5、说明:删除新表:drop table tabname6、说明:增加一个列:Alter table tabname add column col type注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col)8、说明:创建索引:create [unique] index idxname on tabname(col….)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。
SQL语句专业知识讲座

De将查询成果保存到数组中。假如查询成 果中不涉及任何统计,则不创建这个数组。
②CURSOR CursorName:将查询成果保存到临时表中。假如指 定了一种已打开表旳名称,则VFP产生错误信息。执行完 SELECT语句后,临时表依然保持打开、活动,但只读。一旦关 闭临时表,则自动删除它。
操作符如下:
操作符
比较关系 举例
=
相等
学生表.班级=”金融”
==
完全相等 学生表.班级= =”金融”
LIKE
不精确匹配 学生表.学号 LIKE “99%”
>
不小于
分数.成绩>60
>=
不小于等于 分数.成绩>=60
<=
不不小于
分数.成绩<=60
<
不不小于等于
分数.成绩<60
3. 使用SELECT-SQL命令
假如指定了本地别名,那么在整个Select语句中都必须用这个别 名替代表名。
INNER JOIN:只有在其他表中包括相应统计(一种或多种)旳 统计才出目前查询成果中。
LEFT [OUTER] JOIN:在查询成果中包括JOIN左侧表中旳全部统 计,以及右侧表中匹配旳统计。这是左联接。
RIGHT [OUTER] JOIN:在查询成果中包括JOIN右侧表中旳全部 统计,以及左侧表中匹配旳统计。这是右联接。
INNER JOIN gxglxt!student;
INNER JOIN gxglxt!grade;
INNER JOIN gxglxt!course ; ON Grade.课程代号 = Course.课程代号 ; ON Student.学号 = Grade.学号 ; ON Classzc.班级代号 = Student.班级代号 ; ON Department.系部代号 = Classzc.系部代号; WHERE Classzc.系部代号 = "04"; .AND. Grade.开课学期 = "第1学期"; ORDER BY Student.学号; INTO CURSOR 视图1
SQL语法教材

一、利用SELECT 语句选取资料1. SELECT语法基本构架2. 选取全部资料3. 指定字段4. 选取不重复资料5. 衍生字段6. 资料排序7. 资料分组8. 加上选择条件9. 使用通配符10. 表之间的关联 Join11. 子查询12. UNION二、操作数据库记录1. 利用INSERT 语句新增记录2. 由其他表选取资料新增到指定表中3. 删除表中的记录4. 更新数据三、常用函数1. 汇总函数2. 字符串函数四、游标 CURSOR1. CURSOR定义的基本语法2.打开CURSOR3.提取CURSOR中的记录4.使用WHILE 循环语句遍历CURSOR5.释放CURSOR五、创建临时表六、创建存储过程 (CREATE PROCDURE)1.创建存储过程的基本语法2.删除存储过程3.执行存储过程4.定义变量5.为变量赋值6.一个典型的实例一、利用SELECT 语句选取资料1.SELECT 语法基本构架SELECT 字段1,字段2,…字段nFROM 表1,表2,…表nWHERE 条件GROUP BY 字段1,字段2,…字段nORDER BY字段1,字段2,…字段n字段可以是数据表中所定义的字段,也可以是一衍生字段。
在SELECT语句中可以一次选择数个字段,但每个字段之间必须以逗号隔开。
数据表在SELECT语句中可以一次指定一个或数个数据表,当指定一个以上表时就牵涉到表之间的关联(Join)。
条件资料选取时的设定条件,可以设定大于,小于或等于等基本判断条件,而且可以指定多个条件,每个条件之间以‘AND’或‘OR’逻辑运算符连接。
ORDER BY 、GROUP BY对选取的数据进行排序(Sorting)和分组(Grouping)等动作。
例1:想要知道库存数据为负数且使用中物料有哪些?EX: SELECT DISTINCT pt_part, pt_desc1, pt_desc2, pt_umFROM pt_mstr, ld_detWHERE pt_part = ld_part ANDPt_status = 1 AND (使用中)Ld_qty_oh < 0 (库存为负)ORDER BY pt_part (按物料编码排序)2.选取全部数据要浏览整张数据表内的数据时,只要用 SELECT * 即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sql常用语句汇总//基本语句SqlServer 查询Access语句SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\youfile.mdb';'admin';'youpwd',youtabname) AS a新建表:create table [表名] ([字段一],[类型],[是否为空],…)例:create table mytry(name char(5) not null,code smallint identity(1000,1)) //将code设为自动递增的数据,从1000依次递增1新增:insert into [表名] ([字段一],[字段二],…) values ('aa','bb',…) where … ;更新:update [表名] set [字段一]='aa',[字段二]='bb' where …删除:delete from [表名] where …查找:select [字段一](as…),[字段二],… from [表名] where …新加字段access:alter table tableName add[alter] column columnName columnTypesqlserver:alter table tableName add[alter] columnName columnType通配符like:反向:'037001002' like '%' + unitId + '%' //反向查找添加通配符后等于指定符的记录正向:unitId like '%037001002%' //正向查找包括指定符的记录%:任意匹配_:匹配一个字符,一个汉字等于两个字符:'__'WHERE au_fname LIKE '_ean' 将查找以ean 结尾的所有4 个字母的名字(Dean、Sean 等)。
注:access中以?代替[]:通配符:WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于C 与P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
[^]:非:WHERE au_lname LIKE 'de[^l]%' 将查找以de 开始且其后的字母不为l 的所有作者的姓氏。
escape:逃逸字符如like '张#%%三' escape '#' ,为查找张%某某的人selec t a.* from a,(……)b where a.id like b.id+'%'条件成熟后操作:SELECT(CASE WHEN EXISTS (SELECT * FROM view_name WHERE user_id = '1')THEN user_id END),user_name //user_id为选择字段FROM view_name按组查询:(当有统计函数,普通字段)SELECT codeid, SUM(codelevel) AS 水平FROM wdc_ts_codeGROUP BY codeid创建视图:create view myview as (select …)最右/最左一位right(字段,位数) = '匹配字符串'/left(字段,位数) = '匹配字符串'空字段字段is null建表及主键CREATE TABLE [dbo].[uploadFiles1]([id] [int] IDENTITY (1, 1) NOT NULL,PRIMARY KEY (id,……)) ON [PRIMARY]或CREATE TABLE [dbo].[uploadFiles1]([id] [int] IDENTITY (1, 1) NOT NULL primary key) ON [PRIMARY]批量更新,多表链接UPDATE A004A001SET status = '1000000000'FROM A004A001 INNER JOIN(SELECT MAX(id) AS id, A0100FROM A004A001GROUP BY A0100) AS b ON A004A001.A0100 = b.A0100 AND A004A001.ID = b.IDUPDATE SR_BuiltItem INNER JOIN SR_SourceItem ON (SR_BuiltItem.FieldName = SR_SourceItem.FieldName) AND (SR_BuiltItem.SetId = SR_SourceItem.SetId) SET SR_BuiltItem.Description = [SR_SourceItem].[Description];参数声明strSql=@"declare @MaxId int;Select @MaxId="+ dr["Cx_MainID"].ToString() +";"; (strSql=@"declare @MaxId int;select @MaxId=(Select IsNull(Max(Cx_MainID),0)+1 From SR_CxMain);";)strSql+="Delete From SR_CxMain Where Cx_MainID=@MaxId;";//精妙语句1、复制表(创建):select * into b from a where id<>12、复制表(新增):insert into b(a, b, c) select d,e,f from g;3、显示多表信息(不关联):显示文章、提交人和最后回复时间select a.title,ername,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b4、显示多表信息(关联):select a.id, from a,b where a.id = b.cid--select name,sex,(select b.age from b where =) as age from a5、清理多表信息(关联):删除主表中已经在副表中没有的信息delete from info where not exists (select * from infobz where info.infid=infobz.infid)6、得到表中最小的未使用的ID号SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleIDFROM HandleWHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)--SELECT personId, CASE WHEN serviceId IS NULL THEN '0000' ELSE serviceId ENDFROM pub_userLogin7、一个表中的数据是否在另一集合中(子查询)select aa,bb from aaa where aa in (select cc from bbb) --查询的是集合select aa,bb from aaa where aa = (select cc from bbb) --查询的是一条记录8、whereselect * from aaa where (select count(*) from bbb) = (select * from ccc)9、降序:order by aaa desc10、多表关联:两表:select [表名1.字段] from [表名1] inner join [表名2] on [表名1.字段] = [表名2.字段]或:select *,(select description from sr_department where code = (select top 1 code from web_tbl_login where userid =2)) as description from web_tbl_login where userid = 211、两表叠加:select "SCOTT"."web_tbl_login"."LOGINID","SCOTT"."web_tbl_login"."REALNAME","SCOTT"."wdc_ts_code"."CODE","SCOTT"."wdc_ts_code"."DESCRIPTION",from "SCOTT"."web_tbl_login" ,"SCOTT"."wdc_ts_code"where "SCOTT"."web_tbl_login"."BUILDUNITID" = "SCOTT"."wdc_ts_code".code and "SCOTT"."wdc_ts_code".codeid = 'NM'unionselect "SCOTT"."web_tbl_login"."LOGINID","SCOTT"."web_tbl_login"."REALNAME",'000' as "code","SCOTT"."web_tbl_login"."BUILDUNITID",from "SCOTT"."web_tbl_login"where "SCOTT"."web_tbl_login"."STATION" = '系统管理员'12.反回不同的行//有重复只显示一行select distinct id,name from a;13.Inner Join 与Left Join 与Right Join区别Inner Join:二者皆符合才显示Left Join:以左为主,右边符合条件则显示,否则为空Right Join:以右为主,……14.提示不是有效的标识符exec (@StrSql)15.declare @user varchar(1000)declare @moTable varchar(20)select @moTable = 'MT_10'declare @sql nvarchar(4000) --定义变量,注意类型set @sql='select @user = count(distinct userid) from '+@moTable --为变量赋值- -执行@sql中的语句exec sp_executesql @sql,N'@user varchar(1000) out' --表示@sql中的语句包含了一个输出参数,@user out --和调用存储过程差不多,指定输出参数值print @user//SQL函数1、数据类型:(创建table时的类型)1、整数:int 2.浮点:float 3.二进制:binary4.字符:char,varchar,nchar5.文本、图形:text/ntext-image6.日期:datetime7.货币:money2、变量声明/赋值:1.全局变量:declare @@x int;2.局部变量:declare @x int,@mychar char(10);set/select @x = 1 , @mychar = '123'3、运算符:> < >= <= <> not and or4、常用函数:1.平均:avg([字段名])----(as [新字段名])2.列名: count([字段名])--(as [新字段名])3.最大值:max([字段名])----(as [新字段名])4.最少值:min([字段名])----(as [新字段名])5.总和:sum([字段名])----(as [新字段名])6.平均差:stdev([字段名])--(as [新字段名])5.系统函数:1.列名:col_name(<table_id>,<column_id>)2.列宽:col_length(<table_name>,<column_name>)3.数据表编号:object_id(<数据表名称>)3.数据表名称:object_name(<数据表编号>)4.数据库编号:db_id(<database_name>)5.数据库名称:db_name(<database_id>)6.标识增量:ident_incr(<标识字段名>)--(as …)7.标识初值:ident_seed(<标识字段名>)--…6其它运算符:1。