外连接
OUTER JOIN 有三种:LEFT,RIGHT 和 FULL。
- 一个LEFT OUTER JOIN包含“左”表中的所有记录,即使它与在此连接中指定的“右”表并不存在任何匹配。
- RIGHT OUTER JOIN包含“右”表中的所有记录,即使它与在此连接中指定的“左”表并不存在任何匹配。
- 而一个FULL OUTER JOIN则包含左右两表中的所有记录。
注意:left join 是left outer join的简写,left join默认是outer属性的。
字符串拼接
CONCAT:最常用的字符串拼接函数
语法:CONCAT(str1,str2…)
说明:将str1、str2…直接连接起来,如:执行SELECT CONCAT(‘a’,‘b’,‘c’)将会输出abc
注意:
- 若参数存在NULL则结果为NULL,如:执行SELECT CONCAT(‘a’,‘b’,NULL)将会输出NULL
CONCAT_WS:使用指定分隔符连接字符串
语法:CONCAT_WS(separator,str1,str2…)
说明:CONCAT_WS可以简单的记为concat with separator,使用separator连接str1、str2…,如:执行SELECT CONCAT_WS(’,’,‘a’,‘b’,‘c’)将会输出a,b,c
注意:
- 若分隔符为NULL,则结果为NULL,如:执行SELECT CONCAT_WS(NULL,‘a’,‘b’,‘c’)将会输出NULL
- 若字符串中存在NULL,则会忽略该字符,如:执行执行SELECT CONCAT_WS(’,’,‘a’,NULL,‘c’)将会输出a,c
GROUP_CONCAT:连接指定列字符串
语法:GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’])
说明:将指定列连接起来,如:执行SELECT GROUP_CONCAT(name) FROM user
sql语句中不等于的使用
(各大数据库中使用<>)
- sql 里 符号<> 于 != 的区别
<> 与!=都是不等于的意思,但是一般都是用<>来代码不等于因为<>在任何SQL中都起作用但是!=在sql2000中用到,则是语法错误,不兼容的, 尽量使用<>表示不等于
2、sql中的等于和不等于, ‘=’ ,’!=’,’<>’,‘is null’…
不等于:<> ,!=,~= ,^= 这四个符号据说都可以在oracle中表示不等于,但是试了之后发现<> ,!= ,^=是可以的,~=不行,需要注意的是,只有<>是标准的sql语法,可以移植,其他的都是oracle平台的特性,移植性较差,所以开发中,使用<>;
mysql给已经存在的表列设置为主键
NOT NULL
(不为空) PRIMARY KEY
(主键) AUTO_INCREMENT
(自增),
- 前提是添加主键的字段不存在重复内容
alter table 表名 add
primary key
(字段名);
mysql给已经存在的主键设置为自增并设置初始值
代码如下
第一步:给字段( id )增加 auto_increment(自增量) 属性
alter table 表名 modify id int(11) auto_increment;
第二步:给自增值设置初始值
alter table 表名
auto_increment
=10000
mysql不考虑初始值设置主键并设置自增
alter table table_name
MODIFY
COLUMN
字段 int(20)NOT NULL
AUTO_INCREMENT
FIRST
,ADDPRIMARY KEY
(字段);
mysql创建临时表
TEMPORARY
(临时)
CREATE
TEMPORARY
TABLE table_name(
id bigint(20)NOT NULL
PRIMARY KEY
AUTO_INCREMENT
,
) AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
mysql将一个表的数据同步到另一个表
为了防止数据库中数据的丢失损坏,或更变数据库后程序异常等现象,一定要在部署前备份好所有数据和原程序版本,以便系统异常时能及时恢复到上一版本。
下面是学到的一个小功能,简单的几个SQL语句,将数据库的A表快速备份到B表中:
CREATE TABLE B LIKE A;
INSERT INTO B SELECT * FROM A;
注意:数据同步多种情况
1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:
INSERT INTO 目标表 SELECT * FROM 来源表;
insert into B select * from A;
2.如果只希望导入指定字段,可以用这种方法:
INSERT INTO 目标表 (字段1, 字段2, …) SELECT 字段1, 字段2, … FROM 来源表;
(这里的话字段必须保持一致)
insert into B(id) select id from A;
内容繁多,原创与转载均有,如有侵权请联系处理