MySQL常用知识点、函数汇总

MySQL基础教程:知识点汇总_mysql知识点梳理

一文学会使用MYSQL数据库,MySQL常用操作

MySQL数据库表的相关操作

MySQL数据库的基本查询

MySQL数据库的高级查询_mysql高级查询语句

MySQL的基本操作:增、删、改

MySQL基本函数的使用

MySQL数据库事务机制、文件的导入导出

文章目录

  • 1. MySQL简介
  • 2.MySQL操作数据库
    • 2.1 MySQL创建数据库
    • 2.2 MySQL查看、选择数据库
    • 2.3 MySQL修改数据库
    • 2.4 MySQL删除数据库
  • 3. MySQL操作数据表
    • 3.1 MySQL创建表
    • 3.2 MySQL复制表结构
    • 3.3 MySQL查看表
    • 3.4 MySQL删除表
    • 3.5 MySQL修改表名
    • 3.6 MySQL添加列
    • 3.7 MySQL修改列名称
    • 3.8 MySQL删除列
    • 3.9 MySQL插入数据
    • 3.10 MySQL更改数据
    • 3.11 MySQL删除数据
    • 3.12 MySQL简单查询
    • 3.13 MySQL条件查询
    • 3.14 MySQL模糊查询
  • 4. MySQL单表查询
    • 4.1 MySQL单列排序
    • 4.2 MySQL组合排序
    • 4.3 MySQL聚合函数
    • 4.4 MySQL分组
    • 4.5 MySQLlimit关键字

1. MySQL简介

数据库(DataBase) 是按照数据结构来组织、存储和管理数据的仓库。
数据库是一个数据的集合。
其本质是一个文件系统,以文件的方式,将数据保存在电脑上。

Mysql的数据类型:

2.MySQL操作数据库

2.1 MySQL创建数据库

-- 方式1 直接指定数据库名进行创建
CREATE DATABASE db1;/*
方式2 指定数据库名称,指定数据库的字符集
一般都指定为 utf8
*/
CREATE DATABASE db1 CHARACTER SET utf8;

2.2 MySQL查看、选择数据库

-- 切换数据库 从db1 切换到 db1_1
USE db1_1;
-- 查看当前正在使用的数据库
SELECT DATABASE();
-- 查看Mysql中有哪些数据库
SHOW DATABASES;
-- 查看一个数据库的定义信息
SHOW CREATE DATABASE db1_1;

2.3 MySQL修改数据库

-- 将数据库db1 的字符集 修改为 utf8
ALTER DATABASE db1 CHARACTER SET utf8;
-- 查看当前数据库的基本信息,发现编码已更改
SHOW CREATE DATABASE db1;

2.4 MySQL删除数据库

-- 删除某个数据库
DROP DATABASE db1_1;

3. MySQL操作数据表

3.1 MySQL创建表

格式:

CREATE TABLE 表名(字段名称1 字段类型(长度),字段名称2 字段类型 注意 最后一列不要加逗号
);

示例:

-- 创建测试表
CREATE TABLE test1(tid INT,tdate DATE
);

3.2 MySQL复制表结构

-- 创建一个表结构与 db1 相同的 db2 表
CREATE TABLE db2 LIKE db1;
-- 查看表结构
DESC db2;

3.3 MySQL查看表

-- 查看当前数据库中的所有表名
SHOW TABLES;
-- 显示当前数据表的结构
DESC category;
-- 查看创建表的SQL语句
SHOW CREATE TABLE category;

3.4 MySQL删除表

-- 直接删除 db1 表
DROP TABLE db1;
-- 先判断 再删除db2表
DROP TABLE IF EXISTS db2;

3.5 MySQL修改表名

-- rename table 旧表名 to 新表名;
RENAME TABLE category TO category1;

3.6 MySQL添加列

-- alter table 表名 add 字段名称 字段类型
# 为分类表添加一个新的字段为 分类描述 cdesc varchar(20)
ALTER TABLE category ADD cdesc VARCHAR(20);

