外键
-- 添加外键时不指定外键名称则会默认创建一个外键名
-- 添加
ALTER TABLE 从表名 ADD FOREIGN KEY (外键列) REFERENCES 主表名(主键列);
-- 删除
ALTER TABLE 从表名 DROP FOREIGN KEY 外键名;
-- 查看外键
SHOW CREATE TABLE 表名;
索引
-- 创建
create index 索引名 on 表名(列名);
-- 普通索引
ALTER TABLE 表名 ADD INDEX 索引名称(列名);
-- 组合索引
ALTER TABLE 表名 ADD INDEX 索引名称(列名1,列名2,...);
-- 主键索引
ALTER TABLE 表名 ADD PRIMARY KEY(主键列名);
-- 外键索引(添加外键约束,就是外键索引)
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名);
-- 唯一索引
ALTER TABLE 表名 ADD UNIQUE 索引名称(列名);
-- 全文索引(mysql只支持文本类型)
ALTER TABLE 表名 ADD FULLTEXT 索引名称(列名);
-- 为student表中name列添加全文索引
ALTER TABLE student ADD FULLTEXT idx_fulltext_name(name);
多表查询
1.内连接 (显式和隐式)
select 字段列表 from 表1 join 表2 on 关联条件
或
select 字段列表 from 表1,表2 where 关联条件
2.外连接 (左外和右外)
select 字段列表 from 表1 left|right join 表2 on 关联条件
视图
1.创建
create view 视图名[(字段列名)] as select语句;
2.修改
alter view 视图名[(字段列名)] as select语句;
存储过程
1.创建
DELIMITER $
-- 标准语法
CREATE PROCEDURE 存储过程名称([参数列表])
BEGIN
SQL 语句列表;
END$
-- 修改分隔符为分号
DELIMITER ;
2.调用
call 存储过程名称([实际参数列表]);
3.if和while的使用
if 条件表达式 then
sql语句
elseif 条件表达式 then
sql语句
else
sql语句
end if;
----------------------------------------------------
while 条件表达式 do
sql语句;
end while;
存储函数
1.创建
DELIMITER $
create function 函数名()
returns 返回值的类型
begin
函数体
return 返回值;
end
-- 修改分隔符为分号
DELIMITER ;
2.调用
select 函数名(参数);
触发器
1.创建
DELIMITER $
CREATE TRIGGER 触发器名称
BEFORE|AFTER INSERT|UPDATE|DELETE
ON 表名
FOR EACH ROW
BEGIN
触发器要执行的功能;
END$
DELIMITER ;
事务
1.手动开启 默认的提交方式为自动提交,手动开启事务需要手动提交
1. 开启事务
start transaction;
2. 提交事务
commit;
3. 回滚事务
rollback;
java代码管理事务的代码思路:
try{
// 1. 开启事务
// 2. 执行sql语句
// 3. 提交事务
}catch(Exception e){
// 4. 回滚事务
}