数据库小结

发布时间:2019-11-16  栏目:NoSQL  评论:0 Comments

 一、基础

1、数据库Left JOIN
风姿浪漫对多,Left JOIN左连接,数据不会增添
多对风姿罗曼蒂克,Left JOIN左连接,数据不会增添
2、sql报错,因为从没点名表名的别称V
UPDATE t_order_refund SET V.NODE_ID = ? WHERE REFUND_ID = ?
3、明日在调接口时境遇二个主题素材,新扩展音信数据库报错,查了过多遍最终才发觉xxMapper.xml中写错了

1、创立数据库

错误的
<if test="agenLevel!=null">
    #{agenLevel!=null, jdbcType=VARCHAR},
</if>
<if test="conPerson!=null">
    #{conPerson!=null, jdbcType=VARCHAR},
</if>
<if test="conPhone!=null">
    #{conPhone!=null, jdbcType=VARCHAR},
</if>

正确的
<if test="agenLevel!=null">
    #{agenLevel, jdbcType=VARCHAR},
</if>
<if test="conPerson!=null">
    #{conPerson, jdbcType=VARCHAR},
</if>
<if test="conPhone!=null">
    #{conPhone, jdbcType=VARCHAR},
</if>

CREATE DATABASE database-name

4、在xxMapper.xml新扩大了一个查询userId语句,再次回到
List<String> nameList = userMapper.selectByName();但是因为将resultType写成了resultMap,以致连不想关的登录接口都登录不上来了,非凡莫明其妙,所以自然要在乎!

2、删除数据库

//返回的是resultType,不是resultMap
<select id="selectByName" parameterType="java.util.Map" resultType="java.lang.String">
        select
        USER_ID
        from v_user u
        <where>
            <if test="orgId!=null">
                AND ORG_ID = #{orgId,jdbcType=VARCHAR}
            </if>
            <if test="userId!=null">
                AND USER_ID = #{userId,jdbcType=VARCHAR}
            </if>
            <if test="userName!=null">
                AND USER_NAME like #{userName,jdbcType=VARCHAR}
            </if>
            <if test="status!=null">
                AND STATUS = #{status,jdbcType=INTEGER}
            </if>
            <if test="userType!=null">
                AND USER_TYPE = #{userType,jdbcType=INTEGER}
            </if>
        </where>
    </select>

 drop database dbname

3、备份sql server

 — 成立 备份数据的 device

USE master

EXEC sp_addumpdevice ‘disk’,’testBack’,
:\mssql7backup\MyNwind_1.dat’ — 开始 备份

BACKUP DATABASE pubs TO testBack

4、成立新表

 create table tabname(col1 type1 [not null] [primary key],col2 type2
[not null],..)

例子:

CREATE TABLE tableA(

    [id] [int] NOT NULL PRIMARY KEY,

    [Name][nvarchar](50) NOT NULL,

    [Age] [int] NOT NULL,)

依据已某个表成立新表:

A:create table tab_new like tab_old (使用旧表创设新表SQL
server二零零六不得以)

B:create table tab_new as select col1,col2… from tab_old definition
only

C: select *into  tableAnew from
tableA(复制表结会谈表数据。旧表创立新表无主键。SQL server2009科雷傲2能够用
亲测)

D:select * into table3 from tableA where
1=2;(复制表数据,主键复制不过去)

E: insert into table3 select * from tableA where
id=1;(假设表存在,导入数据)