3.7 MySQL修改列名称

-- alter table 表名 change 旧列名 新列名 类型(长度);
ALTER TABLE category CHANGE cdesc description VARCHAR(30);

3.8 MySQL删除列

-- alter table 表名 drop 列名;
ALTER TABLE category DROP description;

3.9 MySQL插入数据

-- insert into 表名 (字段名1,字段名2...) values(字段值1,字段值2...);
-- 方式1: 插入全部字段, 将所有字段名都写出来
INSERT INTO student (sid,sname,age,sex,address) VALUES(1,'孙悟
空',20,'男','花果山');
-- 方式2: 插入全部字段,不写字段名
INSERT INTO student VALUES(2,'孙悟饭',10,'男','地球');
-- 方式3:插入指定字段的值
INSERT INTO category (cname) VALUES('白骨精');

注意:

  • 值与字段必须要对应,个数相同&数据类型相同
  • 值的数据大小,必须在字段指定的长度范围内
  • varchar char date类型的值必须使用单引号包裹。
  • 如果要插入空值,可以忽略不写,或者插入null
  • 如果插入指定字段的值,必须要上写列名

3.10 MySQL更改数据

-- update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值 ]
# 示例:
-- 不带条件修改,将所有的性别改为女(慎用!!)
UPDATE student SET sex = '女';
-- 带条件的修改,将sid 为3的学生,性别改为男
UPDATE student SET sex = '男' WHERE sid = 3;
-- 一次修改多个列, 将sid为 2 的学员,年龄改为 20,地址改为 北京
UPDATE student SET age = 20,address = '北京' WHERE sid = 2;

3.11 MySQL删除数据

  • 删除所有数据
-- delete from 表名
DELETE FROM student;
  • 指定条件 删除数据
-- delete from 表名 [where 字段名 = 值]
DELETE FROM student WHERE sid = 1;

删除表中的所有数据,有两种做法
①delete from 表名; 不推荐. 有多少条记录 就执行多少次删除操作. 效率低
②truncate table 表名: 推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高当一个表中条数非常多,又要做删除动作的时候,如果用delete会很慢,那我们可以使用truncate

truncate table student;

3.12 MySQL简单查询

-- select 列名 from 表名
SELECT * FROM emp; -- 使用 * 表示所有列-- 查询emp表中的所有记录,仅显示id和name字段
SELECT eid,ename FROM emp;-- 将所有的员工信息查询出来,并将列名改为中文
# 使用 AS关键字,为列起别名
SELECTeid AS '编号',ename AS '姓名' ,sex AS '性别',salary AS '薪资',hire_date '入职时间', -- AS 可以省略dept_name '部门名称'
FROM emp;-- 使用distinct 关键字,去掉重复部门信息
SELECT DISTINCT dept_name FROM emp;-- 运算查询
SELECT ename , salary + 1000 FROM emp;

3.13 MySQL条件查询

# 查询员工姓名为黄蓉的员工信息
SELECT * FROM emp WHERE ename = '黄蓉';# 查询薪水价格为5000的员工信息
SELECT * FROM emp WHERE salary = 5000;# 查询薪水价格不是5000的所有员工信息
SELECT * FROM emp WHERE salary != 5000;
SELECT * FROM emp WHERE salary <> 5000;# 查询薪水价格大于6000元的所有员工信息
SELECT * FROM emp WHERE salary > 6000;# 查询薪水价格在5000到10000之间所有员工信息
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;# 查询薪水价格是3600或7200或者20000的所有员工信息
-- 方式1: or
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
-- 方式2: in() 匹配括号中指定的参数
SELECT * FROM emp WHERE salary IN(3600,7200,20000);

3.14 MySQL模糊查询

% 表示匹配任意多个字符串,
_ 表示匹配 一个字符

# 查询含有'精'字的所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';# 查询以'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';# 查询没有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NULL;
-- SELECT * FROM emp WHERE dept_name = NULL;# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;

4. MySQL单表查询

