sql笔记
sql必知必会读书笔记
sql必知必会读书笔记《SQL必知必会》是一本非常实用的SQL学习书籍,以下是我的读书笔记:1. SQL是什么?SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。
它可以用于创建、修改和删除数据表,以及查询、更新和删除数据。
2. SQL的基本语法SQL语句以分号结尾。
常用的SQL语句包括SELECT、INSERT、UPDATE、DELETE等。
其中,SELECT语句用于查询数据,INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据。
3. SELECT语句的基本结构SELECT语句的基本结构为:SELECT 列名FROM 表名WHERE 条件表达式。
其中,列名表示要查询的数据,表名表示要查询的表,条件表达式表示查询的条件。
4. WHERE子句WHERE子句用于指定查询条件,可以使用比较运算符(如=、<>、>、<、>=、<=)和逻辑运算符(如AND、OR、NOT)进行组合。
例如,查询年龄大于18岁的员工信息:SELECT * FROM employees WHERE age > 18;5. ORDER BY子句ORDER BY子句用于对查询结果进行排序,可以按照一个或多个列进行排序。
默认情况下,排序方式为升序(ASC),也可以使用DESC关键字进行降序排序。
例如,按照员工姓名升序排列:SELECT * FROM employees ORDER BY name ASC;6. GROUP BY子句GROUP BY子句用于将查询结果按照一个或多个列进行分组。
可以使用聚合函数(如COUNT、SUM、AVG、MAX、MIN)对每个分组进行计算。
例如,统计每个部门的平均工资:SELECT department, AVG(salary) FROM employees GROUP BY department;7. HAVING子句HAVING子句用于对分组后的结果进行筛选。
MSSQL编程笔记三leftjoinon和leftjoinwhere区别
MSSQL编程笔记三leftjoinon和leftjoinwhere区别今天遇到⽤left join时候发现查询出来的结果⽐预期的少了很多?不知道为什么,上⽹⼀查,原来如此!在使⽤left join时,on和where条件的区别如下:1、 on条件是在⽣成临时表时使⽤的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
可以理解为,左表记录保留,右表不满⾜条件的填写为null2、where条件是在临时表⽣成好后,再对临时表进⾏过滤的条件。
这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
假设有两张表:表1 tab1:id size1 102 203 30表2 tab2:size name10 AAA20 BBB20 CCC两条SQL:1、select * form tab1left join tab2 on (tab1.size = tab2.size) where =’AAA’2、select * form tab1left join tab2 on (tab1.size = tab2.size and =’AAA’)第⼀条SQL的过程:1、中间表on条件:tab1.size = tab2.sizetab1.id tab1.size tab2.size 1 10 10 AAA2 20 20 BBB2 20 20 CCC3 30 (null) (null)2、再对中间表过滤where 条件:=’AAA’tab1.id tab1.size tab2.size 1 10 10 AAA第⼆条SQL的过程:1、中间表on条件:tab1.size = tab2.size and =’AAA’(条件不为真也会返回左表中的记录)tab1.id tab1.size tab2.size 1 10 10 AAA2 20 (null) (null)3 30 (null) (null)其实以上结果的关键原因就是leftjoin,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。
笔记:SQL基础
SELECT查询
SELECT [ ALL | DISTINCT ] [ TOP expression [ PERCENT ] [ WITH TIES ] ] { * | { table_name | view_name | table_alias }.* | { column_name | [ ] expression | $IDENTITY | $ROWGUID } [ [ AS ] column_alias ] | column_alias = expression } [ ,...n ] FROM table_name | view_name alias_name WHERE filter_Criteria ORDER BY ordering_criteria
DML(数据操作语言) ——查询、插入、删除和修改数据库中的数据; ——SELECT、INSERT、 UPDATE 、DELETE等; DCL(数据控制语言) ——用来控制存取许可、存取权限等; ——GRANT、REVOKE 等; DDL(数据定义语言) ——用来建立数据库、数据库对象和定义其列 ——CREATE TABLE 、DROP TABLE 等 变量说明、流程控制、功能函数 ——定义变量、判断、分支、循环结构等 ——日期函数、数学函数、字符函数、系统函数等
通配符使用说明
通常与LIKE关键字一起来使用 可以用在检查约束中使用LIKE 在后面的查询语句中还会经常使用到
逻辑表达式
逻辑表达式 AND OR NOT
说明 逻辑与 逻辑或 逻辑非
示例 1 AND 1 = ; 1 AND 0 = 0; 0 AND 0 = 0; 1 OR 1 = 1; 1OR 0 = 1; 0 OR 0 = 0; NOT 1 = 0; NOT 0 = 1;
专升本SQL笔记
格式:
update 表名 set 字段名=表达式
where 条件
三.数据删除
格式:
delete from 表名 where 条件
注意: 逻辑删除记录
表的定义
一. SQL语言建立表的命令:
查询哪些城市至少有职工的工资为1250元
select 城市 from 仓库表 where 仓库号 in;
(select 仓库号 from 职工表 where 工资=1250)
查询供应商号为S4的订购单表发出职工的
职工号和仓库号.
select 职工号,仓库号 from 职工表
查询供应商名中含有公司(不含厂)的
供应商表中的信息.
select * from 供应商表 where
供应商名 like "%公司"
查询地址不等于北京的供应商的信息
select * from 供应商表 where 地址!="北京"
SQL语言排序
排序命令: order by
仓库表.仓库号
查询面积多于200的城市
及所在的职工的职工号
select 城市,职工号 from 仓库表,职工表
where 面积>200 and 职工表.仓库号=
仓库表.仓库号
嵌套查询
条件: 查询的数据来源于一个表,
但条件涉及到另外一个表
SQL集合的并运算符:
union
显示前几项记录
短语: top 记录号
注意: top 短语必须和order by 同时
使用才有效.
例如:
显示职工表中工资最高的前3项记录
sql-libs靶场过关笔记
sql-libs靶场过关笔记掌握SQL学习库靶场,打开数据库之门!SQL-Libs靶场过关笔记一、sql-libs介绍sql-libs 是一个工具,用于检查SQL 代码是否按照最佳实践标准撰写。
它提供了一系列的规范,可以用来检验脚本的准确性、精确性和效率,以及避免潜在的安全隐患。
此外,sql-libs还支持项目级设置,以及全局规范,可以帮助企业在开发过程中保持代码一致性。
二、sql-libs 过关笔记1、Table-Level 过关sql-libs在这一级别提供了一些比较常见的表级规则,用于检查表的建立,更新时的一致性。
例如,该规范要求在表创建时,默认值要指定为NULL;索引要按照可用索引规则创建;表内容应遵循一致性结构;字段应符合各类数据类型规则等。
2、SQL 语句过关该等级中,sql-libs提供了一系列对SQL语句的行为规则,以及规范,如缩宽查询、索引键查找、约束语句检查等。
为了保证SQL 语句的可读性,sql-libs还要求充分注释,以及避免使用不必要的冗余代码。
3、通用语句过关sql-libs的普遍性规定用于从应用程序和脚本中建立实用数据结构。
例如,有关创建完整流程的细节、关联表、视图等;并且创建不同类型的索引,以及支持一致性和数据模式。
4、数据库设计过关最后,sql-libs提供了关于数据库设计的一些指导,以确保数据库的安全性和高效性。
包括,默认值的指定,外键的添加,以及为高性能实践进行必要的索引添加等。
三、总结作为一个安全的SQL标准,sql-libs 提供了用于构建高质量数据库的一些规范和细则。
本文概括了sql-libs几个常见的过关等级,以便帮助技术人员和开发人员在核查数据库时能够按照最佳规范进行检查。
sql-libs帮助企业达到SQL高效管理,数据语义一致性,高施压性能,降低SQL 脚本出错率,并大大提高开发效率。
全国计算机二级sql知识点
全国计算机二级sql知识点
全国计算机二级SQL的知识点包括但不限于:
1. SQL的数据定义语言(DDL),如CREATE、ALTER、DROP等命令,用于定义和管理数据库中的表、视图、索引等对象。
2. SQL的数据操纵语言(DML),如INSERT、UPDATE、DELETE等命令,用于添加、修改、删除数据库中的数据。
3. SQL的数据查询语言(DQL),如SELECT命令,用于查询数据库中的数据,可以进行条件查询、聚合查询、连接查询等操作。
4. SQL的数据控制语言(DCL),如GRANT、REVOKE等命令,用于控制数据库中的数据访问权限。
5. 数据库规范化理论,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等,用于规范化数据库表的设计,消除数据冗余和提高数据一致性。
6. 数据库设计的基本概念和方法,如ER图、实体-关系模型等,用于设计数据库结构和数据关系。
7. 数据库的备份与恢复技术,如备份数据库文件、恢复数据库文件等,用于保护数据库的数据安全和完整性。
8. 数据库的性能优化技术,如索引优化、查询优化等,用于提高数据库性能和响应时间。
9. 数据库的安全性管理,如用户账户管理、权限控制等,用于保护数据库的安全和机密信息。
以上是全国计算机二级SQL知识点的一部分,仅供参考。
具体考
试内容和要求可能因地区和考试机构而有所不同,建议查阅相关的考试大纲和教材。
(完整word版)SQL常用的增删改查语句、视屏笔记
SQL:结构化查询语言,是国际化标准组织采纳的标准数据库语言作用:数据库管理员可以用利用次语言操作数据库系统,即:SQL是一种能够被数据库系统读懂的操作语言。
T—SQL是微软公司针对SQL Server这种关系数据库所定义的一种SQL语言,用户可以完成Server数据库中的所有操作。
SQL的分类:(1):数据定义语言,DDL用来创建数据库和数据库中的各种对象数据库中的对象包括:表、视图、索引、存储过程、触发器DDL常用的命令包括:create、alter、drop(2):数据操纵语言,DML可以完成对数据库中数据的查询、更新、删除、插入的功能DML常用的命令包括:select、update、delete、insert(3)数据控制语言,DCLDCL常用的命令包括:grant、revoke、deny(4)数据类型1、数字数据类型a、整型数据类型:bigint、int、smallint、tinyintb、浮点数据类型:float、realc、固定精度数据类型:decimal、numericd、货币数据类型:money、smallmoney将数据格式转换成字符串方法:STR(ID);---ID为数据类型,STR(ID)为字符串2、字符数据类型:varchar、char、text、nchar、nvarchar、ntext区别char和varchar数据类型:char数据类型是存放固定长度的字符Varchar数据类型是存放动态长度的字符char(14),实际放入到数据库的字符长度为14个字符,如果实际存储的长度小于定义的长度,那么数据库会在次字符串后面加上3个空格1、insert语句:insert语句是属于SQL语言中的DML作用:为表插入数据你向一个表中插入一条新记录,但有一个字段没有提供数据。
在这种情况下,有下面的四种可能:1、如果该字段有一个缺省值(默认值),该值会被使用。
2、如果该字段可以接受空值,而且没有缺省值,则会被插入空值。
计算机三级数据库技术SQL基础知识点
计算机三级数据库技术SQL基础知识点(范文推荐)导语:SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
下面是计算机三级数据库技术SQL基础知识点,一起来学习下吧:1、说明:创建数据库CREATE __E database-name2、说明:删除数据库drop database dbname3、说明:备份sql server__ 创建备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack','c:mssql7backupMyNwind_1.dat'__ 开始备份BACKUP __E pubs TO testBack4、说明:创建新表create table tabnamecol1 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、说明:删除新表tabname6、说明:增加一个列Alter table tabname add column col type注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键:Alter table tabname add primary keycol说明:删除主键:Alter table tabname drop primary keycol8、说明:创建索引:create [unique] index idxname on tabnamecol。
qlsql学习笔记
、PL/SQL中的DML操作:1、select * [into v_var/v_record]from tb_name[where expression]2、insert into tb_namevalues()[returning rowid,tb_row into v_rowid,v_var]3、update tb_name(这里也可以是个select查询)set tb_col=expression[where expression/current of cur_name][returning rowid,tb_row into v_rowid,v_var](注意:没有from关键字,sqlserver中是有的p)4、deletefrom tb_name[where expression/current of cur_name][returning rowid,tb_row into v_rowid,v_var]二、语句块结构1、<<de_name>>declare/*declaretive section*/begin/*statment*/exception/*exception section*/end de_name三、错误处理1、申明异常declare e_val exception2、抛出异常raise e_val3、处理异常exception when e_val1 then expression1;when e_val2 then expression2;...;end;4、others异常处理器:能捕获所有的异常,有2个内置函数sqlcode,sqlerrmwhen others thenv_errorcode:=sqlcode;v_errortext:=substr(sqlerrm,1,200);insert into log_table values(v_errorcode,v_errortext);5、raise_application_error:创建自己的错误的消息四、变量1、v_var 类型[constant] [not null] [:=value]五、类型1、标量类型:char、number、date2、复合类型:record、nested table、index-by table、varray3、LOB类型:BFILE、LOB、CLOB、NLOB4、引用类型:REF CURSOR、REF OBJECT TYPE5、对象类型:object type、sys.anytype、sys.anydata、sys.anydateset六、条件语句1、if expression then/*statment*/elsif expression then/*statment*/else/*statment*/end if2、<<case_name>>case test_varwhen value1 then expression1;when value2 then expression2;when value3 then expression3;else expression;end case case_name;3、<<case_name>>casewhen expression1 then expression1;when expression2 then expression2;when expression3 then expression3;else expression;end case case_name;七、循环结构1、loop/*statment*/if expression then exit;end if;end loop2、loop/*statment*/exit when expression;end loop3、while expression loop/*statment*/end loop4、for v_count in [reverse] 1..10 loop/*statment*/end loop八、GOTO语句1、/*statment*/if expression then goto 1_name;/*statment*/<<1_nanme>>null;(空语句)九、动态sql语句1、execute immediate statment [into v_var] [using]例1:execute immediate 'select count(*) from emp' into v_count例2:execute immediate 'select * from emp where emp_id<=:v_id' using 7788一○、批绑定1、forall v_count in 1..10 (此处没有loop循环)/*dml_statment*/1)、事务性问题:操作中一行有错误,只有该行回滚,其他的提交(参考forall.sql)2)、有save exception特性(参考forall.sql)2、bulk collect:可以用于select into,fetch into,returning into一一、自治事务(它是独立的,与父事务状态无关)1、pragma autonomous_transaction2、必须在语句块的说明部分3、只有(顶层自治块;本地的、单个的和打包的子程序;对象类型的方法;数据库触发器)可以标记为自治4、申明为自治的事务必须要以commit或rollback语句结束一二、游标1、cursor cur_name(v_var1,v_var2..) is select_statment [for update of col_1,col_2..] [nowait/wait n];open cur_name;fetch cur_name into v_var;close cur_name;2、属性有:%found、%notfound、%isopen、%rowcount3、处理隐式游标:sql%notfound、sql5rowcount等等4、游标for循环:游标申明后即可用for v_count in cur_name loop...end loop处理数据5、隐式for循环:for v_count in (select * from tb_name) loop...end loop;6、游标变量声明:type type_name is ref cursor [return return_type]7、游标变量使用:open v_cursorvar for select ...一三、过程和函数1、create or replace procedure proc_name(var [in|out|in out] type,..)asbegin/*statment*/end2、create or replace function func_name(var [in|out|in out] type,..)return return_typeasbegin/*statment*/return expression;end3、call的用法:call proc/func/对象的方法/java子程序(argument_list)call func(argument_list) into host_variable(只限于函数)(注意:call是sql语句,不是pl/sql语句)一四、包1、创建包头:create or replace package package_nameas/*...*/end2、创建包体:create or replace package body body_nameas/*...*/end3、可串行复用的包:create or replace package package_name aspragma serially_reusable(申明为可串行复用)4、可串行复用的包的特点是重置包内的游标的状态,节省内存一五、使用共享池(dbms_shared_pool)1、keep(name,flag)锁定对象在共享池中2、unkeep(name,flag)删除共享池中的对象3、sizes(minsize number)把共享池中的内容响应到屏幕上4、aborted_request_threshold(size number)oracle不会释放对象,除非至少需要size个字节一六、触发器1、触发器格式:create or replace trigger trigger_name{before|after|instead of} {insert|update|delete}on object_namedeclare/*..*/begin/*statment*/end2、系统触发器:create or replace trigger trigger_name{before|after} {事件}on object_name[for each row]declare/*..*/begin/*statment*/end注意:after的事件:starup,servererror,logonbefore的事件:shutdown,logoff同时满足的:create,drop,alter3、限制:不能发出事务控制语句(如:commit,rollback等);其调用的proc和func里不能有事务控制语句(自治事务除外)4、变异表:触发器中对触发器的本身触发的表再有查询的动作,那就是变异表;(参考方案mutating.sql)一七、集合1、index-by表type t_val is table of type index by binary_integer2、嵌套表type t_val is table of type [not null](一定要初始化)3、可变数组type t_val is varray(int) of type [not null]4、exists,count,limit,5、first,last,next,prior6、extend,trim,delete一八、对象(参考point.sql,pointsql.sql)1、create or replace type obj_name as OBJECT(/*statment*/)2、create or replace type body obj_name as/*statment*/begin/*statment*/end;3、大对象(LOB)(参考lob_dml.sql)一九、管道化表函数(参考pipelined.sql)1、返回整个行的集的函数,不是一次全部返回2、作用:把数据从一种类型转化成另一种类型二○、表函数1、返回整个行的集(作为一个集合)的函数二一、外部里程1、C外部例程1)、先把你的C函数编译到操作系统上的一个共享库中;2)、建立监听程序来支持与外部例程驱动器extproc的连接;3)、创建一个数据字典对象来代表操作系统上的共享库;create or replace library sendmaillibraryas '/libs/libmail.so';4)、创建包装来调用该例程。
SQL联结笔记(内联结,自联结,自然联结,外联结区别以及应用)
SQL联结笔记(内联结,⾃联结,⾃然联结,外联结区别以及应⽤) SQL中有三种联结,分别是:内联结,⾃然联结,外联结.联结是针对不同表联合起来的⼀种⽅式.应⽤的对象是:表(table)为了⽅便验证练习理解,⾸先展⽰所要⽤到的表的内容:1.Customers表:数据(可复制,创建表,插⼊数据):CREATE TABLE Customers(cust_id char(10) NOT NULL ,cust_name char(50) NOT NULL ,cust_address char(50) NULL ,cust_city char(50) NULL ,cust_state char(5) NULL ,cust_zip char(10) NULL ,cust_country char(50) NULL ,cust_contact char(50) NULL ,cust_email char(255) NULL);-- -------------------------- Populate Customers table-- ------------------------INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES('1000000001', 'Village Toys', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'John Smith', 'sales@');INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)VALUES('1000000002', 'Kids Place', '333 South Lake Drive', 'Columbus', 'OH', '43333', 'USA', 'Michelle Green');INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES('1000000003', 'Fun4All', '1 Sunny Place', 'Muncie', 'IN', '42222', 'USA', 'Jim Jones', 'jjones@');INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES('1000000004', 'Fun4All', '829 Riverside Drive', 'Phoenix', 'AZ', '88888', 'USA', 'Denise L. Stephens', 'dstephens@'); INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)VALUES('1000000005', 'The Toy Store', '4545 53rd Street', 'Chicago', 'IL', '54545', 'USA', 'Kim Howard');-- ----------------------展⽰:2.Vendors:-- --------------------- Create Orders table-- -------------------CREATE TABLE Orders(order_num int NOT NULL ,order_date datetime NOT NULL ,cust_id char(10) NOT NULL);-- ------------------------ Populate Vendors table-- ----------------------INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)VALUES('BRS01','Bears R Us','123 Main Street','Bear Town','MI','44444', 'USA');INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)VALUES('BRE02','Bear Emporium','500 Park Street','Anytown','OH','44333', 'USA');INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)VALUES('DLL01','Doll House Inc.','555 High Street','Dollsville','CA','99999', 'USA');INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)VALUES('FRB01','Furball Inc.','1000 5th Avenue','New York','NY','11111', 'USA');INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)VALUES('FNG01','Fun and Games','42 Galaxy Road','London', NULL,'N16 6PS', 'England');INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)VALUES('JTS01','Jouets et ours','1 Rue Amusement','Paris', NULL,'45678', 'France');-- -----------------------3.Products:-- ----------------------- Create Products table-- ---------------------CREATE TABLE Products(prod_id char(10) NOT NULL ,vend_id char(10) NOT NULL ,prod_name char(255) NOT NULL ,prod_price decimal(8,2) NOT NULL ,prod_desc text NULL);-- ------------------------- Populate Products table-- -----------------------INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('BR01', 'BRS01', '8 inch teddy bear', 5.99, '8 inch teddy bear, comes with cap and jacket');INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('BR02', 'BRS01', '12 inch teddy bear', 8.99, '12 inch teddy bear, comes with cap and jacket');INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('BR03', 'BRS01', '18 inch teddy bear', 11.99, '18 inch teddy bear, comes with cap and jacket');INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('BNBG01', 'DLL01', 'Fish bean bag toy', 3.49, 'Fish bean bag toy, complete with bean bag worms with which to feed it'); INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('BNBG02', 'DLL01', 'Bird bean bag toy', 3.49, 'Bird bean bag toy, eggs are not included');INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('BNBG03', 'DLL01', 'Rabbit bean bag toy', 3.49, 'Rabbit bean bag toy, comes with bean bag carrots');INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('RGAN01', 'DLL01', 'Raggedy Ann', 4.99, '18 inch Raggedy Ann doll');INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('RYL01', 'FNG01', 'King doll', 9.49, '12 inch king doll with royal garments and crown');INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)VALUES('RYL02', 'FNG01', 'Queen doll', 9.49, '12 inch queen doll with royal garments and crown');4.Orders-- --------------------- Create Orders table-- -------------------CREATE TABLE Orders(order_num int NOT NULL ,order_date datetime NOT NULL ,cust_id char(10) NOT NULL);-- ----------------------- Populate Orders table-- ---------------------INSERT INTO Orders(order_num, order_date, cust_id)VALUES(20005, '2012-05-01', '1000000001');INSERT INTO Orders(order_num, order_date, cust_id)VALUES(20006, '2012-01-12', '1000000003');INSERT INTO Orders(order_num, order_date, cust_id)VALUES(20007, '2012-01-30', '1000000004');INSERT INTO Orders(order_num, order_date, cust_id)VALUES(20008, '2012-02-03', '1000000005');INSERT INTO Orders(order_num, order_date, cust_id)VALUES(20009, '2012-02-08', '1000000001');好吧,如上原始数据已经有了,现在我们来理解SQL⼏种联结之间的关系和细节.1.为什么要使⽤联结: 有时候为了⽅便存储,我们会把数据分解为多个表.例如,现在某公司需要⽤到以下产品,别⼈对应的供应商和价格如下:这⼀张表存了供应商的信息和产品以及价格.可以看到这个供应商给我们提供了两种产品:QQ和邮箱;这两种产品都是出⾃于同⼀个供应商,因此我们存储数据的时候,"供应商的地址"和"联系⼈" 就被重复存储了".现实应⽤中,⼀个供应商可能提供的产品远远超过2个,这就会给我录⼊数据和存储数据和更新数据带来很⼤的⿇烦.譬如:这个提供多种产品的供应商的地址需要更新的时候于是我们可以把张表分解成两个表,关联两个表主键(⽅便查询,也就是相关联的共同的信息),如下:1.2.这样⼀来,后续要我更新某个供应商的地址和联系⼈的时候,只需要对表2中的对应内容进⾏更新就好了.这样分解表后的两个表更直观⼀些了,但是在我们处理查询数据的时候,就要关联两个表中的信息了,操作的复杂度就增⼤了.按照我们常规的处理⽅式,如果我们要查提供某⼀个产品的供应商的全部信息,那就要先到表2中把供应商的地址和联系⼈先查出来,然后再结合表1中对应产品的其他信息这时我们⼀种⽅式是分步处理:1,按照步骤来,⾸先在表1中查出对应产品的供应商2.在表2中查出对应的供应商的地址和联系⼈信息另外⼀种是,嵌套⼦查询,⼀步设置完查询但是这两种⽅式,操作起来都不是太⽅便,在输⼊的时候可能要多输⼊⼀些条件和内容才能达到我们想要的结果.因此就有了联结的概念.如最上⾯所说,联结有⼏种⽅式:内联结,⾃联结,⾃然联结,外联结内联结(INNER JOIN):内联结也可以称为等值联结.例如:如以上两个表格中,每个订单包含订单编号,客户ID,订单⽇期,在Orders表中存储为⼀⾏,各订单的物品存储在相关的OrdersItems表中.Orders表不存储顾客的信息,只存储顾客ID.顾客的实际信息存储在Customers表中.现在,假如需要列出订购物品"RGAN01"的所有顾客,应该怎样检索?步骤为下:1.检索包含物品RGAN01的所有订单的编号.2.检索具有前⼀步骤列出的订单编号的所有顾客的ID3.检索前⼀步骤返回的所有顾客ID的顾客信息⽅法⼀:以上每步可以单独作为⼀个查询来执⾏.可以把⼀个SELECT 语句返回的结果⽤于另外⼀条SELECT语句的WHERE⼦句.⽅法⼆:也可以使⽤⼦查询把3个查询组合成⼀条语句⽅法三:直接使⽤内联结来关联两个表直接查询.⽅法⼀实现:3.⽅法三实现:上⾯是通过 WHERE 语句来实现的,这⾥⾯等同于 INNER JOIN...ON (INNER JOIN基本上只⽤于联结两个表,不太适合多个表联结).INNER JOIN ...ON 的使⽤⽅式2.⾃联结例如:现在要给Jim Jones同⼀公司的所有顾客发送⼀封信件.这个查询要求⾸先找出Jim Jones⼯作的公司,然后找出在该公司⼯作的顾客.下⾯是实现代码:通过customers表可以看出,cust_contact ⾥⾯对应的 Jim Jones 的公司是,Fun4All,然后筛选出 Fun4All 公司的其他联系⼈和客户ID以上是通过⼦查询的⽅式实现的.先对对⽐⼀下⾃联结⽅式实现:此处要⾮常⼩⼼⼀定是要c2来进⾏过滤3.⾃然联结⽆论何时对表进⾏联结,应该⾄少有⼀列不⽌出现在⼀个表中(被联结的列).标准的联结(前⼀课中介绍的内联结)返回所有数据,相同的列甚⾄多次出现.⾃然联结排除多线出现,使每列只返回⼀次.⾃然联结要求只能选择那些唯⼀的列,⼀般通过对⼀个表使⽤通配符(SELECT*),⽽对其他表的列使⽤明确的⼦集来完成.如:在这个例⼦中,通配符只对第⼀个表使⽤,所有其他列明确列出,所以没有重复的列被检索出来.事实上,我们⽬前所学的每个内联结都是⾃然联结4.外联结许多联结将⼀个表中的⾏与另⼀个表中的⾏相关联,但有时候需要包含没有关联⾏的那些⾏.例如:A.对每个顾客下的订单进⾏计数,包括那些⾄今尚未下订单的顾客;B.列出所有产品以及订购数量,包括没有⼈订购的产品C.计算平均销售规模,包括那些⾄今尚未下订单的顾客.这种联结包含了那些在相关表中没有关联⾏的⾏的联结⽅式就是外联结例如:外联结使⽤的时候,注意区分 LEFT OUTER JOIN 还是 RIGHT OUTER JOIN 就是设定展⽰哪边的表的所有⾏.另外还可以使⽤FULL。
SQL必知必会笔记
SQL必知必会笔记第一章了解SQL1. 数据库是一个以某种有组织的方式存储的数据集合保存有组织的数据的容器(通常是一个文件或是一组文件) 2. 数据库软件应成为数据库管理系统DBMS3. 表某种特定类型数据的结构化清单4. 模式(schema)关于数据库和表的布局及特性的信息5. 列(Colomn)表中的一个字段。
所有表都是由一个或是多个列组成的。
6. 数据类型(datatype)所容许的数据的类型。
每个表列都有相应的数据类型,他限制(或容许)该列中存储的数据。
7. 行表中的一个记录8. 主键(primary key)一列或者一组列,其值能够唯一标识表中的每个行唯一标识表中每行的这个列(或这组列)称为主键。
主键用来表示一个特定的行。
没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。
9. 表中任何列都可以作为主键,只要满足(1)任意两行都不具有相同的主键值(2)每个行都必须具有一个主键值(主键列不允许NULL值)(3)主键列中的值不允许修改或更新(4)主键值不能重用,即某列从表中删除,它的主键不能赋给以后的新行。
第三章按多个列排序1( 子句(clause)sql语句由子句构成,有些子句是必须的,而有的是可选的。
一个子句通常由一个加上所提供的数据组成。
2( 子句的例子有SELECT语句的FROM子句3( ORDER BY 子句的位置在指定一条ORDER BY子句时,应保证它是SELECT语句中最后一条子句。
该子句的次序不对将会出现错误消息。
4( 按多个列排序执行多个列排序命令前可以发现同样的工资的人名不是按字典序排列的执行以后~~~撒花~~按列位置排序select FIRST_NAME,salaryfrom employeesorder by salary,FIRST_NAME;等价于select FIRST_NAME,salaryfrom employeesorder by 2,1;5( Order by 默认为升序排序而order by salary DESC 为降序排序DESC关键字只直接应用到位于其前面的列名ORDER BY salary DESC, FIRST_NAME; 6( 在SELECT语句中,数据根据WHERE 子句中指定的搜索条件进行过滤。
我的渗透笔记之sql绕过技巧
我的渗透笔记之sql绕过技巧SQL绕过技巧是渗透测试中非常重要的一部分,可以帮助渗透测试人员绕过应用程序的安全机制,并获取未授权的访问权限。
以下是一些常见的SQL绕过技巧:1. 注释符绕过:在SQL语句中使用"--"或"#"来注释掉原本的语句,然后添加自己的语句。
例如:```SELECT * FROM users WHERE username = 'admin' --' AND password = 'password'```2. 字符串转义绕过:在SQL语句中使用转义字符(通常是“\”)来绕过防护机制。
例如:```SELECT * FROM users WHERE username = 'admin\' AND password = 'password'```3. 引号绕过:在SQL注入语句中,可以使用不同类型的引号来绕过输入过滤。
例如,如果应用程序使用单引号来包围输入,可以尝试使用双引号或反引号绕过。
例如:```SELECT * FROM users WHERE username = "admin" AND password = "password"```4. 逻辑运算符绕过:可以使用逻辑运算符(例如AND、OR)来重写原始SQL语句,绕过应用程序的过滤机制。
例如:```SELECT * FROM users WHERE username = 'admin' OR 1=1 --' AND password = 'password'```5. UNION注入:在SQL注入攻击中,可以使用UNION操作符将恶意查询结果与原始查询结果合并。
例如:```SELECT username, password FROM users WHERE username = 'admin' UNION SELECT credit_card_number, NULL FROM credit_cards WHERE 'a' = 'a'```6. 盲注:在无法获取明确结果的情况下,可以尝试使用盲注(Boolean-based Blind SQL Injection或Time-based Blind SQL Injection)来判断输入是否存在漏洞。
SQL多条件模糊查询、IN、自定义函数笔记(一)
SQL多条件模糊查询、IN、⾃定义函数笔记(⼀)在⼯作中遇到的⼀些关于Sql查询的问题整理记录,实现环境 SQLService 2014⼀、对同⼀个字段,多个关键词的查询⼏种实现⽅式基本语法:SELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern案例表(TbUser):Id LastName FirstName1Adams John2Bush George3Carter Thomas查询语句实现:1、单个关键词模糊查询SELECT * FROM TbUser WHERE LastName LIKE '%d%'2、多个关键词查询实现⼀:SELECT *FROM TbUserWHERE LastName like '%d%' or LastName LIKE '%e%' or LastName LIKE '%d%'实现⼆:SELECT stName,temp.mFROMTbUser,(values('%a%'),('%b%'),('%c%')) as temp(m)FROM stName LIKE temp.m实现三:SELECT LastNameFROM TbUserWHERE LastName LIKE any(array['%a%','%b%','%e%'])实现四:SELECT LastNameFROM TbUserWHERE LastName LIKE '%[a|b|e]%’⼆、sql中In关键词的变相实现当匹配数据数据⽐较多的时候,In需要逐⼀⽐对,效率低下,构造LEFT JOIN 结构会⽐较⼤的提⾼效率。
语法:SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,...)实现⼀:SELECT *FROM TbUserWHERE Id in (1,2,3,4)实现⼆、SELECT x FROM TbUser uLEFT JOIN TbDetails as d on u.Id=d.FkUserIdWHERE d.FkUserId is not null实现三:如果⼜⼀个数组需要进⾏In查询,可以如下实现,构造临时表进⾏Inner join 查询SELECT u.*FROM bUser uINNER JOIN ( VALUES('a'),('b'),('c'),('d'),('e') ) as temp(m) ON stName=temp.m。
SQLServer学习笔记sql的范围内查找,sql数据类型,字符串处理函数
SQLServer学习笔记sql的范围内查找,sql数据类型,字符串处理函数sql的范围内查找(1)between.....and⽤法通常情况下我们查找⼀个在某固定区域内的所有记录,可以采⽤>=,<=来写sql语句,例如:查找订单价格在1000到2000之间的所有记录,可以这样写:1 select * from sales.ordervalues2 where val>=1000 and val<=2000查询结果:此处的sales.ordervalues来⾃于定义的视图,关于视图后续会讲到。
如果采⽤between.....and.....则可以同样达到效果。
1 select * from sales.ordervalues2 where val between 1000 and 2000注意⼀点:between....and.....是包含边界的,即此处包含1000和2000这个边界值。
(2)in ⽤法假如要查找1号顾客,2号顾客,9号顾客订单信息,⼀般情况下,我们会这样写:1 select * from sales.ordervalues2 where custid=1 or custid=2 or custid=9结果为:采⽤in,则减少了写法的繁杂,可以这样如下写法也能达到要求。
1 select * from sales.ordervalues2 where custid in(1,2,9)(3)like⽤法,⽤来匹配字符或字符串。
假如要查找雇员表Hr.employees⾥⾯lastname⾥包含a的字符。
可以这样写:1 select * from Hr.employees2 where lastname like '%a%'显⽰结果为:其中%表⽰通配符,即可以为任意字符。
sql数据类型sql包含多种数据类型,满⾜多种开发需求。
常见的数据类型包括:(1)⼆进制数据类型。
SQL重要知识点梳理!
SQL重要知识点梳理!MySQL数据库-基础知识1.说说主键、外键、超键、候选键的差别并举例∙超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键。
∙候选键(candidate key):不含有多余属性的超键称为候选键。
也就是在候选键中,若再删除属性,就不是键了!∙主键(primary key):用户选作元组标识的一个候选键程序主键。
∙外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R 中称为外键。
举个例子,对于学生信息(学号身份证号性别年龄身高体重宿舍号)和宿舍信息(宿舍号楼号):∙超键:只要含有“学号”或者“身份证号”两个属性的集合就叫超键,例如R1(学号性别)、R2(身份证号身高)、R3(学号身份证号)等等都可以称为超键!∙候选键:不含有多余的属性的超键,比如(学号)、(身份证号)都是候选键,又比如R1中学号这一个属性就可以唯一标识元组了,而有没有性别这一属性对是否唯一标识元组没有任何的影响!∙主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了!∙外键:宿舍号就是学生信息表的外键。
2.为什么一般用自增列作为主键?∙如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。
∙如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新记录都要被插到现有索引页的中间某个位置,此时MySQL不得不为了将新记录插到合适位置而移动数据,这增加了很多开销,同时会增加大量的碎片。
3.触发器的作用?∙安全性,可以基于数据库的值使用户具有操作数据库的某种权利。
∙审计,可以跟踪用户对数据库的操作。
∙实现复杂的非标准的数据库相关完整性规则,触发器可以对数据库中相关的表进行连环更新。
∙触发器能够拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。
深入浅出SQL读书笔记
1.数据库的三个范式a)1NF:强调的是列的原子性,即列不能够再分成其他几列。
b)2NF:首先是1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
(单一主键或者所有列都是主键的满足1NF的数据库一定满足2NF)c)3NF:首先是2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。
即不能存在:非主键列A 依赖于非主键列B,非主键列B 依赖于主键的情况。
2.创建外键3.进阶SELECT1.CASE语句2.ORDER BY 语句(可以在后面加DESC)多列排序:ORDER BY 后面依次加入要排序的行3. 统计函数:SUM, MAX, MIN, AVG等4. 分组关键词:GROUP BY。
5. 统计行数COUNT()6. 只选择不重复的:DISTINCT数据7. 限制结果的数量:LIMIT(编号从1开始)或者TOP(可以选择前百分之几)一个参数:结果集数量两个参数:从第几个开始,结果集数量8. 模糊查询:LIKE%:匹配多个字符?:匹配一个字符9. 字符串限制的查询:SUB_STRING()….10. 数据结构转换:SELECT CASE([column_name] AS TYPE) 4.想新建表,然后把查询到的东西插入新表,应该怎么写1.2.3.3.INNER JOIN : 连接两张表SELECT mc.email, p.professionFROM my_contacts AS mcINNER JOINprofession AS pWHERE mc.contact_id=p.prof_idSELECT st_name, mc.first_name, s.statusFROM my_contacts AS mcINNER JOINstatus AS sWHERE mc.contact_id=s.status_idSELECT cs.cid, s.seekingFROM csNATRUAL JOINS4. 自然联接:NATURAL JOIN(用于联接的两张表里有相同名称的行)5. 子查询:在查询中嵌套查询1.返回多行数据:IN 或者NOT IN2.返回一行数据:=3.判断是否大于/小于所有的数据:ALL4.判断大于返回值中最小值或者小于返回值中最大值:ANY/SOME5.经典例子:在我的通讯录中,谁赚得钱最多?6.非关联子查询:内层查询不需要来自外层就可以独自运行7.例子:列出每个邮编覆盖的地区收入最高的人8.关联子查询1.常用法:找出外层查找中,不存在在关联表里的记录例子:找出所有在my_contacts里但是不在job_current里的人7. 外联接1. 更注重两张表之间的关系。
SQL工作笔记-达梦数据库关于时间的函数
SQL工作笔记-达梦数据库关于时间的函数
这里都是在DM7的pdf文档里面总结出来的,因为本次项目用到了,在此记录下,方便以后进行查阅。 这里的时间为TIMESTAMP类型,如下: 此处介绍几个DM相关的函数(文档里面总结的) CURDATE()当前时间,运行截图如下:
_DAYS(Date时间, 要加的数值)
Select ADD_DAYS('2019-12-15', 10)
同时第二个参数为负数就是前一天的。
Select ADD_DAYS('2019-12-15', -10)
上面是获取当前时间的前10天。
select ADD_DAYS(CURDATE(), -10)
mosh的sql笔记
mosh的sql笔记Mosh的SQL笔记主要包含了以下内容:1.选择SQL库:USE sql_store;。
这条命令用于选择要进行操作的数据库。
2.选择全部语句:SELECT * FROM customers;。
这条命令用于从customers表中选择所有列的所有行。
3.选择部分语句:SELECT customer_id FROM customers;。
这条命令用于从customers表中选择customer_id列的所有行。
4.条件筛选:SELECT * FROM customers WHERE customer_id = 1;。
这条命令用于从customers表中选择customer_id等于1的所有行。
5.排序:SELECT * FROM customers WHERE customer_id = 1 ORDER BY first_name;。
这条命令用于从customers表中选择customer_id等于1的所有行,并按first_name列进行排序。
默认是升序排序,如果需要降序排序,需要添加DESC关键字。
6.语句别名:SELECT last_name, first_name, points, (points + 10) * 100 ASdiscount_factor FROM customers;。
这条命令用于从customers表中选择last_name、first_name、points列,并计算(points + 10) * 100的值作为新的列discount_factor。
如果别名中有空格,需要在别名前后添加双引号或单引号。
此外,Mosh的SQL笔记还提到了关于MySQL的安装和数据库创建的内容,以及关于数据表操作的一些基本命令,如创建表的副本、删除表、清空表、更新单行等。
需要注意的是,以上内容仅为Mosh的SQL笔记的一部分,可能并不完整。
同时,由于SQL语言本身非常丰富和复杂,需要不断学习和实践才能掌握。
学习笔记-sql中时间戳和时间的获取及转换
学习笔记-sql中时间戳和时间的获取及转换原⽂忘记在哪⾥取的了,该⽂章只为记录下新知识不做他⽤。
感谢原作者。
1.sql中时间戳和时间的获取及转换获取当前时间戳mysql> select unix_timestamp(now());+-----------------------+| unix_timestamp(now()) |+-----------------------+| 1584524789 |+-----------------------+mysql> select unix_timestamp();+------------------+| unix_timestamp() |+------------------+| 1584524524 |+------------------+获取当前时间mysql> select now();+---------------------+| now() |+---------------------+| 2020-03-18 17:39:13 |+---------------------+mysql> select date(now());+-------------+| date(now()) |+-------------+| 2020-03-18 |+-------------+获取三天前的时间mysql> SELECT NOW() - interval 72 hour;+--------------------------+| NOW() - interval 72 hour |+--------------------------+| 2020-03-15 17:39:44 |+--------------------------+时间转时间戳mysql> select unix_timestamp('2018-01-15 09:45:16');+---------------------------------------+| unix_timestamp('2018-01-15 09:45:16') |+---------------------------------------+| 1515980716 |+---------------------------------------+时间戳转时间mysql> select from_unixtime(1515980716);+---------------------------+| from_unixtime(1515980716) |+---------------------------+| 2018-01-15 09:45:16 |+---------------------------+时间戳格式化mysql> SELECT from_unixtime(1515980716, '%Y-%m-%d %H:%i:%S');+------------------------------------------------+| from_unixtime(1515980716, '%Y-%m-%d %H:%i:%S') |+------------------------------------------------+| 2018-01-15 09:45:16 |+------------------------------------------------+时间格式化mysql> select date_format(now(), '%Y-%m-%d');+--------------------------------+| date_format(now(), '%Y-%m-%d') |+--------------------------------+| 2020-03-18 |+--------------------------------+1 row in set (0.00 sec)mysql> select date_format('2018-01-15 09:45:16', '%Y-%m-%d');+------------------------------------------------+| date_format('2018-01-15 09:45:16', '%Y-%m-%d') |+------------------------------------------------+| 2018-01-15 |+------------------------------------------------+可视化转换/Tools/unixtime.aspx函数:FROM_UNIXTIME作⽤:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显⽰。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语句
1、case when 条件 then ... else ... end
select t.*,case when parentId = 0 then id else parentId end xu from EquipmentTypes t order by xu,createDate;
case when //开始
parentId = 0 //条件
then//满足条件
id
else//不满足条件
parentId
end //判断结束标志
2、向已有表中添加字段
alter table inbox add(updateDate DATE);
3、插入语句
insert into permissions (ID, CNAME, ENAME, PERMISSIONTYPE, MODULENAME, ENABLE, PARENTID, DESCRIPTION, NORMALURL, LEADERURL, INDEXID, GRIDURL)
values (s_permissions.nextval, '提示语音管理',
'wechatInboxVoicePromptManagement', 1, '后台管理', 1, (select id from permissions where ename='backManagement'), '',
'/wechat/wechatInboxVoicePrompt/wechatInboxVoicePromptList.jsp', '', 5, '');
4、创建表及添加注释
create table wechat_inbox_voice_prompt(
id NUMBER(10, 0) not null,
orgId NUMBER(10) not null,
orgCode VARCHAR2(32) not null,
toUserName VARCHAR2(200),
voicePromptStatus NUMBER(10) not null,
voiceUrl VARCHAR2(200),
displayName VARCHAR2(20),
createUser VARCHAR2(100),
updateUser VARCHAR2(32),
createDate DATE not null,
updateDate DATE,
constraint wechat_inbox_voice_prompt primary key(id)
);
comment on column wechat_inbox_voice_prompt.id is'id';
comment on column wechat_inbox_voice_prompt.toUserName is'微信公众号'; comment on column wechat_inbox_voice_prompt.voicePromptStatus is'微信消息语音提示状态ID(属性字典ID )';
comment on column wechat_inbox_voice_prompt.voiceUrl is'语音路径'; comment on column wechat_inbox_voice_prompt.displayName is'微信消息语音提示状态名称(属性字典名称)';
comment on column wechat_inbox_voice_prompt.createUser is'创建人'; comment on column wechat_inbox_voice_prompt.updateUser is'修改人'; comment on column wechat_inbox_voice_prompt.createDate is'创建时间'; comment on column wechat_inbox_voice_prompt.updateDate is'修改时间';
5、创建表序列
--微信消息语音提示序列
CREATE SEQUENCE s_wechat_inbox_voice_prompt
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9999999999999
NOCYCLE
CACHE 20
NOORDER;
6、更新语句
update inbox set
to_user_name = #toUserName#,
from_user_name = #fromUserName#,
create_time = #createTime#,
msg_type = #msgType#,
msg_id = #msgId#,
content = #content#,
org_id = #org.id#,
create_user = #createUser#,
issue_id = #issueId#,
deal_state = #dealState#,
service_Id=#serviceId#,
forwardingState=#forwardingState#,
orgInternalCode=#orgInternalCode#,
isRead=#isRead#,
updateUser=#updateUser#,
updateDate=#updateDate#
where INBOX_ID =
#inboxId#
7、删除
delete from inbox where inbox_id = #value#
8、简单排序
Select * from inbox i order by i.inbox_id asc(asc 升序,desc降序)
9、带排序的分页(oracal)
select*from( select tt.*,rownum as rowno from(select t.*from emp t where hire_date between
to_date('20060501','yyyymmdd')and to_date ('20060731','yyyymmdd')order by create_time desc,emp_no) tt
where rownum<=20) table_alias where table_alias.rowno >=10;
10、不排序的分页(oracal)
select*from(select rownum as rowno,t.*from emp t where hire_date between to_date('20060501', 'yyyymmdd')and to_date('20060731','yyyymmdd')and rownum<=20 )
table_alias where table_alias.rowno >=10;
select*from(select a.*,rownum rn from(select*from table_name) a where rownum<=40)where rn >=21;
11、查询第一条记录和最后一条记录
select
MIN(inbox_id)keep(DENSE_RANK first order by inbox_id desc) "first",
Max(inbox_id)Keep(DENSE_RANK Last Order By inbox_id Desc) "LAST" from inbox
(oracle)
12、GROUPING 函数
select
GROUPING(from_user_name),from_user_name,count(from_user_name)
from inbox
Group by RollUp(from_user_name)
可以看到,为空的地方返回1,非空的地方返回0。
13、统计
Count(*) :select count(*) from inbox 查询此表有多少条记录
Sum(列名):select sum(id) from inbox 求次列的总和
Min(列名):select min(id) from inbox 求此列最小值
Max(列名):select max(id) from inbox 求次列最大值
Avg(列名):select avg(id) from inbox 求次列平均值。