MySQL学习笔记(更新ing)

2019/2/18更新

学习顺序:

入门:慕课网——与MySQL的零距离接触

工具:入门时期用cmd,其次进阶时期使用MySQL—front

工具书:MySQL必知必会

进阶:动力节点 mysql 郭鑫 34道经典的面试题

           百度云盘:MySQL

           网易云课堂:MySQL从入门到精通

            MySQL实战45讲

进度安排:2019/2/24 进阶视频学习完

                  2019/3/3 动力节点面试题重做完

                  2019/3/10 猴子专栏案例学习

1.学习基本的MySQL使用和语句:安装、登录、创建数据库、创建表、添加数据、删除数据、更新数据、更改数据等

2.着重学习select语句,学习方式为:书籍+视频+实际操练。主要使用动力节点的面试题。

3.回头继续学习MySQL的其他基础知识,包括事务、存储引擎等。

4.找案例学习实战。网易MySQL数据分析实战、知乎猴子聊数据分析。

5.其他猎奇知识:慕课网MySQL开发技巧等,了解MySQL还有更广阔的知识等待发掘。

基础知识

1.除了SQL外,最重要的是学些一些细节,比如在SQL编辑环境下,“;”是每句话的结尾。在单条SQL上,不需要加;但要养成习惯。多个字段用的是“,”做分隔。

2.linux系统下命令含义

cd  change directory  切换目录

ls  list列表  即列出目录下的每一个文件

su  switch user  切换用户

3.为什么要配置环境变量?

在使用命令行时,如果我们配置了环境变量,那么就可以直接使用相应的配置。例如在mysql中,在命令行中可以直接使用mysql -u等等,不需要考虑到底是在哪个盘中,如果不设置,输入就无法执行。

4.windows清屏命令行是cls

5.mysql忽略空格,所以不需要纠结空格会不会影响运行,如果便于阅读就应该加空格。

6.当年的误区:创建表之前要先把数据库打开。不是说创建了数据库,就顺带打开了。

create database mysql_shiyan

use mysql_shiyan

7.MySQL数据库的启动和数据库的登录不是同一件

net start mysql启动数据库

mysql -uroot -p是数据库的登录

8.数据库编码

set names gbk 只更改现在屏幕上cmd中显示的,写入到数据库中的还是系统设定的编码。

MySQL登录

1.mysql -u[名称] -p[密码]

疑问:为什么在教学时使用的是root,没有自己的mysql用户名称吗?如何设置呢?

2.提示符

最大的意义:终于明白了每条语句前一串名称是什么了。

最常见的是组合是;用户名·主机名称·当前数据库名称。例如:root@localhometest

提示符可以跟什么参数:\D(数据库)    \d(时间)   \h(主机)   \u(用户名)

3.查看数据库内容 可以通过help来查看show的用法

查看所有数据库:show databases

查看所有数据表:首先要进入指定的数据库,查看该数据库内的所有数据表 show tables。也可以查看其他数据库的表 SHOW TABLES FROM mysql。

查看某个表格的字段:SHOW COLUMNS FROM 表名

查看警告信息:show warnings

查看数据库建立信息:show create database 库名

查看当前数据库:SELECT DATABASE() 是个函数?

查看编码:show variable “%char%”

MySQL操作

数据库

1.create database 数据库名

在创建数据库的时候,需要指定编码,使用:create database 数据库名 character set 编码。查看数据库编码语句:show create database 数据库名,显示创建数据的信息,编码。如果要修改数据库编码,使用:alter database 数据库名 character set = 编码。

2.drop database 数据库名  经常误认为是delete,这两个词有什么区别?

早期困惑:我原本以为删除什么就要先进入到什么的环境中,就想开始的时候要进入到对应的目录中去。但是删除表格或者数据库好像是用关键字来区分的,比如table 和database。因为创建数据表的时候是需要进去到对应的数据库中。

数据表

1.创建数据表