4.1 MySQL单列排序

-- 默认升序排序 ASC
SELECT * FROM emp ORDER BY salary;
-- 降序排序
SELECT * FROM emp ORDER BY salary DESC;

4.2 MySQL组合排序

-- 组合排序
SELECT * FROM emp ORDER BY salary DESC, eid DESC;

4.3 MySQL聚合函数

-- SELECT 聚合函数(字段名) FROM 表名#1 查询员工的总数
-- 统计表中的记录条数 使用 count()
SELECT COUNT(eid) FROM emp; -- 使用某一个字段
SELECT COUNT(*) FROM emp; -- 使用 *
SELECT COUNT(1) FROM emp; -- 使用 1,与 * 效果一样
-- 下面这条SQL 得到的总条数不准确,因为count函数忽略了空值
-- 所以使用时注意不要使用带有null的列进行统计
SELECT COUNT(dept_name) FROM emp;#2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值
-- sum函数求和, max函数求最大, min函数求最小, avg函数求平均值
SELECT
SUM(salary) AS '总薪水',
MAX(salary) AS '最高薪水',
MIN(salary) AS '最低薪水',
AVG(salary) AS '平均薪水'
FROM emp;#3 查询薪水大于4000员工的个数
SELECT COUNT(*) FROM emp WHERE salary > 4000;#4 查询部门为'教学部'的所有员工的个数
SELECT COUNT(*) FROM emp WHERE dept_name = '教学部';#5 查询部门为'市场部'所有员工的平均薪水
SELECT
AVG(salary) AS '市场部平均薪资'
FROM emp
WHERE dept_name = '市场部';

4.4 MySQL分组

-- SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];
-- 按照性别进行分组操作
SELECT * FROM emp GROUP BY sex; -- 注意 这样写没有意义
SELECT sex, AVG(salary) FROM emp GROUP BY sex;#1.查询每个部门的平均薪资
SELECT
dept_name AS '部门名称',
AVG(salary) AS '平均薪资'
FROM emp GROUP BY dept_name;#2.查询每个部门的平均薪资, 部门名称不能为null
SELECT
dept_name AS '部门名称',
AVG(salary) AS '平均薪资'
FROM emp WHERE dept_name IS NOT NULL GROUP BY dept_name;# 查询平均薪资大于6000的部门
-- 需要在分组后再次进行过滤,使用 having
SELECT
dept_name ,
AVG(salary)
FROM emp WHERE dept_name IS NOT NULL GROUP BY dept_name HAVING
AVG(salary) > 6000 ;

4.5 MySQLlimit关键字

作用
limit是限制的意思,用于 限制返回的查询结果的行数 (可以通过limit指定查询多少行数据)
limit 语法是 MySql的方言,用来完成分页

# 查询emp表中的前 5条数据
-- 参数1 起始值,默认是0 , 参数2 要查询的条数
SELECT * FROM emp LIMIT 5;
SELECT * FROM emp LIMIT 0 , 5;# 查询emp表中 从第4条开始,查询6条
-- 起始值默认是从0开始的.
SELECT * FROM emp LIMIT 3 , 6;-- 分页操作 每页显示3条数据
SELECT * FROM emp LIMIT 0,3; -- 第1页
SELECT * FROM emp LIMIT 3,3; -- 第2页 2-1=1 1*3=3
SELECT * FROM emp LIMIT 6,3; -- 第三页-- 分页公式 起始索引 = (当前页 - 1) * 每页条数

