前期回顾:
MySQL入门指南1(进入命令行,数据库,数据表操作)
MySQL入门指南2(SQLyog使用,增删改查)
MySQL入门指南3(常用函数)
MySQL入门指南4(查询进阶,外连接)
MySQL入门指南5(索引,约束,事务)
目录
一、视图
1. 基本概念
2. 视图的基本使用
代码演示:
-- 创建视图
CREATE VIEW emp1 AS SELECT ename,sal,deptno FROM emp;
-- 展示视图信息
SHOW CREATE VIEW emp1;
-- 查找视图
-- 视图创建好之后可以当成一个表使用
SELECT * FROM emp1;
-- 更新视图中的列
ALTER VIEW emp1 AS SELECT ename,sal FROM emp;
-- 删除视图
DROP VIEW emp1;
3. 视图细节
代码演示:
-- 视图中的数据变化会影响到基表,基表的数据变化也会影响视图
-- 更改基表中的数据,视图中的数据会发生变化
UPDATE emp
SET sal = 1000
WHERE ename = 'BLAKE';
-- 更改视图中的数据,基表中的数据会发生变化
UPDATE emp1
SET sal = 5000
WHERE ename='BLAKE';
-- 视图这种可以再使用视图,但数据仍来自于基表
-- 以emp创建视图emp1
CREATE VIEW emp1 AS SELECT ename,sal,deptno FROM emp;
-- 以emp1创建视图emp2
CREATE VIEW emp2 AS SELECT ename,sal FROM emp1;
SELECT * FROM emp;
SELECT * FROM emp1;
SELECT * FROM emp2;
4. 视图最佳实践
二、用户管理
1. MySQL用户
代码演示:
-- 创建用户同时指定密码
CREATE USER `newbniz`@`localhost`
IDENTIFIED BY '125656556';
CREATE USER `haohao`@`localhost`
IDENTIFIED BY '123456';
-- 操作mysql数据库
USE mysql;
-- 查询user表中的user
SELECT `user` FROM `user`;
-- 删除用户
DROP USER `haohao`@`localhost`;
-- 用户修改密码
-- 修改自己的密码
SET PASSWORD = PASSWORD('123456');
-- 修改他人的密码(当前登录用户有该权限)
SET PASSWORD FOR `newbniz`@`localhost` = PASSWORD('123456');
2. MySQL权限
代码演示:
-- 权限管理
-- 给用户授权 -- IDENTIFIED BY '密码' 若加上这一句则修改密码为该密码
-- 赋予单项权限
GRANT SELECT ON test.* TO `newbniz`@`localhost` ;
-- 赋予多项权限
GRANT SELECT,DELETE,INSERT ON test.* TO `newbniz`@`localhost`;
-- 赋予除GRANT OPTION 外所有简单权限
GRANT ALL ON test.* TO `newbniz`@`localhost` IDENTIFIED BY '123456';
-- 回收用户授权
-- 回收指定权限
REVOKE SELECT ON test.* FROM `newbniz`@`localhost`;
-- 回收所有权限
REVOKE ALL ON test.* FROM `newbniz`@`localhost`;
-- 权限生效指令
FLUSH PRIVILEGES;
三、数据类型
1. 数值类型
-- 设置为无符号类型只需要在后面加上 UNSIGNED 即可
CREATE TABLE test17(
num1 TINYINT NOT NULL DEFAULT 0, -- 未指定UNSIGNED
num2 TINYINT UNSIGNED NOT NULL DEFAULT 0); -- 指定UNSIGNED
INSERT INTO test17(num1)
VALUES(127);
INSERT INTO test17(num2)
VALUES(255);
SELECT * FROM test17;
代码演示:
--- 小数
-- M 是小数总位数(小数点前+小数点后)
-- D是小数点后的位数
-- 当小数点后的位数多于D时,会自动四舍五入
-- 小数点前的位数不得大于 M-D,否则会报错
CREATE TABLE test15(
num1 FLOAT,
num2 DOUBLE,
num3 DECIMAL(6,5));
INSERT INTO test15
VALUES(111111111111.1111111,4111111115151.6548545454545,3.141595654545);
INSERT INTO test15
VALUES(11111.1111111111,111111111111.1111111111111111,2.666666);
SELECT * FROM test15;
CREATE TABLE test16(
num1 FLOAT,
num2 DOUBLE,
num3 DECIMAL); -- 此时M D省略,M默认为10,D默认为0
-- 小数点后有小数时,会自动四舍五入
INSERT INTO test16
VALUES(1.2222222,25.5455,11111112111.52850);
SELECT * FROM test16;
2. 字符串类型
3. 日期类型
代码如下:
-- 日期类型有三种
-- 1. date 用于存储 年月日 这样的日期
-- 2. datetime 用于存储 年月日时分秒 这样的日期
-- 3. timestamp 时间戳 ,获取系统当前时间 用于自动记录insert update的时间
-- 我们以这三种日期类型创建一个测试表
CREATE TABLE test11(
t1 DATE,
t2 DATETIME,
t3 TIMESTAMP);
SELECT * FROM test11;
-- 按照不同日期类型对应的格式传入数据
INSERT INTO test11
VALUES('2011-11-11','2011-11-11 12:45:32',NULL);
-- 由于date只能存储年月日,所以当你传入年月日时分秒时会自动取前面的年月日
-- 而detetime能存储年月日时分秒,当我们只传入年月日时,后面的时分秒会自动补为00:00:00
-- timestamp 传入null时,会自动获取当前系统时间
INSERT INTO test11
VALUES('2011-01-10 14:45:32','2011-11-11',NULL);
DROP TABLE test11;
四、存储引擎
1. 基本介绍
2. 四种主要存储引擎及特点
3. 细节说明
4.如何选择表的存储引擎
5. 修改存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎;