mysql:用户管理、索引、视图、函数、存储过程
#创建一个用户并设置密码,注意IP地址要是登录mysql电脑的IP地址
USE mysql
CREATE USER lisi@'192.168.149.1' IDENTIFIED BY "111111"
CREATE USER lisi1@'192.168.149.10' IDENTIFIED BY "111111"
SELECT * FROM USER
#删除一个用户
DROP USER zhangsan@"192.168.149.1"
DROP USER lisi1@"192.168.149.10"
DELETE FROM USER WHERE USER="lisi1"
SELECT * FROM USER
#修改密码
UPDATE USER SET PASSWORD=PASSWORD("123456") WHERE USER="lisi"
#使新密码立即生效
FLUSH PRIVILEGES
#给lisi@"192.168.149.1"授权能查询test1数据库中的table1表的id属性
GRANT SELECT(id) ON test1.table1 TO "lisi"@"192.168.149.1" IDENTIFIED BY "123456"
#查看lisi@"192.168.149.1"的权限
SHOW GRANTS FOR lisi@"192.168.149.1"
#给lisi@"192.168.149.1"授权,让它能查询整个table1表的所有属性
GRANT SELECT ON test1.table1 TO "lisi"@"192.168.149.1" IDENTIFIED BY "123456"
#查看lisi@"192.168.149.1"的权限
SHOW GRANTS FOR lisi@"192.168.149.1"
#给lisi@"192.168.149.1"授权,让它能够查询test1数据库中的所有表的所有属性
GRANT SELECT ON test1.* TO "lisi"@"192.168.149.1" IDENTIFIED BY "123456"
#查看lisi@"192.168.149.1"的权限
SHOW GRANTS FOR lisi@"192.168.149.1"
#权限没起作时,请刷新权限,如果还是不行,只能重新登录一次
FLUSH PRIVILEGES
#取消权限 ,取消对test1数据库所有表的查询权限
REVOKE SELECT ON test1.* FROM "lisi"@"192.168.149.1" #此时,只能看到test1中的table1数据表了,看不到table2
#查看lisi@"192.168.149.1"的权限
SHOW GRANTS FOR lisi@"192.168.149.1"
#取消权限,取消对test1数据库table1中所有属性的查询权限
REVOKE SELECT ON test1.table1 FROM "lisi"@"192.168.149.1"
#查看lisi@"192.168.149.1"的权限
SHOW GRANTS FOR lisi@"192.168.149.1"
#取消权限,取消对test1数据库table1中id的查询权限
REVOKE SELECT(id) ON test1.table1 FROM "lisi"@"192.168.149.1"
#给lisi@"192.168.149.1"授权能查询test1数据库中的table1表的id和name属性
GRANT SELECT(id,NAME) ON test1.table1 TO "lisi"@"192.168.149.1" IDENTIFIED BY "123456"
#查看lisi@"192.168.149.1"的权限
SHOW GRANTS FOR lisi@"192.168.149.1"
#取消权限,取消对test1数据库table1中id的查询权限
REVOKE SELECT(id) ON test1.table1 FROM "lisi"@"192.168.149.1" #此时lisi只能查询table1表中的name属性了,不能查询id属性了
#在定义了主键的表上,查看索引
SHOW INDEX FROM dept
#在没有定义主键的表上,查看索引
USE test1
SHOW INDEX FROM table1
#定义索引,方法1
CREATE INDEX index1 ON table1(id)
#查看索引
SHOW INDEX FROM table1
#定义索引,方法2
ALTER TABLE table2 ADD INDEX index1(id)
#查看索引
SHOW INDEX FROM table2
#定义索引,方法3
CREATE TABLE table3
(
id INT,
NAME VARCHAR(20),
INDEX index1(NAME)
)
#查看索引
SHOW INDEX FROM table3
#在table3上面删除索引
DROP INDEX index1 ON table3
#查看索引
SHOW INDEX FROM table3
#创建视图
CREATE VIEW view1
AS
SELECT * FROM table1
#通过视图查询数据
SELECT * FROM view1
#查看视图
SHOW TABLES
SHOW TABLE STATUS WHERE COMMENT="view"
#修改视图 方法1
ALTER VIEW view1
AS
SELECT * FROM table2
SELECT * FROM view1
SHOW TABLES
#修改视图 方法2
CREATE OR REPLACE VIEW view1
AS
SELECT * FROM table1
SHOW TABLES
SELECT * FROM view1
#通过视图修改原表的属性值
UPDATE view1 SET NAME="tigger" WHERE id=1
SELECT * FROM table1
SELECT * FROM view1
#对原表进行修改,视图中的数据也会修改
DELETE FROM table1 WHERE id=1
SELECT * FROM view1
#通过视图增加一行记录,原表中的记录也会增加
INSERT INTO view1 VALUES(1,"bird")
SELECT * FROM table1
#删除视图
DROP VIEW view1
SHOW TABLES
===================================================================
=========================================================
#查看函数功能的开关是否开启
SHOW VARIABLES LIKE "%func%"
#开启函数功能开关
SET GLOBAL log_bin_trust_function_creators=1
SHOW VARIABLES LIKE "%func%"
#创建函数1,不带函数
#因为sqlyog工具的原因,需要使用定界符,关键字是delimiter 后面定界符,表示程序的开始和结束
DELIMITER &
CREATE FUNCTION helloworld()
RETURNS VARCHAR(20)
BEGIN
RETURN "hello world!";
END&
DELIMITER
#调用函数
SELECT helloworld() AS hello
#创建函数2,带参数
DELIMITER $$
CREATE FUNCTION getdate(riqi DATETIME)
RETURNS VARCHAR(50)
BEGIN
RETURN DATE_FORMAT(riqi,"%Y年%m月%d日 %h时%i分%s秒");
END$$
DELIMITER
#调用函数
SELECT getdate("2017-07-19 10:40:30")
#删除函数
DROP FUNCTION getdate
#调用函数 2
SELECT NOW()
SELECT getdate(NOW())
#查看所有函数
SHOW FUNCTION STATUS
#查看具体某个函数
SHOW CREATE FUNCTION getdate
SHOW CREATE FUNCTION helloworld
——————————————————————————————————
存储过程:
数据准备:
create database test1 default charactor set utf8 collate utf8_general_ci
create table hr
(
id int,
name varchar(20),
deptno int,
salary int
)engine=innodb default charset=utf8
INSERT INTO hr VALUES(1,"zhangsan",1,2000);
INSERT INTO hr VALUES(2,"lisi",1,2100);
INSERT INTO hr VALUES(3,"小明",2,2500);
INSERT INTO hr VALUES(4,"小红",2,2200);
INSERT INTO hr VALUES(5,"小王",3,1800);
INSERT INTO hr VALUES(6,"小陈",3,1900);
INSERT INTO hr VALUES(7,"小赵",3,3000)
#写一个存储过程,统计部门员工人数
DELIMITER $$
CREATE PROCEDURE proce1(IN dno INT,OUT total_number INT)
BEGIN
SELECT COUNT(id) INTO total_number FROM hr WHERE deptno=dno;
END$$
DELIMITER
#调用存储过程
#测试1部门的员工人数
CALL proce1(1,@test)
SELECT @test AS 人数
SELECT @test
#验证2部门的员工人数
CALL proce1(2,@renshu)
SELECT @renshu AS 人数
#验证3部门的员工人数
CALL proce1(3,@test)
SELECT @test
#验证一个不存在的部门的员工人数
CALL proce1(4,@test)
SELECT @test
#查看数据库中所有的存储过程
SHOW PROCEDURE STATUS
#查看具体某一个存储过程
SHOW CREATE PROCEDURE proce1
#删除一个存储过程
DROP PROCEDURE pro;
DROP PROCEDURE pro1;
DROP PROCEDURE pro2
mysql:用户管理、索引、视图、函数、存储过程的更多相关文章
- MySQL用户管理及权限设置
mysql 用户管理和权限设置 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql ...
- Mysql用户管理及权限分配
早上到公司,在服务器上Mysql的数据库里新建了个database,然后本地的系统里用原来连接Mysql账号admin连这个数据库.结果报错了,大概是这样子的: Access denied for u ...
- MySQL用户管理及SQL语句详解
1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysql.user; +--------+--- ...
- 【转】MySQL用户管理及SQL语句详解
[转]MySQL用户管理及SQL语句详解 1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysq ...
- MySQL(十六)之MySQL用户管理
一.MySQL用户管理概述 MySQL是一个多用户的数据库,MYSQL的用户可以分为两大类: 超级管理员用户(root),拥有全部权限 普通用户,由root创建,普通用户只拥有root所分配的权限 二 ...
- 库增删该查,表增删该查,记录增删该查,表与表关系(多对多,多对一,一对一),mysql用户管理
库增删该查 增加库 create database db1 create database db1 charset="gbk 查看库 show databases 查看所有库 show cr ...
- MySQL用户管理、常用sql语句、MySQL数据库备份恢复
1.MySQL用户管理 给远程登陆用户授权:grant all on *.* to 'user1'@'127.0.0.1' identified by '123456' (这里的127.0.0.1是指 ...
- MySQL 用户管理与权限管理
MySQL 用户管理与权限管理 -- 操作环境mysql> show variables like 'version'; +---------------+--------+| Variabl ...
- Python 42 mysql用户管理 、pymysql模块
一:mysql用户管理 什么是mysql用户管理 mysql是一个tcp服务器,应用于操作服务器上的文件数据,接收用户端发送的指令,接收指令时需要考虑到安全问题, ATM购物车中的用户认证和mysql ...
- Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复
一.mysql用户管理 grant all on *.* to 'user1'@‘127.0.0.1’ identified by 'mimA123'; 创建user1用户 使用user1登录 /us ...
随机推荐
- VPS一键测试脚本 / 自带结果导出
脚本命令 一下脚本可能卡住,运行时间长,建议在screen中运行. 1.秋水逸冰大佬的Bench.sh脚本 特点:用时较短,对系统测试全面,英文:但缺少国内节点测速 有趣的是,bench.sh既是脚本 ...
- Vuex基础-Mutation
借助官网的一张图,更改 Vuex 的 store 中的状态的唯一方法是提交 mutation.不可以直接对其进行赋值改变.需要注意的是,mutations只能做一些同步的操作. 代码结构: ...
- treap数组版
然而就是将指针的地方换成int引用 就是存个代码 #include<cstdio> #include<iostream> #include<cstdlib> #in ...
- data-ng-app 指令
1.data-ng-app指令定义了一个AngularJS应用程序的根元素. 2.data-ng-app会在页面加载完毕后自动进行初始化应用程序. 3.data-ng-app可以通过一个值连接到代码模 ...
- Python9-数据类型-day3
数据类型转换 #int----->str s = 1 i = str(s) print(i) #str----->int s = ' i = int(s) print(i) #int--- ...
- ./vi: line 2: mkdir: command not found
当前两天博主在写脚本的时候,运行脚本时候总是出现此消息,很郁闷, 开始我以为可能是我mkdir的函数库依赖的问题,但是当我用其他的脚本创建 目录的时候,命令又可以用了,找了半天,终于找到了答案 --- ...
- 硬盘安装Windows Server 2008(解决系统盘符变成D盘)
硬盘安装Windows 2008系统方法 操作系统最好用的无疑是server 2003,但是现在Server 2003支持的软件越来越少,很多是故意不支持Server 2003了, 像php5.5以上 ...
- exec族函数
作用 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离.这样的好处是有更多的余地对两种操作进行管理. 当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用 ...
- C++基础 C++对类的管理——封装
1.封装 两层含义: (1)把事物的属性和方法结合成个整体. (2)对类的属性和方法进行访问控制,对不信的进行信息屏蔽. 2.访问控制 控制分为 类的内部,类的外部. public 修饰的成员,可在内 ...
- Mplab X IDE 安装DMCI
DMCI在Mplab 8中是默认安装的,在 Mplab X IDE中是作为插件,默认不安装. 找到 勾选前面的复选框,点击安装