MySQL备忘点(下)
联结表
创建联结 FROM 表1,表2 与内连接作用相同类似;如果失去WHERE子句,会出现笛卡尔积现象
内联结 INNER JOIN
高级联结
自联结 例子:SELECT 字段b FROM 表 WHERE 字段a = (SELECT 字段a FROM 表 WHERE 字段B的条件),单条SQL文多次引用一张表
外联结 LEFT OUTER JOIN RIGHT OUTER JOIN FULL JOIN 外联结有三种,分别代表那张表的结果可以为空,还是说都可以为空
组合查询
并 SQL1 UNION SQL2 SQL1 和 SQL2的结果集中字段名必须完全一致
消除重复的并 SQL1 UNION ALL SQL2 SQL1 和 SQL2的结果集中字段名必须完全一致
并排序 SQL1 UNION ALL SQL2 ORDER BY 字段 这个排序是将组合后的总结果集进行排序
插入数据 “多行插入”,“插入检索值”用的比较多
单行插入 “值”可以是null,尽量把字段名完全列出来,而不是依赖自带的顺序
INSERT INTO 表名
(字段名1, 字段名2, 字段名3)
VALUES
(值1, 值2, 值3);
多行插入 这是最简便的方式,避免使用 多条“单行插入”语句
INSERT INTO 表名
(字段名1, 字段名2, 字段名3)
VALUES
(值1x, 值2x, 值3x),
(值1y, 值2y, 值3y),
(值1z, 值2z, 值3z)
插入检索值 INSERT-SELECT语句,INSERT部分和SELECT部分的列名可以不匹配,只要类型一致保证不报错即可,
INSERT INTO 表名
(字段名1, 字段名2, 字段名3)
SELECT
字段名1, 字段名2, 字段名3
FROM
表名x
例如:
INSERT INTO student (no)
SELECT student_no FROM people
更新删除数据 “更新”,“删除”都比较常用,避免使用不带WHERE条件的更新、删除语句,它们太危险了
更新
UPDATE 表名 SET
字段1=值1,
字段2=值2
WHERE
条件
删除
DELETE FROM 表名
WHERE
条件
创建和操纵表
创建表
CREATE TABLE 表名 (
字段1 类型 NOT NULL AUTO_INCREMENT,
字段2 类型 NULL DEFAULT 'Deolin',
…… ,
PRIMARY KEY (字段1)
) ENGINE=InnoDB
字段名 类型 null值? 自增? 默认值,
主键
引擎类型
更新表
ALTER TABLE 表名 (
ADD
DROP
)
删除表
DROP TABLE 表名
重命名表
RENAME TABLE 表名1 TO 表名2
视图 COOP时候的WebQuery
创建视图
CREATE VIEW 视图名 AS
SELECT语句
视图常见的作用就是重用SQL语句,特别是SELECT语句
一般来说视图不用与INSERT、UPDATE、DELETE
游标
用于操作SQL文的结果集,常见的用法可能是分页
触发器
创建触发器
CREATE TRIGGER csts_del AFTER INSERT ON csts
FOR EACH ROW
BEGIN
SELECT 'success'
END
BEGIN - END用于容纳多条SQL语句,不是必须的
删除触发器
DROP TRIGGER csts_del
INSERT触发器
CREATE TRIGGER csts_ins AFTER INSERT ON csts
FOR EACH ROW
SELECT NEW.no
after可以换成before,before用于插入前数据的净化,after用于插入后的确认
NEW关键字指的是一个虚拟表,表中存储的是触发器INSERT语句插入的数据
DELETE触发器
CREATE TRIGGER csts_del AFTER INSERT ON csts
FOR EACH ROW
SELECT OLD.no
OLD关键字与NEW类似,存储的是触发器DELETE语句删除的数据
UPDATE触发器
CREATE TRIGGER csts_upd BEFORE UODATE ON csts
FOR EACH ROW
SET NEW.name =Upper(NEW.name);
Upper()函数返回的是参数字段更新后的值
最新文章
- 安卓模拟器genymotion连接eclipse成功但是不显示其中项目
- Bootstrap <;基础三十>;Well
- php开发(CI框架使用)
- 测试 Mono 安装
- FFTW简介及使用
- OpenStack:安装Glance
- SQL中N $ # @的作用
- java反射案例讲解
- php explode 用法详解
- thinkphp中神奇的create()方法
- Optipng—PNG的优化图像工具初探
- 使用iptraf,ifstat查看网络流量
- 执行manage.py syncdb提示Unknown command: &#39;syncdb&#39;
- shell脚本实现并发控制
- Linux中 ./configure --prefix命令
- 获取Linux服务器基本信息的shell脚本
- MySQL中数据的基本查询方式
- Echarts之悬浮框中的数据排序
- (源)VC助手VA破解使用指南
- What&#39;s the difference between - (one hyphen) and — (two hyphens) in a command?