MySQL数据分析-(8)SQL基础操作之库操作
前面我们讲了学习SQL的两个逻辑框架,jacky说了这样一个逻辑:库是为了存储表的,所以一定是先有库才有表;同样的道理,有表才有表中的数据,是吧,肯定是这个逻辑;那么,今天jacky就捋着这个逻辑从库的SQL语句说起;
(一)增
CREATE DATABASE 数据库名称;
这里要注意,数据库名称一定是半角字符(英文字符、数字、符号);
大部分资料在教授创建数据库的时候,代码到create database 数据库名称这里就结束了,因为我们是实战课程,在实际工作中,我们创建数据库是一定要指定编码类型的,关于字符编码的解释可以参照下面的链接(https://blog.csdn.net/jacky_zhuyuanlu/article/details/77816667)
在真实的实际业务中,我们创建数据库的完整代码如下:
#utf-8
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
关于创建数据库的字符编码,jacky做以下说明:因为我们保存文件的时候,有可能会保存成gbk的形式,那我们用UTF8形式来打开,我们就可能会看不到数据,所以数据库在操作的时候,我们也要指定数据库是什么编码的,数据库的编码有很多,最常用的就是gbk和utf8;jacky这里推荐大家用utf8;
在实际的业务中,公司的技术开发人员,像BAT这种公司,开发系统和技术有很多很多,部门很多,但是数据只有一份,数据库只有一份,很多部门都来分析数据库里的数据,这就会涉及到编码问题,我们在开发程序的时候,不会做重复工作,国外写的东西有些非常好,我们拿来直接用就好了,比如写一个网站,我们如果不用外面的web框架,我们从socket开始写,可能2年3年都写不出来,所以这就涉及我们的数据库可能在以后被很多很多的插件使用,如果我们使用gbk,很多开源的插件是不兼容的,为了以后的统一化,jacky这里统一推荐创建数据库用utf8的编码方式;
COLLATE utf8_general_ci:
- 在mysql内部就是做排序和比较的,记住这一点就够了,记住创建时加上就够了,关于理论解释大家不必关注太多,因为它不重要;
- 设置完成后,在MySQL内部进行排序,进行比较的时候,我们说1=1,这是我们认为的,因为比较的时候,可能有各国的语言会不一样,在字符进行比较的时候,可能是跨国了,既然跨国了,那字符串比较的时候就有一套规则,对于utf8编码的时候,我们排序和比较的时候,我们一般情况下,设置COLLATE utf8_general_ci就够了,
- 在mysql内部就是做排序和比较的,记住这一点就够了,记住创建时加上就够了,关于理论解释大家不必关注太多,因为它不重要;
(二)删
DROP DATABASE 数据库名;
(三)查
--显示数据库
SHOW DATABASES;
默认数据库
mysql - 用户权限相关数据
test - 用于用户测试数据
information_schema - MySQL本身架构相关数据
(四)补充-数据库安全
下面jacky跟大家谈一下数据库安全的问题,因为数据库安全的操作大体上也都是库操作的范围,那么jacky把这部分也放在本此课中来讲,作为库的补充部分;
前面我们拿手机销售公司举例,我们说数据库是一套共享系统,正因为共享,在实际业务中我们才能提高数据管理效率,是吧!
我们说任何事情都有两面性是吧,有好的一面,一定有坏的一面,也是由于我们的数据是共享的,这也就意味这可能一些心怀不轨的人会串改数据库数据,那么我们有什么办法,避免这件事的发生呢?或者说如何提高数据库的安全性呢?
提高安全途径一:要控制能访问数据库的人(用户管理)
大家还记得我们前面是怎么样连接mysql客户端的吧,我们输入的指令是不是mysql -u root -p,是吧;这个root就是我们当前系统的用户名,这个root用户拥有对整个MySQL服务器完全控制的权限,所以为了避免别有用心的人恶意破坏数据库,我们在实际工作中,要尽可能的不用或者少用root账号登陆系统,这时,我们就要创建不同用户账号
1)如何查看当前数据库系统下有多少用户
在我们创建用户之前呢,jacky先跟大家分享一下如何查看当前数据库系统下有多少用户,这样当我们创建完用户之后,才可以检验我们是否把用户成功的创建在我们的数据库中
show databases;
- 在root 用户当前的数据库库下,有一个mysql表;
use mysql;
show tables;
- 我们看到mysql表的最下面有一个user表,user表的数据量是比较大,如何查询user表的全部数据,在我们直观的视觉上是比较难区分的(select * from user;),那么我们看下user表一共有多少列
desc user;
我们接下来,只选择host 和user列,我们查询下;
select host,user from user;
host表示我们用的是哪台机器登陆,user表示的是我们用的哪个用户名;
- 对于host 列来说,127.0.0.1,::1和localhost都是本地的意思,它们是一样的,127.0.0.1是ip,localhost是域名,::1是缩写;
好,通过上面我们就知道了,我们我们当前的用户名都有什么,以及它通过哪台机器登陆的,知道了我们用户名的位置,接下来我们就能给我们数据库创建用户了;
2)用户管理
1.一个误区
- 在前面我们在SQL热身中,我们记不记得我们如何给表中插入数据
insert into 表名(nid,name,pwd) values(1,'jacky','123')
那我们能不能按照上面得方法给user表创建一个用户?答案是可以的,我们在后面课程SQL基础操作之表操作里,会给大家总结,上述语句是给表中插入数据的的通用方法,所以用insert into 表名(… …) values(… ..)是完全没问题的,但是,但是,user这张表至关重要,如果我们插入错误,我们user表就登陆不上去了,
所以对于这种特殊的表,jacky不推荐用上面的命令,我们会用一些特定的命令
2.用户管理的特定命令
--新建用户(增)
create user '用户名'@'IP地址' identified by '密码';
--删除用户(删)
drop user '用户名'@'IP地址';
--修改用户(改)
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
--修改密码(改)
set password for '用户名'@'IP地址'= Password('新密码');
提高安全途径二:对操作数据库的用户设定操作权限
权限管理
上面我们创建新用户的时候,默认新创建的用户什么权限都没有;
--查看权限
show grants for '用户'@'IP地址'
--授权
grant 权限 on 数据库.表 to '用户'@'IP地址'
--取消权限
revoke 权限 on 数据库.表 from '用户'@'IP地址'
关于上面权限替换
- select 只能查
关于数据库.表替换
- 数据库.* 这个数据库里所有的表
- *.* 所有的库所有的表
总结一下:对于一个数据分析师来说,数据库的用户管理和权限管理的SQL代码,大家理解就好,用的时候,能快速查阅资料运用就可以的,但对于数据库管理员也就是DBA来说,jacky说的这部分知识是重中之重,大家要熟练掌握,好,这就是这此课我们要说的内容,我们下次课见
MySQL数据分析-(8)SQL基础操作之库操作的更多相关文章
- {MySQL的库、表的详细操作}一 库操作 二 表操作 三 行操作
MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- MySQL学习之SQL基础(一)DDL
Sql基础 DDL (data defination language) 创建表 CREATE TABLE emp( ename varchar(10), hiredate date, sal dec ...
- 《深入浅出MySQL》之SQL基础
SQL是Structure Query language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言.在众多开源数据中,MySQL正式其中最杰出的代表,MySQL是由三个瑞典人于20世纪 ...
- MySQL学习之SQL基础(一)DML
DML(data Manipulation language) INSERT DELETE UPDATE SELECT INSERT mysql> desc emp; +----------+- ...
- mysqli扩展库操作mysql数据库
配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...
- MySQL数据分析实战-朱元禄-专题视频课程
MySQL数据分析实战-496人已学习 课程介绍 本套课程由知名数据分析博主jacky老师录制,深入浅出讲解MySQL数据分析,从实战角度出发,帮助大家制胜职场!课程收益 1.学会 ...
- MySQL数据分析-(10)SQL基础操作之表操作
大家好,我是jacky,很高兴跟大家继续分享MySQL数据分析实战课程,前面我们学习了库层面增删改查的SQL语句,这次课jacky将给大家介绍表层面的增删改查, (一)本课时的学习逻辑 表层面的增删改 ...
- MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系
数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于 ...
随机推荐
- archive_lag_target参数
需求,由于一套生产环境归档日志切换频率过低,建议修改参数,使其间隔一定时间周期自动切换生成归档日志; SQL>; THREAD# SEQUENCE# TO_CHAR(COMPLETION_TIM ...
- IntelliJ IDEA 最新版 2019.2.4 激活 (持续更新)(含windows和Mac)
IntelliJ IDEA 最新版 2019.2.4 激活 最新版激活包下载地址: 百度网盘 提取码: i28c 转载: Neo Peng Jetbrains系列产品 激活方式 同下述方式相同,只需要 ...
- SqlServer 多服务器管理配置报错:Ensure the agent startup account for 'x.x.x.x' has rights to login as target server, Access is denied.
SQL Server 2012配置多服务器管理时,SSMS设置一直报错,配置失败: 解决方法: 1. 为SQL Server Agent单独创建一个账号,主服务器和目标服务器都创建一样的账号 2. 把 ...
- JS原型对象的问题
原型模式最大的问题是由其共享的本性所导致的.我们知道,原型中所有的成员是被很多实例共享的,这种共享对于函数非常合适.对于那些包含基本值的属性倒也说得过去,毕竟可以通过在实例上添加一个同名的属性来隐藏原 ...
- mysql 添加省市编码表
省表格: --省级 Provincial create table Provincial(pid int,Provincial varchar(50),primary key (pid)) inser ...
- SAP应用真的不性感么
这是一个问题. 上图的One Order是楼下一个部门领导让我给他的团队做的一个古老框架的session. 这个框架诞生于2000年,采用纯面向过程的思路开发.因为上世纪90年代ABAP开始引入对面向 ...
- 去“BAT”这样面试,拿到offer的几率是80%
一.概述 面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会 ...
- Computer Vision_18_Image Stitching:A survey on image mosaicing techniques——2013
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Image Processing and Analysis_8_Edge Detection:Edge Detection Revisited ——2004
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- HTML块级元素与行内元素的区别
块级元素:块级大多为结构性标记 <address>...</adderss> <center>...</center> 地址文字 <h1>. ...