MySQL基础教程:知识点汇总相关推荐

  1. MySql基础教程(三)——查询训练

    在MySql两轮基础的学习之后,来一波实战演习... 三张表:学生表,课程表,成绩表. 建表详细信息见 MySql基础教程(一) 转载于:https://www.cnblogs.com/zhouerb ...

  2. php与mysql基础教程第二版_PHP 和 MySQL 基础教程(二)

    本篇文章给大家带来的内容是关于PHP 和 MySQL 基础教程(二),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 数据验证 清理空格 trim 函数将清除数据头尾的空格,它的语法是 ...

  3. php mysql 菜鸟_PHP 和 MySQL 基础教程(四)

    PHP 和 MySQL 基础教程(四) 发布时间:2016-06-17 来源: 点击: 次 MySQL 中的 SQL 对于 MySQL ,第一件你必须牢记的是它的每一行命令都是用分号 (;) 作为结束 ...

  4. C# 零基础入门知识点汇总

    C# 零基础入门 知识点汇总 前言 一,基础语法(1~10) 二,流程控制(11~20) 三,数组相关(21~30) 四,函数介绍(31~40) 五,类和对象(41~50) 六,面向对象(51~60) ...

  5. MySQL基础教程---创建、查询、备份数据库

    文章目录 一.创建数据库 1.指令或者工具创建数据库 2.数据库校对规则 二.查询数据库 三.备份与恢复数据库 1.对数据库的备份 2.对数据表的备份 3.导入一个SQL文件 前期环境基础: MySQ ...

  6. MySQL基础教程——创建数据库并插入数据

    本节将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识.本节实验将创建一个名为 mysql_shiyan 的数据库,其中有两张表 employee和 department. 1 ...

  7. 【MySQL基础教程】事务详细介绍

    前言 本文为 [MySQL基础教程]事务 相关知识,下边将对事务简介,事务操作(包括:未控制事务,控制事务),事务四大特性,并发事务问题,事务隔离级别等进行详尽介绍~

  8. 【MySQL基础教程】DML语句详细介绍

    前言 本文为 [MySQL基础教程]DML语句详细介绍 相关知识,DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增.删.改操作.下 ...

  9. 【MySQL基础教程】DDL语句详细介绍

    前言 本文为 [MySQL基础教程]DDL语句 相关内容进行介绍,下边将对数据库操作(包括:查询所有数据库.查询当前数据库.创建数据库.删除数据库.切换数据库等),表操作(包括:查询创建.数据类型.修 ...

最新文章

  1. 「AI初识境」什么是深度学习成功的开始?参数初始化
  2. hashmap 存的是对象的引用地址_Java互联网架构-面试虐我千百遍HashMap源码真讨厌...
  3. vue学习笔记-02-前端的发展历史浅谈mmvm设计理念
  4. ftk学习记(进度条篇)
  5. Java中的序列化问题
  6. 家用车多少马力才够用?
  7. 解决IE、firefox浏览器下JS的new Date()的值为Invalid Date、NaN-NaN的问题
  8. python读取表格画散点图_python学习笔记-绘制散点图
  9. 微信小程序项目实例——家居团购
  10. 宏碁4752G换CPU和显卡导热硅脂步骤
  11. Windows 身份验证的凭据进程
  12. GSM/CDMA/GPRS介绍
  13. Ubuntu Julia环境安装教程
  14. 小实验:PC9与PC10连通的命令操作
  15. 云开发魔都团长头像制作微信小程序源码/带流量主
  16. TCR历史期刊为何受大家欢迎?
  17. 小红书3大新功能上线,提升笔记转化率和品牌投放效果
  18. tEST 1 for NOIP 2017.9.9.
  19. java visibility_[Java教程]display 与 visibility
  20. 关于电话号码欺骗的一切

热门文章

  1. 三角波的傅里叶变换对_小波变换wavelet transformation
  2. matlab三角波的傅立叶变换,观察三角波和反三角波序列的时域和幅频特性comma;用Nequals;8点FFT...
  3. 32、全国DNS服务器IP地址大全、公共DNS大全
  4. ICLOUD储存空间要升级吗_macOS升级11系统之前的准备工作和注意事项
  5. 使用 图灵验证码识别平台+Python+Selenium,智能识别B站/bilibili的中文验证码,并实现自动登陆
  6. HTML中引入CSS的方式
  7. linux下部署Yii2框架
  8. nginxlocation二级目录
  9. 仿iphone原生短信滑动时惯性效果
  10. 1.3.2 常用内置函数