MySQL笔记(五)MySQL 角色与SQL CHECK约束
MySQL ROLE
MySQL 8.0 Reference Manual / Security / MySQL User Account Management / Using Roles
how to create role on MySQL database
mysql 8.0 才支持角色。
创建新角色:
CREATE ROLE 'app_developer', 'app_read', 'app_write';
将权限赋予角色:
GRANT ALL ON app_db.* TO 'app_developer';
GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';
创建新用户:
CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass';
CREATE USER 'read_user1'@'localhost' IDENTIFIED BY 'read_user1pass';
CREATE USER 'read_user2'@'localhost' IDENTIFIED BY 'read_user2pass';
CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';
将角色赋予用户:
GRANT 'app_developer' TO 'dev1'@'localhost';
GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';
GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost';
SQL CHECK 约束
http://www.w3school.com.cn/sql/sql_check.asp
没找到官方文档。查了下资料发现 MySQL 不支持 CHECK ,加不加都一样。。
示例:
DROP TABLE IF EXISTS employee;
CREATE TABLE employee (
name VARCHAR(50) NOT NULL,
phone_num VARCHAR(20) NOT NULL,
id CHAR(8),
sex CHAR(1), PRIMARY KEY(id), CONSTRAINT check_sex CHECK (sex IN ('f', 'm')),
CONSTRAINT check_id CHECK (id LIKE 'E_______') ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO employee
(name,
phone_num,
id,
sex)
VALUES
('李四',
'',
'E2008001',
'f'); DROP TABLE IF EXISTS product;
CREATE TABLE product (
name VARCHAR(50) NOT NULL,
id CHAR(9),
product_type VARCHAR(50) NOT NULL,
production_date DATE, PRIMARY KEY(id), CONSTRAINT check_id CHECK (id LIKE 'P%'
AND SUBSTRING(id, , ) = YEAR(production_date)) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO product
(name,
id,
product_type,
production_date)
VALUES
('飞碟迷宫',
'P20080021',
'玩具',
'2008-10-22'); CREATE TABLE customer (
name VARCHAR(50) NOT NULL,
id CHAR(9),
sex CHAR(1) NOT NULL,
department VARCHAR(50) NOT NULL,
salary VARCHAR(50) NOT NULL,
job_title VARCHAR(50) NOT NULL, PRIMARY KEY(id), CONSTRAINT check_id CHECK (id LIKE 'C%') ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE order_master (
id CHAR(12) PRIMARY KEY,
customer_id CHAR(9) NOT NULL,
employee_id CHAR(8) NOT NULL,
total DECIMAL(8, 2) DEFAULT 0,
-- order_date DATE DEFAULT CURDATE(), 这两行是错的,MySQL目前字段的默认值不支持函数
-- shipping_date DATE DEFAULT CURDATE(), 另外一种解决方案是由应用程序插入默认值
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- shipping_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
-- 或者是用触发器来做
invoice_number VARCHAR(50) UNIQUE, FOREIGN KEY (customer_id)
REFERENCES customer(id), FOREIGN KEY (employee_id)
REFERENCES employee(id)
) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE order_detail (
order_id CHAR(12) NOT NULL,
product_id CHAR(9) NOT NULL,
quantity INT NOT NULL,
price DECIMAL(8, 2), FOREIGN KEY (order_id)
REFERENCES order_master(id), FOREIGN KEY (product_id)
REFERENCES product(id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
MySQL笔记(五)MySQL 角色与SQL CHECK约束的更多相关文章
- SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束
SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...
- SQL CHECK 约束
SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限 ...
- SQL-W3School-高级:SQL CHECK 约束
ylbtech-SQL-W3School-高级:SQL CHECK 约束 1.返回顶部 1. SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那 ...
- 涂抹mysql笔记-搭建mysql高可用体系
mysql的高可用体系<>追求更高稳定性的服务体系 可扩展性:横向扩展(增加节点).纵向扩展(增加节点的硬件配置) 高可用性<>Slave+LVS+Keepalived实现高可 ...
- 【MySQL笔记】mysql来源安装/配置步骤和支持中国gbk/gb2312编码配置
不久的学习笔记.分享.我想有很大的帮助谁刚开始学习其他人的 备注:该票据于mysql-5.1.73版本号例如 1. mysql源代码编译/安装步骤 1) 官网下载mysql源代码并解压 2) cd至源 ...
- MySQL 笔记(Mysql 8.0.16)
用户登陆 mysql -u user_name -p 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 关闭服务 D:\ ...
- 涂抹mysql笔记-管理mysql服务
-DSYSCONFDIR=/mysql/conf \ 所以在conf下建立my.cnf文件 vi my.cnf [client]port=3306socket=/mysql/conf/mysql.so ...
- 涂抹mysql笔记-安装mysql
1.mysql安装:(1)RPM安装:rpm -ivh xxx 建议安装三个:MySQL-server-VERSION.PLATFORM-cpu.rpmMySQL-client-VERSION.PLA ...
- [MYSQL笔记0]MYSQL的安装
mysql是一种关系型数据库管理系统.以mysql5.7版本为例,安装过程如下: 首先百度出mysql的官网,进入:(以下是自己安装失败的过程,直接下拉最后看大佬的安装过程吧,就是那个红红的网址) 找 ...
随机推荐
- POJ-2356 Find a multiple(DFS,抽屉原理)
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7133 Accepted: 3122 Speci ...
- poj1850Code
Code Transmitting and memorizing information is a task that requires different coding systems for th ...
- Gym - 101628F Find the Inn dijkstra,读边时计算新权值
题意: 给n个点m条边及每条边所花费的时间,经过给定的p个点时会停留k秒,要求在t秒内从1号点走到n号点,若可以走到输出最短时间,若不行输出-1.. 题解:读取边时,将每个点停留的时间加到以其为终点的 ...
- ionic 下拉选择框中默认显示传入的参数
开发过程当中遇到一个有趣的问题,如果我在第一个页面需要把 item { "ownerId" : 1 } 传递给第二个页面,并挂在$scope下 $scope.item = $sta ...
- linux UVC and hardware viewer
至于从哪个版本开始内核支持UVC,官方的话是“Linux 2.6.26 and newer includes the Linux UVC driver natively.” 1.查看摄像头ID: [r ...
- XSS 防范XSS 攻击的措施
XssSniper--0KEE TEAM XssSniper--0KEE TEAM XssSniper 扩展介绍 一直以来,隐式输出的DomXSS漏洞难以被传统的扫描工具发 ...
- django model field validator 设置
转自:http://blog.csdn.net/cwjcwj520/article/details/17330845 例子为想在创建用户名的时候验证输入字符是否有效,并且插入了even_field为C ...
- SQLSERVER 函数大全
转自:http://blog.csdn.net/travylee/article/details/7216481 SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合. 1. 字符串函数 ...
- Redis、Mongo - 目录
redis redis字典取数据.列表取数据(数据量大) redis 实现栈 - python mongodb - 可视化工具 / pymongo - 使用方法
- Java - Spring AOP 拦截器的基本实现
一个程序猿在梦中解决的 Bug 没有人是不做梦的,在所有梦的排行中,白日梦最令人伤感.不知道身为程序猿的大家,有没有睡了一觉,然后在梦中把睡之前代码中怎么也搞不定的 Bug 给解决的经历?反正我是有过 ...