当前位置:网站首页>什么是MySQL?MySql的学习之路是怎样的
什么是MySQL?MySql的学习之路是怎样的
2022-07-06 08:57:00 【自动化测试七叔】
前言
今天呢笔者想给大家来讲讲MySql,这篇文章呢分为两个部分,分别是mysql基础部分与高级部分,废话笔者就不多说了,咱们直接进入主题吧。
一.基础
1.1数据库操作
Show databases;显示所有的数据库
Show tables; 显示所有的数据库表
Use databasename;切换数据库
Desc tablename; 显示表中所有的字段信息
说明:笔记中所使用的sql语句均使用表websites 和 access_log
表1:websites
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
+----+---------------+---------------------------+-------+---------+
表2:access_log
+-----+---------+-------+------------+
| aid | site_id | count | date |
+-----+---------+-------+------------+
| 1 | 1 | 45 | 2022-5-10|
| 2 | 3 | 100 | 2022-05-13|
| 3 | 1 | 230 | 2022-05-14 |
| 4 | 2 | 10 | 2022-05-14 |
| 5 | 5 | 205 | 2022-05-14 |
| 6 | 4 | 13 | 2022-05-15 |
| 7 | 3 | 220 | 2022-05-15 |
| 8 | 5 | 545 | 2022-05-16 |
| 9 | 3 | 201 | 2022-05-17 |
+-----+---------+-------+------------+
1.2 LIKE 操作符
实例:
select * from websites where url like 'https%';-- url包含https的数据
select * from websites where name like 'G%'; -- name以G开头
select * from websites where url like '%h%';-- url包含h的字段数据
select * from websites where name like '_o%';-- name中o在第二个字符的数据
1.3ORDER BY 关键字
说明:对结果集按照一个列或多个列排序
实例:
select name,alexa from websites
order by alexa desc; -- 默认时升序 desc 表示降序
select * from websites
order by country, alexa; -- 多列排序时,先排country 在排alexa
1.4 INSERT INTO
说明:向表中插入数据
实例:
insert into websites
values (6,'百度','http://www.baidu.com',22,'ZG');-- 可以省略列,但要所有的值都插入
insert into websites (id ,name,url,alexa,country)
values ('7','网易','www.wangyi.com','25','ZG');-- 可以指定插入哪一列
1.5 UPDATE
说明:更新表中的数据
实例:
update websites
set url = 'http://www.wangyi.com'
where id = 7;
update websites
set alexa = 5000, country = 'USA'
where id = 3;
1.6 DISTINCT
说明:过滤重复的数据
实例:
SELECT DISTINCT country FROM Websites;
1.7 DELETE
说明:删除数据或者删除表
实例:
-- 删除一行数据
SELECT FROM WEBSITES
WHERE ID = 7;
-- 删除整个表,但是表的结构仍存在
SELECT FROM WEBSITES;
1.8 AND, OR ,IN
说明:均用于筛选数据
实例:
SELECT * FROM WEBSITES
WHERE ID BETWEEN 1 AND 3;
SELECT * FROM WEBSITES
WHERE ID = 1 OR ID =3;-- 筛选id为1和3 的数据
SELECT * FROM WEBSITES
WHERE ID IN (1,3);
以上就是Mysql的基础部分,一些简单的增删改查操作,可能内容不是很全,但是希望对初学Mysql的同学能起到一定的参考和借鉴的作用,接下来我就要来说说基础部分应该包括的建库,建表等..这些被我加到高级部分了。
二、高级
2.1 CREATE DATABASE 建库
CREATE DATABASE BOKEYUAN;-- 建立一个名字为BOKEYUAN的数据库
2.2 CREATE TABLE 建表
USE BOKEYUAN;-- 使用新建的数据库
CREATE TABLE MYTABLE -- 建立一个名字为MYTABLE的表
(
ID INT(4) PRIMARY KEY COMMENT '序号-唯一键' ,
NAME VARCHAR(255) NOT NULL COMMENT '网站名称',
URL VARCHAR(255) UNIQUE COMMENT '网址',
ALEXA INT(5) COMMENT '访问量',
COUNTRY CHAR(20) COMMENT '网站所属国家'
);
2.3 INSER INTO SELECT
说明:上面我们已经创建好了表结构,但是还没有插入数据,那么前面基础部分已经写过插入数据的SQL语句,所有这部分我们换种方法来实现插入数据,其实是拷贝其他表的数据
实例1:假设MYTABLE表不存在,我们可以使用下面的方法来拷贝其他表的结构和数据(因为我们用到的是相同的表数据,所以我会考虑这个方法,如果你是新的表只能先建表再插入数据)
-- 假设我们的websites 表在MYDATABASE数据库中
CREATE TABLE MYTABLE SELECT * FROM MYDATABASE.WEBSITES;
实例2:我们需要表MYTABLE已经存在,那么上面这个表已经建立好了,那么我们可以利用INSERT INTO SELECT语句直接插入数据(这里也是拷贝websites中的数据)
INSERT INTO MYTABLE SELECT * FROM MYDATABASE.WEBSITES;
实例3:插入某一列数据
-- 只插入某一列数据
INSERT INTO MYTABLE(NAME)
SELECT NAME FROM MYDATABASE.WEBSITES;
2.4 LIMIT
说明:返回记录行,上面的SQL执行完后我们会生成下面的数据表
# ID, NAME, URL, ALEXA, COUNTRY
'1', 'Google', 'https://www.google.cm/', '1', 'USA'
'2', '淘宝', 'https://www.taobao.com/', '13', 'CN'
'3', '菜鸟教程', 'http://www.runoob.com/', '5000', 'USA'
'4', '微博', 'http://weibo.com/', '20', 'CN'
'5', 'Facebook', 'https://www.facebook.com/', '3', 'USA'
'6', '百度', 'http://www.baidu.com', '22', 'ZG'
实例1:
-- 获取前3行数据 2 SELECT * FROM MYTABLE LIMIT 3;
-- 获取3,4,5行数据
SELECT * FROM MYTABLE LIMIT 2,3;
2.5 BETWEEN AND
说明:配合WHERE使用的查询条件语句,下面是3种实现获取1到3行数据的方法,但是总的来说实例1比较方便,有逻辑性,且简单易于理解
实例:
-- 获取1到3行的数据
SELECT * FROM MYTABLE WHERE ID BETWEEN 1 AND 3;
实例2:
-- 获取1到3行数据还可以用WHERE IN 来实现
SELECT * FROM MYTABLE WHERE ID IN (1,2,3);
实例3:
-- 获取1到3行数据另一种实现
SELECT * FROM MYTABLE WHERE ID < 4;
2.6 AS 操作符
说明:给列,表起别名
实例1:
-- 对列起别名
SELECT NAME AS '名字', URL AS '网址' FROM MYTABLE;
实例2:
-- 合并2个列,起别名 需要CONCAT关键字
SELECT NAME AS '名字', CONCAT(URL,COUNTRY) AS '网站国家' FROM MYTABLE;
实例3:
-- 对表起别名,可以用别名来访问字段元素
SELECT M.ID,M.NAME,M.COUNTRY FROOM MYTABLE AS M;
2.7 JOIN
说明:连接两个表,分左连接,右连接和全连接,这里我们还需要另一个表,假设表为ACCESS_LOG,结构如下:
# aid, site_id, count, date
'1', '1', '45', '2016-05-10'
'2', '3', '100', '2016-05-13'
'3', '1', '230', '2016-05-14'
'4', '2', '10', '2016-05-14'
'5', '5', '205', '2016-05-14'
'6', '4', '13', '2016-05-15'
'7', '3', '220', '2016-05-15'
'8', '5', '545', '2016-05-16'
'9', '3', '201', '2016-05-17'
实例1:
-- INNER JOIN 这里我们把MYTABLE看作左表ACCESS_LOG为右表,下面的sql语句会返回满足条件的行,可以想象成集合中两个集合的交集
SELECT M.*,A.SITE_ID FROM MYTABLE AS M
INNER JOIN ACCESS_LOG AS A
ON M.ID = A.SITE_ID
ORDER BY M.ID;
实例2:
-- 左连接,会返回所有左表的行,如果没有匹配也会返回
SELECT M.* FROM MYTABLE AS M
LEFT JOIN ACCESS_LOG AS A
ON M.ID = A.SITE_ID
ORDER BY M.ID;
实例3:
-- 右连接,返回满足条件的所有右表的行
SELECT * FROM MYTABLE AS M
RIGHT JOIN ACCESS_LOG AS A
ON M.ID = A.SITE_ID
ORDER BY A.SITE_ID;
实例4:
--全连接
SELECT M.name, A.count, A.date
FROM MYTABLE AS M
FULL OUTER JOIN access_log
ON M.id=A.site_id
ORDER BY A.count DESC;
2.8 UNION
说明:操作符用于合并两个或多个 SELECT 语句的结果集。注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
假设存在表MYSOFTW
# id, soft_name, url, country
'1', 'QQ APP', 'http://im.qq.com/', 'CN'
'2', '微博 APP', 'http://weibo.com/', 'CN'
'3', '淘宝 APP', 'https://www.taobao.com/', 'CN'
实例1:
-- 筛选全部的国家,不包括重复的数据
SELECT M.COUNTRY FROM MYTABLE AS M
UNION
SELECT W.COUNTRY FROM MYSOFTW AS W;
实例2:
-- 查询国家为“cn”的所有网站和软件
SELECT M.URL ,W.COUNTRY FROM MYTABLE AS W
WHERE M.COUNTRY = 'CN'
UNION
SELECT S.APP_NAME,A.COUNTRY FROM MYSOFTW AS S
WHERE S.COUNTRY = 'CN';
总结
今天的内容有点多,但是感觉还是挺简单的,俗话说孰能生巧,多做多写多练,前面所有的SQL语句都比较简单化,因为没有什么实际意义,只是为了学习,工作当中的SQL语句都比较复杂,一个复杂的SQL语句都是简单的几个语句结合在一起的,只要用心梳理思路都不在话下。
希望这篇文章能够帮助到大家,喜欢的小伙伴可以点赞收藏评论加关注哟,当然啦我也给大家准备有关数据库的教学视频,有需要的小伙伴可以私信关键字“资料”领取哟。
边栏推荐
- LeetCode:剑指 Offer 04. 二维数组中的查找
- LeetCode:673. 最长递增子序列的个数
- [OC-Foundation框架]---【集合数组】
- Intel Distiller工具包-量化实现3
- Sublime text using ctrl+b to run another program without closing other runs
- LeetCode:221. Largest Square
- 704 binary search
- Booking of tourism products in Gansu quadrupled: "green horse" became popular, and one room of B & B around Gansu museum was hard to find
- Leetcode: Sword finger offer 42 Maximum sum of continuous subarrays
- Using C language to complete a simple calculator (function pointer array and callback function)
猜你喜欢
LeetCode:236. 二叉树的最近公共祖先
CUDA implementation of self defined convolution attention operator
LeetCode:498. Diagonal traversal
Computer cleaning, deleted system files
【嵌入式】Cortex M4F DSP库
Light of domestic games destroyed by cracking
Mongodb installation and basic operation
[OC-Foundation框架]---【集合数组】
Mise en œuvre de la quantification post - formation du bminf
[embedded] print log using JLINK RTT
随机推荐
BN折叠及其量化
LeetCode:498. Diagonal traversal
Niuke winter vacation training 6 maze 2
LeetCode:剑指 Offer 48. 最长不含重复字符的子字符串
KDD 2022 paper collection (under continuous update)
Bitwise logical operator
[OC]-<UI入门>--常用控件-提示对话框 And 等待提示器(圈)
What is the role of automated testing frameworks? Shanghai professional third-party software testing company Amway
UML圖記憶技巧
CUDA实现focal_loss
Show slave status \ read in G_ Master_ Log_ POS and relay_ Log_ The (size) relationship of POS
What are the common processes of software stress testing? Professional software test reports issued by companies to share
Revit 二次开发 HOF 方式调用transaction
Current situation and trend of character animation
LeetCode:34. Find the first and last positions of elements in a sorted array
LeetCode:836. Rectangle overlap
BMINF的后训练量化实现
Navicat Premium 创建MySql 创建存储过程
[embedded] cortex m4f DSP Library
Using label template to solve the problem of malicious input by users