MySQL联表查询及联表删除都是经常需要用到的操作,下面对MySQL联表查询和联表删除都作了详细的介绍分析,希望对您有所帮助。
MySQL联表查询:
reference mysql manul:
3.2.7. SELECT语法13.2.7.1. JOIN语法
13.2.7.2. UNION语法
eg1:·mysql> SELECT t1.name, t2.salary FROM employee AS t1, info AS t2·-> WHERE t1.name = t2.name;eg2:·mysql> SELECT table1.* FROM table1·-> LEFT JOIN table2 ON table1.id=table2.id·-> WHERE table2.id IS NULL;
联表删除:
1、从数据表t1 中把那些id值在数据表t2 里有匹配的记录全删除掉
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id
2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或
DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
3、从两个表中找出相同记录的数据并把两个表中的数据都删除掉
DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25
注意此处的delete t1,t2 from 中的t1,t2不能是别名
如:delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 在数据里面执行是错误的(MYSQL 版本不小于5.0在5.0中是可以的)
上述语句改写成
delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 在数据里面执行是错误的(MYSQL 版本小于5.0在5.0中是可以的)
MySQL联表查询:
reference mysql manul:
3.2.7. SELECT语法13.2.7.1. JOIN语法
13.2.7.2. UNION语法
eg1:·mysql> SELECT t1.name, t2.salary FROM employee AS t1, info AS t2·-> WHERE t1.name = t2.name;eg2:·mysql> SELECT table1.* FROM table1·-> LEFT JOIN table2 ON table1.id=table2.id·-> WHERE table2.id IS NULL;
联表删除:
1、从数据表t1 中把那些id值在数据表t2 里有匹配的记录全删除掉
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id
2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或
DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
3、从两个表中找出相同记录的数据并把两个表中的数据都删除掉
DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25
注意此处的delete t1,t2 from 中的t1,t2不能是别名
如:delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 在数据里面执行是错误的(MYSQL 版本不小于5.0在5.0中是可以的)
上述语句改写成
delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 在数据里面执行是错误的(MYSQL 版本小于5.0在5.0中是可以的)
作为一个非专业运维人员,惨为遗忘的操作而悔恨,遂转载之!
from :http://www.21andy.com/blog/20100413/1859.html
Vim 注释多行简化说明
以下一次注释3行操作如下
esc
0 跳到行首
ctrl+v 可视块模式
jjj 下移3行
I 进入插入模式
//
esc
嫌麻烦可以自己定义快捷键
# vim ~/.vimrc
输入如下内容,保存
“F5 for comment
vmap :s=^\(//\)*=//=g:noh
nmap :s=^\(//\)*=//=g:noh
imap :s=^\(//\)*=//=g:noh
“F6 for uncomment
vmap :s=^\(//\)*==g:noh
nmap :s=^\(//\)*==g:noh
imap :s=^\(//\)*==g:noh
Vim 注释多行详细说明:
ctrl+v 进入列模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如#,再按Esc,就会全部注释。或者也可以运行下面这些命令:
:s/^/# #用”#”注释当前行
:2,50s/^ /# #在2~50行首添加”#”注释
:.,+3s/^/# #用”#”注释当前行和当前行后面的三行
:%s/^/# #用”#”注释所有行
顺便说一下vim的替换,这个常用,已经牢记,其实和上面用命令注释多行是一样的,只不过是上面注释的命令里的”^”符号代表开始位置而已,在下面 这些命令中,”s”代表替换,part1代表查找的内容,part2代表替换的内容,”%”代表所有行,”g”代表替换整行里所有的内容(如果不 加”/g”则只替换每行第一个匹配part1的地方)。
:s/part1/part2 #用part2替换当前行中第1个part1
:s/part1 /part2/g #用part2替换当前行中所有的part1
:%s/part1/part2 #用part2替换所有行中每行第1个part1
:%s/part1/part2/g #用part2替换所有行中所有的part1
:2,50s/part1 /part2 #用part2替换第2行到第50行中每行第1个part1
:2,50s/part1/part2/g #用 part2替换第2行到第50行中所有的part1
:.,+3s/part1/part2 #用part2替换当前行以及当前行后面的三行中每行第1个part1
:.,+3s/part1/part2/g #用part2替换当前行以及当前行后面的三行中所有的part1
BTW: 在替换时要注意,某些字符是需要转译的,如空格、括号等。
from :http://www.21andy.com/blog/20100413/1859.html
Vim 注释多行简化说明
以下一次注释3行操作如下
esc
0 跳到行首
ctrl+v 可视块模式
jjj 下移3行
I 进入插入模式
//
esc
嫌麻烦可以自己定义快捷键
# vim ~/.vimrc
输入如下内容,保存
“F5 for comment
vmap
nmap
imap
“F6 for uncomment
vmap
nmap
imap
Vim 注释多行详细说明:
ctrl+v 进入列模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如#,再按Esc,就会全部注释。或者也可以运行下面这些命令:
:s/^/# #用”#”注释当前行
:2,50s/^ /# #在2~50行首添加”#”注释
:.,+3s/^/# #用”#”注释当前行和当前行后面的三行
:%s/^/# #用”#”注释所有行
顺便说一下vim的替换,这个常用,已经牢记,其实和上面用命令注释多行是一样的,只不过是上面注释的命令里的”^”符号代表开始位置而已,在下面 这些命令中,”s”代表替换,part1代表查找的内容,part2代表替换的内容,”%”代表所有行,”g”代表替换整行里所有的内容(如果不 加”/g”则只替换每行第一个匹配part1的地方)。
:s/part1/part2 #用part2替换当前行中第1个part1
:s/part1 /part2/g #用part2替换当前行中所有的part1
:%s/part1/part2 #用part2替换所有行中每行第1个part1
:%s/part1/part2/g #用part2替换所有行中所有的part1
:2,50s/part1 /part2 #用part2替换第2行到第50行中每行第1个part1
:2,50s/part1/part2/g #用 part2替换第2行到第50行中所有的part1
:.,+3s/part1/part2 #用part2替换当前行以及当前行后面的三行中每行第1个part1
:.,+3s/part1/part2/g #用part2替换当前行以及当前行后面的三行中所有的part1
BTW: 在替换时要注意,某些字符是需要转译的,如空格、括号等。
(1)
按ESC,然后123gg
就是跳到123行
(2)
输入 :行号
就跳到你要的行了!
###############################
添加、删除注释:
注释:ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如”//”,再按Esc,就会全部注释了。
删除:先按v,进入visual模式,横向选中列的个数(如”/ /”注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号。
使用替换命令:
:%s/^/\/\//g来在全部内容的行首添加//号注释
:2,50s/^/\/\//g在2~50行首添加//号注释
反过来替换既是删除操作。
按ESC,然后123gg
就是跳到123行
(2)
输入 :行号
就跳到你要的行了!
###############################
添加、删除注释:
注释:ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如”//”,再按Esc,就会全部注释了。
删除:先按v,进入visual模式,横向选中列的个数(如”/ /”注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号。
使用替换命令:
:%s/^/\/\//g来在全部内容的行首添加//号注释
:2,50s/^/\/\//g在2~50行首添加//号注释
反过来替换既是删除操作。






