MySQL笔记

这篇博客是作者复习MySQL后的笔记,涵盖了数据库操作、表操作、数据类型、CRUD、函数、多表查询等内容,包括创建数据库、修改表结构、数据类型介绍、SQL基本操作以及各种函数的使用等,适合初学者参考。
摘要由CSDN通过智能技术生成

花一周时间跟着老韩把MySQL复习了一遍,收获颇丰,手敲了1.9万笔记,希望大家共勉。

老韩B站视频教程链接:【韩顺平讲MySQL】零基础一周学会MySQL -sql mysql教程 mysql视频 mysql入门_哔哩哔哩_bilibili

笔记pdf文件链接:https://pan.baidu.com/s/1Ar74BQcQo2Dg9AzKAGgEsA 
提取码:jbnf

目录

1、操作数据库

2、操作表

3、Mysql数据类型(列类型)

4、CRUD

4.1、insert(C)

4.2、update(U)

4.3、delete(D)

4.4、select(R)

4.4.1、单表查询

4.4.2、单表查询--加强

5、MySQL函数

5.1、order by

5.2、统计函数

5.3、分组统计 group by

5.4、字符串函数

5.5、数学相关函数

5.6、时间日期相关函数

5.7、加密和系统函数

5.8、流程控制函数

6、多表查询✳

6.1、简单多表查询

6.2、自连接

6.3、子查询

7、表复制和去重

8、合并查询

9、表的外连接

10、约束

11、自增长

12、MySQL索引

13、MySQL事务

14、mysql表类型和存储引擎

15、视图

16、MySQL管理


1、操作数据库

1、CHARACTER SET:指定数据库字符集,默认utf8

2、COLLATE:指定字符集校对规则

​ utf8_bin(区分大小写)

​ utf8_general_ci(不区分大小写)

3、创建数据库

​ (1)CREATE DATABASE 数据库名称

​ (2)CREATE DATABASE 数据库名称 CHARACTER SET utf8

​ (3)CREATE DATABASE 数据库名称 CHARACTER SET utf8 COLLATE utf8_bin

4、查看当前服务器所有数据库:SHOW DATABASES

5、查看之前创建的数据库信息:SHOW CREATE DATABASE 数据库名称

​ 在创建数据库或者表的时候为了规避关键字,可使用反引号解决

6、删除数据库:DROP DATABASE 数据库名称

7、备份数据库:mysqldump -u 用户名 -p -B 数据库1 ... 数据库n > 文件名.sql

​ 注意:(1)在DOS执行

​ (2)> 后面的sql文件前,可以写路径

8、备份数据库的表:mysqldump -u 用户名 -p 数据库 表1 ... 表n > 文件名.sql

9、恢复数据库:(1)source 路径+文件名.sql(在Mysql命令行中执行)

​ (2)把.sql文件的内容放到查询编辑器中执行一遍

2、操作表

1、操作表之前,首先要use数据库

2、创建表:

CREATE TALBE `表名` (
        id INT,
        `name` VARCHAR(255),
        `password` VARCHAR(255),
        `birthday` VARCHAR(255),
        CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB
);

3、修改表名:rename table 旧表名 to 新表名;

4、修改表字符集:alter table 表名 character set 字符集;

5、查看表结构:desc 表名; (可以查看表的列)

6、添加sex 列:

ALTER TABLE user 
            ADD sex VARCHAR(32)NOT NULL DEFAULT  ''
            AFTER  NAME;

​ 解释:在user中,name列的后面新增一个叫做sex的列

7、修改name 列:

ALTER TABLE user 
        MODIFY name VARCHAR(60)NOT NULL DEFAULT '';

8、修改列名name为user_name:

ALTER TABLE user 
        CHANGE name user_name VARCHAR(64) NOT NULL DEFAULT '';

9、删除sex列:

ALTER TABLE user 
        DROP sex;       

10、删除表

DROP TABLE 表名;

3、Mysql数据类型(列类型)

1、图示

 

2、如果指定unsinged,则就是无符号(数据类型不能有负数)

3、DECIMAL[M,D]:

​ M:小数位数,最大65,被省略默认是10,

​ D:整数位数,最大30,被省略默认是0

4、CRUD

CREATE TALBE `goods` (
        id INT,
        `good_name` VARCHAR(10),
        `price` DOUBLE;
)

4.1、insert(C)

INSERT INTO `goods` (id,goods_name,price)
        VALUE(10,'小米',2000);
INSERT INTO `goods` (id,goods_name,price)
        VALUE(20,'iphone',6000);

4.2、update(U)