F: select * into table5 from tableA where
1<>1;(旧表创制新表,唯有表结构卡塔 尔(阿拉伯语:قطر‎

5、删除新表

drop table tabname

6、扩张一个列

Alter table tabname add column col type

注:列扩张后将不可能去除。DB第22中学列加上后数据类型也不可能退换,唯意气风发能改动的是加多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

注:索引是不可改动的,想校订必需删除重新建。

9、创立视图:

create view viewname as select statement

 删除视图:drop view viewname

10、选择,插入,删除,更新,查找,排序,总的数量,求和,平均,最大,最小基本的sql语句

选择:select * from table1 where 范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select * from table1 where 田野先生1 like ’%value1%’
—like的语法很精细,查资料

排序:select * from table1 order by field1,field2 [desc]

总数:select count as totalcount from table,

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、多少个高等查询运算词

A: UNION 运算符

UNION 运算符通过整合其余两个结果表(举例 TABLE1 和
TABLE2卡塔 尔(阿拉伯语:قطر‎并消去表中任何重复行而派生出贰个结出表。当 ALL 随 UNION
一齐使用时(即 UNION
ALL卡塔尔,不清除重复行。两种状态下,派生表的每后生可畏行不是出自 TABLE1 正是出自
TABLE2。

B: EXCEPT 运算符

EXCEPT 运算符通过富含具有在 TABLE1 中但不在 TABLE2中的行并打消全数重复行而派生出八个结果表。当 ALL 随 EXCEPT 一同利用时
(EXCEPT ALL),不杀绝重复行。

C: INTERSECT 运算符

NTE兰德酷路泽SECT 运算符通过只包罗 TABLE1 和 TABLE2中都一些行并毁灭全体重复行而派生出一个结出表。当 ALL 随 INTE奥迪Q5SECT
一齐使用时 (INTE奥迪Q7SECT ALL),不免除重复行。
注:使用运算词的几个查询结果行必需是大同小异的

12、使用外接连

A、left (outer) join:

左外连接(左连接卡塔 尔(阿拉伯语:قطر‎:结果集几富含连接表的相配行,也囊括左连接表的富有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a
=                b.c

     在使用left join时,on和where条件的分裂如下:1、 on条件是在改动有时表时使用的法规,它不管on中的条件是还是不是为真,都会回到侧边表中的记录。可以见到为,左表记录保留,右表不满意条件的填充为null
2、where条件是在不经常表生成好后,再对有的时候表举行过

滤的口径。那个时候早就未有left
join的意义(必需重回侧面表的笔录卡塔 尔(英语:State of Qatar)了,条件不为真的就全数过滤掉。

 

B:right (outer) join:

右外连接(右连接):结果集既富含连接表的相配连接行,也饱含右连接表的持有

行。

C:full/cross (outer) join:

全外连接:不唯有满含符号连接表的匹配行,还蕴涵四个延续表中的全数记录。

13、分组:Group by:

一张表,意气风发旦分组 达成后,查询后只可以博得组相关的新闻。

组相关的新闻:(总括新闻卡塔 尔(英语:State of Qatar) count,sum,max,min,avg 分组的正经)

在SQLServer中分组时:无法以text,ntext,image类型的字段作为分组依靠

在selecte总括函数中的字段,不可能和不足为道字段放在一齐;

14、对数据库举行操作:

  分离数据库:EXEC sp_detach_db DatabaseName

叠合数据库:sp_attach_db后接评释,

内需总体的路线名

15.怎样改良数据库的称谓:

sp_renamedb ‘old_name’, ‘new_name’

16、左匹配、模糊、右匹配、全匹配

左相配:左侧最初是字段条件的举例1左相配,正是1最初的字段

右相配:左侧发轫是准则的

17、SQL模糊查询条件的两种相配形式

①、%:表示任性0个或多个字符。可相称任意类型和尺寸的字符,有个别境况下纵然华语,请使用多个百分号(%%)表示:

例如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’
将会把u_name为“张三”,“张猫三”、“三脚猫”,“三藏法师”等等有“三”的笔录全找寻来。

再举例必要寻觅u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE
‘%猫%’

再例如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’
固然如此能检索出“三脚猫”,但不能够检索出切合条件的“张猫三”。备注:%三:表示左相称。三%:表示右相配。%三%:表示模糊查询

②、_ :
表示任性单个字符。相配单个猖獗字符,它常用来界定表明式的字符长度语句:

例如 SELECT * FROM [user] WHERE u_name LIKE ‘_三_’
只找出“唐三藏”,这样u_name为多个字且中间一个字是“三”的;

再例如 SELECT * FROM [user] WHERE u_name LIKE ‘三__’
只找寻“三脚猫”那样name为八个字且第三个字是“三”的;

③、[
] :表示括号内所列字符中的贰个(相近正则表达式卡塔尔国。钦定三个字符、字符串或节制,必要所配成对象为它们中的任四个。

例如 SELECT * FROM [user] WHERE u_name LIKE ‘[张李王]三’
将找寻“张三”、“李三”、“王三”(并非“张李王三”卡塔尔国;

再例如 [ ]
内有大器晚成层层字符(01234、abcde之类的卡塔尔则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE ‘老[1-9]’
将找出“老1”、“老2”、……、“老9”;

设若要找“-”字符请将其放在第二个人:’张三[-1-9]’;

Oracle 10g以上的版本用法为:

select * from flow_user where regexp_like(username, ‘[张王李]飞’)

④、[^ ] :表示不在括号所列之内的单个字符。其取值和 []
相似,但它必要所匹配对象为钦定字符以外的任二个字符。

例如 SELECT * FROM [user] WHERE u_name LIKE ‘[^张李王]三’
将搜索不姓“张”、“李”、“王”的“赵三”、“孙三”等;
再例如 SELECT * FROM [user] WHERE u_name LIKE ‘老[^1-4]’
将排除“老1”到“老4”,寻找“老5”、“老6”、……、“老9”。

注:oracle like 不协助正则,你能够运用帮衬like的正则regexp_like

⑤、查询内容富含通配符时

* 表示查找的是具备新闻,比方select * from tbl_user 

由于通配符的缘故,招致大家询问特殊字符“%”、“_”、“[”的说话无法符合规律完毕,而把特别字符用“[
]”括起便可寻常查询。据此我们写出以下函数:
function sqlencode(str)
str=replace(str,”[“,”[[]”) ‘此句必供给在最前
str=replace(str,”_”,”[_]”)
str=replace(str,”%”,”[%]”)

sqlencode=str
end function

注:
在查询前将待查字符串先经该函数管理就能够,况兼在网页上三番两遍数据库用到那类的查询语句时侯要注意:
例如 Select * FROM user Where name LIKE ‘老[^1-4]’

18、select isnull(max(字段1+1),1) from table

 从table中询问“字段1+1”的最大值,借使“字段1+1”的最大值为null,则值取1,不然取“字段1+1”的最大值。

留下评论

网站地图xml地图