可以创建的内容非常多(表名 数据类型(大小) 是否允许空 默认值 是否自增长  主键)

CREATE TABLE 表名(字段名  数据类型(大小)  是否空  默认值  是否自增 主键) ENGINE=引擎

误区:创建表格和创建数据库不太一样的地方就是:不能只说  我创建一个表格。因为表格必须要包含内容(指字段)。当时学习的时候,看创建数据库是CREATE DATABASE 数据库名,就觉得创建数据表为CREATE TABLE,然后再写表结构。

2.删除数据表

DROP TABLE 表名。

删除数据库对象(结构上的东西)是用DROP,比如删除表,删除列。而删除数据库数据(其内容)应该是用DELETE。

3.更改数据表结构

alter table  add column 字段名 数据类型

alter table  drop column 字段名

4.插入数据

单个数据插入:insert into 表名(字段1,字段2)value(数据1,数据2)

插入select搜索的数据:insert into 表名(字段1,字段2)select(字段1,字段2)from 表名 where条件。

插入的字段数量要和被插入的表格保持一致。

5.更改符合条件的数据

updata 数据表 set 要更新的=新内容 where条件

6.删除数据 DELETE FROM 表名 where条件

确定表名,确定条件。delete的语句更其他都不太一样。

存储过程

储存过程是我新接触的知识,和函数,流程体三者构成一个复杂的SQL知识。

应用的场景:一个提数的业务场景,需要很多步才能完成这个提数,同时经常需要重复做,但每次都差不多,只是提数的条件不太一样,比如他需要女性的数据,他需要男性的数据。这个时候,可以使用存储过程(可以输入参数的:男性,女性),一方面解决多个SQL的书写问题,另一方面解决重复做的问题。

学习资料:百度云MySQL

我在学习陌生概念的时候,不知道为啥总会有一个预想,类比。然后依次为标准学习,如果我的预想是正确的,还好。如果不正确,后续的学习很多就不明白。

在学数学概念的时候,这种思维模式特别明显。一方面,数学概念比较抽象,另一方面,很多陌生概念。

错误的预想会导致对概念的本质理解错误,导致后续概念全都错误。

存储过程呢?

我以为是一个单独的代码,可以存在电脑里,需要的时候,找到路径调用就行了。

但实际上,代码需要存在MySQL中,创建的时候也需要再指定的数据库中创建。

另一个理解错误。修改分隔符,我以为是在后续运行中,可以让存储过程完整,不会因为;跳出过程。但是错了,修改分隔符是为了防止在创建的时候,用;结尾的时候跳出创建过程,导致后续的select语句,end等无法写出来。所以需要在创建存储过程前修改,然后完成后改回来。但在调用的时候不需要delimiter。

超过两个以上的语句,应该是用begin end

可以带有小括号,或者不带有

储存过程能使用大部分的select语句,但不能用于创建表,创建数据库。

1.创建存储过程

创建的时候要进去指定的数据库中

DELIMITER //

CREATE PROCEDURE 名字(参数)

BEGIN

SELECT语句

END//

DELIMIT ;

其中,SELECT语句要完整,既有“;”结束号。

2.调用存储过程

CALL 名字()  重要的是要有括号,不论有没有参数。

3.删除存储过程

错误:我刚开始用的是delete。还是我写的是DROP PROCEDURE 名字。但事实上,不需要指定PROCEDURE。不知道为什么。惯性思维。

查询

对于复杂查询一般都分步完成,有两种方法:

利用子查询:将上一步的查询结果做为条件,放在where中

利用关联查询:将上一步的查询结果做为一个临时表,join

当返回的结果为多列时,就不适合用子查询了。有时候需要结合逻辑符号,语句。

(待补充)

案例学习总结

1.《用SQL分析北京二手车市场现状》

数据分析前的准备工作:数据清洗。数据清洗几个常见步骤:

*选择子集

*删除重复值

*缺失值处理

*一致化处理


你可能感兴趣的:(MySQL学习笔记(更新ing))