SQL 笔记

新增 INSERT INTO A (列名1, 列名2) VALUES (列1的值, 列2的值);
查询 select * from 表名;
删除 delete from test.A where 条件表达式
修改 update test.A  set id_no=5 where grade=156421.0
update test.A  set id_no=6,grade=grade*2 where grade=156421.0
清空表数据 TRUNCATE TABLE 表名
添加主键 ALTER TABLE 表名 ADD PRIMARY KEY (列名[,列名])
去除主键 ALTER TABLE 表名 DROP PRIMARY KEY
添加外键约束 ALTER TABLE
    从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键列名) REFERENCES 主表名 (主表主键列名)
查看约束
  • <MySQL>select * from information_schema.TABLE_CONSTRAINTS;--可以看到所有约束,可以根据TABLE_NAME,CONSTRAINT_TYPE,CONSTRAINT_NAME来具体查找
经典问题:查询参加了所有选修课的学生信息 select * from S where not exists(
select * from C where not exists(
select * from SC where SID=S.SID and SC.CID=C.CID));
复制表
  • 表不存在:create table 新表名 AS select * from 源表名
  • 表存在:insert into B select * from A
表A(id,name,age),B结构一样,找出A表和B表有哪些数据不一样(name,age不相同算不一样) SELECT A.NAME,B.NAME FROM A FULL JOIN B ON A.ID = B.ID where A.NAME IS NULL OR B.NAME IS NULL or A.NAME<>B.NAME
合并两个表数据(两个表的列都一样) select * from A union select * from  B
A,B表结构一样,覆盖表数据,id一样就更新,不一样则新增

MERGE INTO A USING B ON (A.ID=B.ID)
WHEN MATCHED THEN
UPDATE SET A.NAME=B.NAME,A.AGE=B.AGE
WHEN NOT MATCHED THEN
INSERT VALUES(B.ID,B.NAME,B.AGE)

posted @ 2013-07-30 11:34  hhhyde  阅读(114)  评论(0编辑  收藏  举报