发表于: 2017-12-13 01:08:25
2 807
2017/12/12
今日完成:
1. 什么是MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
以下为一些特性:
Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。
InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎。
索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程度上弥补这一缺陷,许多 SQL 命令都有一个 DELAY_KEY_WRITE 项。这个选项的作用是暂时制止 MySQL 在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE 选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但 MySQL 把同一个数据表里的索引总数限制为16个。
InnoDB 数据表的索引:
在 InnoDB 数据表上,索引对 InnoDB 数据表的重要性要大得多。在 InnoDB 数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的基础。“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE 命令以及 INSERT、UPDATE 和 DELETE 命令。出于效率方面的考虑,InnoDB 数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。
InnoDB 数据表不支持全文索引。
资料来源:https://baike.baidu.com/item/mySQL/471251?fr=aladdin
2. MySQL相关概念
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
表头(header): 每一列的名称;
列(row): 具有相同数据类型的数据的集合;
行(col): 每一行用来描述某个人/物的具体信息;
值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具有唯一性。
常见数据类型:
整型:tinyint(m)、smallint(m)、mediumint(m)、int(m)、bigint(m) ps:取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
浮点型:float(m, d)、double(m, d) ps: 设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。
定点数:浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m, d) 参数m<65 是总个数,d<30且 d<m 是小数位。
字符串:char(n)、varchar(n)、tinytext、text、mediumtext、longtext
日期时间类型:date、time、datetime、tamestamp ps:若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
数据类型的属性:
资料来源:http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
万能命名规则: 标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。
对于标识符是否区分大小写取决于当前的操作系统, Windows下是不敏感的, 但对于大多数 linux\unix 系统来说, 这些标识符大小写是敏感的。
资料来源:https://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html
3. 使用CMD操作MySQL
建立三个表:
设置主键:
明日计划:1. 掌握Mysql和navicat的基本操作。
2. 完成任务1中的4-10步骤,熟练掌握SQL基本语句和操作。
遇到的问题:
1. cmd中输入net start mysql 提示:服务名无效 请键入NET HELPING 2185以获得更多的帮助
百度后发现,服务列表里没有MySQL服务,故出现该错误。请进入MySQL的bin目录,并在bin目录打开命令行窗口,在命令行窗口输入:mysqld –install
资料地址:http://blog.csdn.net/glory_zhu/article/details/41596337
再次报错:Install/Remove of the Service Denied!
百度后,需要管理员权限
资料地址:http://blog.csdn.net/lxpbs8851/article/details/14161935
服务安装成功,但是MySQL服务无法启动
百度,原因是5.7安装文件夹里面缺少data文件夹,initialize以后会自动生成这个文件夹及其中文件。输入命令 mysqld –initialize,成功,但是依然无法启动。
资料来源:http://www.jb51.net/article/91778.htm
然后想到MySQL在开机的时候就已经启动了,会不会是因为已经打开所有冲突,因此尝试关闭:
成功
登陆到MySQL mysql –uroot –p
报错:'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件
百度解决方法
http://blog.csdn.net/hard_158/article/details/54975559
添加环境变量:
遇到新问题
继续百度
为了加强安全性,MySQL5.7为root用户随机生成了一个密码
http://blog.csdn.net/java_gchsh/article/details/77866276
但是找不到my.ini,在贴吧中得到答案
http://tieba.baidu.com/p/2943195412
但是依然没有解决问题,继续百度
找到一个比较奇怪的方法,使用了两个管理员CMD窗口,
https://www.cnblogs.com/xixibaby/p/6549872.html
成功,不过不知道这种到底是什么操作。
2. MySQL57和MySQL Router的概念和不同,为什么CMD打开的是MySQL Router
百度:MySQL Router是MySQL官方推出的一个轻量级MySQL中间件是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品.但是和mysql-proxy有区别。mysqlroute使用了两个端口进行读写分离。(目前的水平不能理解,暂时放着)
资料来源:http://blog.csdn.net/Becivells/article/details/58332931
3. 系统变量和用户变量的区别
点击“我的电脑→属性→高级系统设置”标签的“环境变量”按钮,出现“环境变量”对话框,如果当前是以Administrator登录系统的用户,对话框的上面为Administrator的用户变量,对话框的下面为系统变量(即相当于系统中所有用户的用户变量)。有的时候我们会看到在用户变量和系统变量中都存在某一个环境变量,比如path,那么path的值到底是用户变量中的值还是系统变量中的值,或者两者都不是呢?答案是两者都不是。path变量的值是用户变量中的值与系统变量中的值的叠加。
系统环境变量,对所有用户起作用,而用户环境变量只对当前用户起作用。
例如你要用java,那么你把java的bin目录加入到path变量下面(添加方法),那么它就是系统环境变量,所有用户登陆,在命令行输入java都会有java的帮助信息出来。而如果你在某个用户的变量下面新建一个变量,那么它就只对这个用户有用,当你以其他用户登陆时这个变量就和不存在一样。
系统变量:与windows操作系统包括网络状况有关,由操作系统定义。Administrators组的用户可以添加添加、修改或删除。
用户变量:由操作系统、某些应用程序以及用户建立,例如WindowsXP安装程序将临时文件夹设定了默认存储位置,并视为用户变量。任何用户都可以添加、修改或删除。
资料来源:http://blog.csdn.net/sxhlovehmm/article/details/44274633
收获:
1. 掌握MySQL基本信息。
2. 掌握SQL建数据库,建表基本语句,使用CMD操作MySQL。
评论