mysql学习总结(1)

1.1 MySQL 软件安装及数据库基础

1)软件安装及服务器设置。

       (1)下载windows版,下载解压后文件放在c盘,遇到的第一个问题就是 my.ini文件找不到,可以用notepad++创建my.ini文件(下载链接:https://notepad-plus.en.softonic.com/)。

       (2) 在导入数据文件到mysql时,提示需要把初始密码改掉,可参考下面语句完成密码更改(参考链接:https://www.cnblogs.com/Owen-ET/p/9644727.html)

2)使用图形界面软件 Navicat for SQL

        在用Navicat链接mysql数据库时,总是提示:Authentication plugin caching_sha2_password' cannot be loaded的错误,按照链接(https://blog.csdn.net/u011182575/article/details/80821418)可把问题解决。

3)数据库基础知识

    (1)数据库定义

             数据库是一个以某种有组织的方式存储的数据集合。

    (2)关系型数据库

             采用了关系模型来组织数据的数据库。

     (3)二维表

              表是一种结构化的文件,可用来存储某种特定类型的数据。存储在表中的数据必须是同一类型的数据,并且同一个数据库中表的名字是唯一的,即不能有两个相同名字的表。

      (4)行 

              表中的数据是按行存储的,所保存的每个记录存储在自己的行内。

       (5)列

              表由列组成,列存储表中的某一个信息。

       (6)主键

              主键(primary key)一列(或一组列),其值能够唯一标识表中每一行。没有主键,更新或删除表中特定行就极为困难,在创建表的时候就应该定义主键。

              主键有以下要求:

                任意两行都不具有相同的主键值;

                每一行都必须具有1个主键值,主键值不能为NULL;

                主键列中的值不允许修改或更新;

                主键值不能重用。

        (7)外键

                外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

1.2 MySQL 基础 (一)- 查询语句

1)按照示例导入数据库

      CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;


2)SQL是什么?MySql是什么?

        SQL(发音为字母 S-Q-L或 sequel)是 Structured Query Language(结构化查询语言)的缩写。 SQL是一种专门用来与数据库沟通的语言。

        MySQL是数据库管理系统(DBMS)中的一类,数据库是通过DBMS创建和操纵的容器。

3)查询语句 SELECT FROM

  (1)语句解释

如:SELECT city FROM offices; --从offices表中读取city这一列。

(2) 去重语句

SELECT DISTINCT city FROM offices;--DISTINCT 应该位于列名前面,并且是作用于所有列。

(3) 前N个语句

SELECT city FROM offices LIMIT 5;--显示offices表中city列的前5行数据。

4)筛选语句 WHERE 

SLECT price FROM products WHERE price > 10000;--从products表格中的price这一列中选取数值大于10000的数据。

常用的运算符包括:=等于,!=或者<>是不等于,>大于,<小于,!<不小于,!>不大于,BETWEEN...AND...在什么范围之间,IS NULL 是空值;

操作符(operator)用来联结或改变 WHERE子句中的子句的关键字,也称为逻辑操作符。

AND 与,同时满足条件;

OR或,满足其一,计算优先级低于AND;

IN指定条件范围,范围中的每个条件都可以进行匹配。功能与OR类似。

NOT:WHERE子句中用来否定其后条件的关键字。

通配符:用来匹配值的一部分的特殊字符。

%:%表示任何字符出现任意次数。

如 SELECT city FROM offices WHERE city LIKE '%ab' #从office表里面city的列中选取以ab结尾的数据。

_:下划线的用途与%一样,但它只匹配单个字符,而不是多个字符。起到填空题的作用,规定的是数据字符的数量。

[]:方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。

5)分组语句 GROUP BY

SELECT vend_id, COUNT(*) AS num_prods

FROM Products

GROUP BY vend_id

HAVING vend_id > 2;

对vend_id进行分组,计数结果为COUNT(*),作为num_prods列值输出。GROUP BY必须放在WHERE 语句后 ORDER BY语句前。

6)排序语句 ORDER BY 

SELECT order_num, COUNT(*) AS items

FROM OrderItems

GROUP BY order_num

HAVING COUNT(*) >= 3

ORDER BY items, order_num;

DESC:倒序;默认正序。

7)函数

SUBSTRING():提取字符串的组成部分;

CONVERT():数据类型转换;


8)使用注释

注释使用--(两个连字符)嵌在行内。 --之后的文本就是注释。;

在一行的开始处使用#, 这一整行都将作为注释。

注释从/*开始,到*/结束, /*和*/之间的任何内容都是注释。

9)代码规范

参考 https://zhuanlan.zhihu.com/p/27466166 [SQL Style Guide] https://www.sqlstyle.guide/

作业一:

SELECT DISTINCT Email 

FROM email 

WHERE Email IN(SELECT Email FROM email GROUP BY Email HAVING COUNT(Email)>1);

作业二:

SELECT *

FROM World

WHERE area > 3000000 or (population >25000000 and gdp >20000000);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容