标签:属性 展示 外部 完整性 需要 建表 过程 row 超级
索引名称 | 说明 |
---|---|
主键索引 (primary key) | 主键是一种唯一性索引,每个表只能有一个主键, 用于标识数据表中的每一 条记录 |
唯一索引 (unique) | 唯一索引指的是 索引列的所有值都只能出现一次, 必须唯一. |
普通索引 (index) | 最常见的索引,作用就是 加快对数据的访问速度 |
创建主键索引2种方式:
CREATE TABLE 表名(
-- 添加主键 (主键是唯一性索引,不能为null,不能重复,)
字段名 类型 PRIMARY KEY,
);
ALTER TABLE 表名 ADD PRIMARY KEY ( 列名 )
创建唯一索引:
CREATE TABLE 表名(
列名 类型(长度),
-- 添加唯一索引
UNIQUE [索引名称] (列名)
);
create unique index 索引名 on 表名(列名(长度))
ALTER TABLE 表名 ADD UNIQUE ( 列名 )
语法格式:
create index 索引名 on 表名(列名[长度])
ALTER TABLE 表名 ADD INDEX 索引名 (列名)
语法格式:
ALTER TABLE table_name DROP INDEX index_name;
优点:
缺点:
权限控制时可以使用
简化复杂的多表查询
语法格式:
create view 视图名 [column_list] as select语句;
view: 表示视图
column_list: 可选参数,表示属性清单,指定视图中各个属性的名称,默认情况下,与SELECT语句中查询的属性相同
as : 表示视图要执行的操作
select语句: 向视图提供数据内容
优点:
缺点:
语法格式:
DELIMITER $$ -- 声明语句结束符,可以自定义 一般使用$$
CREATE PROCEDURE 过程名称() -- 声明存储过程
BEGIN -- 开始编写存储过程
-- 要执行的操作
END $$ -- 存储过程结束
示例:
DELIMITER $$
CREATE PROCEDURE goods_proc()
BEGIN
select * from goods;
END $$
调用存储过程语法格式:
call 存储过程名
示例:
-- 调用存储过程 查询goods表所有数据
call goods_proc;
语法格式:
CREATE PROCEDURE 存储过程名称(IN 参数名 参数类型)
示例:
DELIMITER $$
CREATE PROCEDURE goods_proc02(IN goods_id INT)
BEGIN
DELETE FROM goods WHERE gid = goods_id ;
END $$
调用存储过程传递参数:
# 删除 id为2的商品
CALL goods_proc02(2);
变量赋值:
SET @变量名=值
OUT 输出参数:表示存储过程向调用者传出值
OUT 变量名 数据类型
示例:
# 创建存储过程 接收参数插入数据, 并返回受影响的行数
DELIMITER $$
CREATE PROCEDURE orders_proc(IN o_oid INT , IN o_gid INT ,IN o_price INT, OUT
out_num INT)
BEGIN
-- 执行插入操作
INSERT INTO orders VALUES(o_oid,o_gid,o_price);
-- 设置 num的值为 1
SET @out_num = 1;
-- 返回 out_num的值
SELECT @out_num;
END $$
调用存储过程:
# 调用存储过程插入数据,获取返回值
CALL orders_proc(1,2,30,@out_num);
语法格式:
delimiter $ -- 将Mysql的结束符号从 ; 改为 $,避免执行出现错误
CREATE TRIGGER Trigger_Name -- 触发器名,在一个数据库中触发器名是唯一的
before/after(insert/update/delete) -- 触发的时机 和 监视的事件
on table_Name -- 触发器所在的表
for each row -- 固定写法 叫做行触发器, 每一行受影响,触发事件都执行
begin
-- begin和end之间写触发事件
end
$ -- 结束标记
示例:
需求: 在下订单的时候,对应的商品的库存量要相应的减少,卖出商品之后减少库存量。
-- 1.修改结束标识
DELIMITER $
-- 2.创建触发器
CREATE TRIGGER t1
-- 3.指定触发的时机,和要监听的表
AFTER INSERT ON orders
-- 4.行触发器 固定写法
FOR EACH ROW
-- 4.触发后具体要执行的事件
BEGIN
-- 订单+1 库存-1
UPDATE goods SET num = num -1 WHERE gid = 1;
END$
语法格式:
CREATE USER ‘用户名‘@‘主机名‘ IDENTIFIED BY ‘密码‘;
参数 | 说明 |
---|---|
用户名 | 创建的新用户,登录名称 |
主机名 | 指定该用户在哪个主机上可以登陆,本地用户可用 localhost 如果想让该用户可以 从任意远程主机登陆,可以使用通配符 % |
密码 | 登录密码 |
示例:
CREATE USER ‘admin1‘@‘localhost‘ IDENTIFIED BY ‘123456‘;
CREATE USER ‘admin2‘@‘%‘ IDENTIFIED BY ‘123456‘;
GRANT 权限 1, 权限 2... ON 数据库名.表名 TO ‘用户名‘@‘主机名‘
参数 | 说明 |
---|---|
权限 | 授予用户的权限,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等。 如果要授 予所有的权限则使用 ALL |
ON | 用来指定权限针对哪些库和表 |
TO | 表示将权限赋予某个用户 |
示例:
GRANT SELECT ON db4.products TO ‘admin1‘@‘localhost‘;
GRANT ALL ON *.* TO ‘admin2‘@‘%‘;
语法格式:
SHOW GRANTS FOR ‘用户名‘@‘主机名‘;
示例:
-- 查看root用户的权限
SHOW GRANTS FOR ‘root‘@‘localhost‘;
语法格式:
DROP USER ‘用户名‘@‘主机名‘;
示例:
-- 删除 admin1 用户
DROP USER ‘admin1‘@‘localhost‘;
选择数据库后
-- 查询用户
SELECT * FROM USER;
语法格式:
mysqldump -u 用户名 -p 密码 数据库 > 文件路径
示例:
mysqldump -uroot -p123456 db2 > H:/db2.sql
语法格式:
source sql文件地址
标签:属性 展示 外部 完整性 需要 建表 过程 row 超级
原文地址:https://www.cnblogs.com/pengc931482/p/13891754.html