(1)将goods表中所有price字段值都改为5000
UPDATE goods SET price = 5000;
​
(2)将小米的价格改为5000
UPDATE goods SET price = 5000
            WHERE goods_name = '小米'
            
(3)将iphone的价格在原有基础上增加1000
UPDATE goods SET price = price + 1000
            WHERE goods_name = 'iphone'
            

4.3、delete(D)

(1)删除表
DELETE FROM goods
​
(2)删除小米的记录
DELETE FROM goods
        WHERE goods_name = '小米';

4.4、select(R)

4.4.1、单表查询

新建一个学生表

CREATE TABLE student(
    id INT NOT NULL DEFAULT 1,
    NAME VARCHAR(20) NOT NULL DEFAULT '',
    Chinese FLOAT NOT NULL DEFAULT 0.0,
    English FLOAT NOT NULL DEFAULT 0.0,
    math FLOAT NOT NULL DEFAULT 0.0
);

添加数据

INSERT INTO student(id,NAME,Chinese,English,math) VALUES(1,'刘备',10,10,10);
INSERT INTO student(id,NAME,Chinese,English,math) VALUES(2,'张飞',10,10,10);
INSERT INTO student(id,NAME,Chinese,English,math) VALUES(3,'关羽',10,10,10);
INSERT INTO student(id,NAME,Chinese,English,math) VALUES(4,'宋江',10,10,10);
INSERT INTO student(id,NAME,Chinese,English,math) VALUES(5,'武松',10,10,10);
INSERT INTO student(id,NAME,Chinese,English,math) VALUES(6,'老虎',90,90,90);
INSERT INTO student(id,NAME,Chinese,English,math) VALUES(7,'赵云',90,94,99);
(1)查询student表中所有信息
SELECT * FROM student;
(2)查询表中学生的姓名和对应的英语成绩
SELECT `name`,English FROM student;
(3)过滤表中的重复信息 distinct
SELECT DISTINCT English FROM student;
(4)统计每个学生的总分
SELECT `name`,(Chinese+English+math) From student;
(5)给所有学生总分加10分
SELECT `name`,(Chinese+English+math+10) From student;
(6)取别名表示总分
SELECT `name`,(Chinese+English+math) AS total_sorce From student;
(7)查询赵云的成绩
SELECT * FROM student WHERE `NAME` = '赵云'
(8)查询英语成绩大于80分的同学
SELECT * FROM student WHERE English > 80;
(9)查询总分大于200的同学
SELECT * FROM student WHERE (Chinese+English+math) > 200;
(10)查询数学大于10分并且(and)英语大于50分的同学
SELECT * FROM student WHERE math > 10 AND English > 50;     
(10)查询英语成绩大于语文成绩的同学
SELECT * FROM student WHERE English > Chinese;
(11)查询总分大于200并且数学成绩大于语文成绩的姓赵的同学
SELECT * FROM student WHERE (Chinese+English+math) > 200 
                    AND math > Chinese 
                    AND `name` LIKE '赵%';
(12)查询英语分数在80-100之间的同学
SELECT * FROM student WHERE English > 80 and English < 100;
SELECT * FROM student WHERE English BETWEEN 80 and 100;
注:BETWEEN...ADN...是闭区间的
(13)查询数学分为10,90的学生
SELECT * FROM student WHERE math = 10 OR math = 90;
SELECT * FROM student WHERE math IN(10,90);
(14)查询所有姓刘学生的成绩
SELECT * FROM student WHERE `name` LIKE '刘%'
(15)查询数学>80,语文>80的学生成绩
SELECT * FROM student WHERE math > 80 AND Chinese > 80;

4.4.2、单表查询--加强

(本节使用到5.3节的表)

(1)where子句
SELECT * FROM emp WHERE hiredate > '1991-05-01';
(2)like 模糊查询 %表示0-n个任意字符 _表示单个任意字符
SELECT ename,sal FROM emp WHERE ename LIKE '_S%'
解释:在emp表中查询名字第二个字母是S的人的薪水
(3)order by
SELECT * FROM emp ORDER BY deptno ASC , sal DESC;
(4)【重点】分页查询 SELECT ... LIMIT start,row(start 从0开始计算)
SELECT * FROM emp ORDER BY empno LIMIT 0,3;(第一页,每页三条信息)
SELECT * FROM emp ORDER BY empno LIMIT 3,3;(第二页)
SELECT * FROM emp ORDER BY empno LIMIT 6,3;(第三页)
推导公式 SELECT ... LIMIT 页面记录数*(页数-1),每页记录数  
(5)如果select语句中同时含有group by,having,limit,order by,
    那他们的排列顺序是group by > having > order by > limit

5、MySQL函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sout快乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值