一.
视图与表的区别和联系
1.表属于全局模式中的表,是有实际的物理记录的,是有内容的,是实表;视图属于局部模式的表,没有实际的物理记录,只是一个用来展示内容的窗口,是虚表。所以视图的建立和删除只影响视图本身,不影响对应的基本表。
2.视图是逻辑概念的存在,只能用创建的语句来修改,不占用物理空间,而表占用物理空间,可以及时对它进行修改。
3.视图是已经编译好的SQL语句,是可视化的表,是查看数据表的一种方法,而表不是。从安全的角度来看,用户通过视图并不能接触数据表。
联系:视图是在基本表之上建立的表,它的结构和内容都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表
=================================================
普通索引(index前不加修饰词)和唯一索引(常用unique修饰index)
单列索引(一个索引包含单个列)和组合索引(包含多个列的索引,要求这些列的组合必须唯一)
全文索引(fulltext)
创建表时创建索引
create table book{(
index(year_publication)
)
UNIQUE、FULLTEXT index和key为同义词,两者作用相同,用来指定创建索引。
创建唯一索引(单列索引):
create table t(
UNIQUE index UniqIdx(id)
)
create table s(
index SingleIdx(name(20))
)
创建组合索引:(多个字段创建上创建一个索引)
create table t3(
index Multildx(id,name,age(100)))
MySQL13章用户管理
host:%
user表
13.2账户管理;
新建普通用户(create user )在 自己的MySQLuser表中。
不建议直接使用MySQL数据库表的方式
table_priv
drop和delete删除用户时,选择drop最好
==================================
创建索引:
1.创建表时
2.alter table 表名 add 索引类型 索引名(字段名)这两个字段名都在后面
3.create 索引类型 索引名称 on 表名(字段名)这两个字段名都在后面
删除索引:
1.drop 索引类型 索引名称 on 表名
2.alter table 表名 drop 索引类型 索引名称
创建视图:
单表创建视图:create view 视图名 as select
多表创建视图:create view 视图名 as select .....from 表名1,表名2.
修改视图:
create or replace view 视图名() as select
alter view 视图名(字段名) as select
update view_t set quantity=5
删除视图:drop view if exists 视图名
delete from view_t2 where price=5;
创建用户语法:
1. CREATE USER '用户名'@'host' IDENTIFIED BY '密码' 创建的用户无权限
2.GRANT 权限(all是所有权限) ON db.table(*.*表示所有) TO '用户名'@'host' IDETIFIED BY '密码' WITH GRANT OPTION(赋予创建用户权限);
删除用户:DROP USER '用户名'@'host';
修改当前用户密码 :SET PASSWORD =password('新密码');
修改其他用户密码:SET PASSWORD FOR '用户名'@'host' = password('新密码');
推荐使用GRANT语句修改密码
语法格式:GRANT USAGE ON db.table TO '用户名'@'host' IDENTIFIED BY '新密码';
远程连接数据库,用户的host地址设置为%, 远程连接命令: mysql -u用户名 -p密码 -h 主机地址
=======================================
mysqldump -uroot -p test []>c:\user\Adminstrster....\test_2018_
通过mysql可视化工具。
备份某个表。
mysqldump -u root -p0000 --database test
mysql -uroot -p
日志15.1即可。
const
MySQL性能优化:
优化查询:
1.尽量使用具有唯一标识的字段进行查询。
2.如果是字符串数据,能用=号的尽量用=号,不要过多的使用like查询
3.连接查询中不要使用子查询,全部使用连接查询(内连接\左连接\自链接)
4.对经常查询的表的某列/多列建立索引,提高查询效率。
5.对数据库进行分区、分表
6.搭建数据库集群、分布式数据库
7.对数据进行读写分离
8.
16.3分析表等可以不看了。
16.4.1 优化服务器硬件
16.4.2 搞运维的可以更好的配置MySQL服务器,优化MySQL服务器。(MySQL参数优化了解就行)
MySQL优化的方向:
MySQL性能优化(可能是面试题)
16.6 专家点拨
字符串建立索引通过全文建立索引。
二.
数据库的基本操作
创建 删除 数据库存储引擎
数据表的基本操作
增删查改
数据类型和运算符
整数类型
浮点类型和定点数类型
日期和时间类型
低级错误又出现了
函数简介
**abs()
select pi()
sqrt()平方根 Mod(x,y)求余
**cel(x),ceiling(x),floor(x)
rand() select rand(),rand(),rand()
select rand(10)
round(x)四舍五入 round(x,y) truncate(x,y)y的数值表示小数点后几位,1的话就是一位
pow(x,y)幂运算函数pow(x,y)x的y次方,y可能为负
exp(3)以e为底的3次方
sin()cos()
其实还有sum()max()count()等函数,
char-length()
concat()将两个字符串合并为一个
concat_ws(x,y)x表示一个分割符
替换字符串的函数insert(s1,x,len,s2)s1旧,x起始位置,len长度,s2新的字符串
lower()lcase()转换成小写upper()转换成大写
left(s,n)相当于切片right()
lpad(‘hello’,4,‘??’),lpad(‘hello’,10,‘??’)填充字符串
rpad()
日期和时间函数
curdate()current_date()两个函数作用相同都可以返回当前系统的时间
current_time()
Unix时间戳函数
Unix_Timestamp(date)Unix_Timestamp(now())
时间戳用于cooie中用户登录
格林尼治即世界时1970 0.0.0
date_format(date,format)根据指定的格式
%y %Y %M %m %D %H
select *from fruits limit 4,3;
select *from fruits limit 4
基本查询
表单查询
连接查询
1
select
先执行子查询,再执行父查询。
子查询的结果很多也可以通过连接查询到。
所有子查询能实现的都可以用内连接或外连接来实现,反之不行。
v