Mrcdh技术博客 Mrcdh技术博客
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Mrcdh

全栈开发小学生
首页
  • Html5
  • Javascript
  • Nodejs
  • electron
  • Android
  • 微信公众号
  • 框架
  • 其他
  • Mysql
  • PHP
  • Python
  • java
  • Gulp
  • 其它
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Mysql

    • mysql基本使用
      • 登录
        • 本地连接
        • 远程连接
      • 退出
      • SQL
        • 注释
        • 单行注释
        • 多行注释
        • SQL 分类
      • DDL:操作数据库、表
        • 操作数据库
        • 操作表
      • DML:增删改数据表中数据
      • DQL:查询
        • WHERE
        • LIKE 模糊查询
        • 聚合函数
        • COUNT 计算个数
        • MAX 计算最大值
        • MIN 计算最小值
        • SUM 计算和
        • AVG 计算平均值
        • 分组查询
      • 常用关键字及函数
        • DISTINCT:去重
        • IFNULL():空判断返回值
      • 约束
        • 主键约束: primary key
        • 自动增长
        • 非空约束: not null
        • 唯一约束: unique
        • 外键约束: foreign key
        • 级联操作
        • 级联更新
        • 级联删除
    • 总结下mysql8在windows环境下的安装和配置
    • Mysql常用函数
    • Mysql常用语句
  • PHP

  • Python

  • java

  • Go

  • 数据库

  • C#

  • ElasticSearch

  • Git

  • Gulp

  • Microsoft

  • Linux

  • 其它

  • 技术
  • Mysql
mrcdh
2022-02-13
目录

mysql基本使用

# 登录

# 本地连接

mysql -uroot -proot
1

# 远程连接

mysql -h127.0.0.1 -uroot -proot
mysql --host=127.0.0.1 --user=root --password=root
1
2

# 退出

exit
# or
quit
1
2
3

# SQL

sql 语句不区分大小写,建议关键字使用大写。

# 注释

# 单行注释

--和#后面紧跟空格

SHOW DATABASE; -- 查询所有数据库名称
SHOW DATABASE; # 查询所有数据库名称
1
2

# 多行注释

/* 多行注释 */
1

# SQL 分类

  • DDL(Data Definition Language) 数据定义语言。
    • 用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter 等
  • DML(Data Manipulation Language) 数据操作语言。
    • 用来对数据库中表的数据进行增删改。关键字:insert,delete,update 等
  • DQL(Data Query Language) 数据查询语言。
    • 用来查询数据库中表的记录(数据)。关键字:select,where 等
  • DCL(Data Control Language) 数据控制语言。

# DDL:操作数据库、表

# 操作数据库

  • 创建(Create)
    • 创建数据库:create database db_name;
    • 如果数据库不存在则创建:create database if not exists db_name
    • 指定字符集创建数据库:create database db_name character set gbk;
  • 查询(Retrieve)
    • 查询所有数据库的名称:show databases;
    • 查询某个数据库的创建语句(可以查看当前数据库的字符集):show create database db_name;
  • 修改(Update)
    • 修改数据库的字符集:alter database db_name character set utf8;
  • 删除(Delete)
    • 删除数据库:drop database db_name;
    • 如果存在则删除数据库:drop database if exists db_name;
  • 使用数据库
    • 查询当前正在使用的数据库:select database();
    • 使用数据库:use db_name;

# 操作表

  • 创建(Create)

    • create table table_name2 like table_name1;: 复制表,创建table_nam2使其和table_name1一样
    create table table_name(
      column_name data_type,
      column_name data_type,
      ...
      column_name data_type
    );
    create table student(
      id int,
      name varchar(20),
      age int,
      score double(4, 1),
      birthday date,
      create_time timestamp
    );
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    注意:最后一列,不需要加逗号。

    double(4,1)表示最大 4 位数字,包含一个小数,也就是最大值为999.9

  • 查询(Retrieve)

    • 查询某个数据库中所有表的名称:show tables;
    • 查询指定表结构:desc table_name;
  • 修改(Update)

    • 修改表名:alter table table_name rename to new_table_name;
    • 修改表的字符集:alter table table_name character set gbk;
    • 添加一列:alter table table_name add column_name data_type;:
    • 修改列的名称,类型:alter table table_name change column_name new column_name new_data_type;
    • 值修改列的数据类型:alter table table_name modify column_name new_data_type;
    • 删除列:alter table drop column_name;
  • 删除(Delete)

    • 删除表:drop table table_name;
    • 如果存在删除表:drop table if exists table_name;

# DML:增删改数据表中数据

  • 添加数据:

      INSERT INTO table_name(列1, 列2,...) VALUES (列1值, 列2值);
    
    1
  • 删除数据:

      DELETE FROM table_name [WHERE condition];
      TRUNCATE TABLE table_name; -- 截断表,也就是删除表然后创建个一模一样的空表
    
    1
    2
    • 如果不加条件将会删除所有数据
  • 修改数据:

      UPDATE table_name SET 列1 = 值1, 列2 = 值2 [WHERE condition];
    
    1

# DQL:查询

  -- 语法
  SELECT
    字段列表
  FROM
    表名
  WHERE
    条件列表
  GROUP BY
    分组字段
  HAVING
    分组之后的条件限定
  ORDER BY
    排序
  LIMIT
    分页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# WHERE

运算符 描述
age = 16 等于于
age > 16 大于于
age < 16 小于于
age <> 16 不等于于
age >= 16 大于等于
age <= 16 小于等于
age > 5 and age < 7 大于 5 并且小于 7
age > 5 or age < 7> 大于 5 或者小于 7
age BETWEEN 1 and 5 在 1 到 5 之间,有的数据库包含 1 和 5,有的不包含
age NOT BETWEEN 1 and 5 不在 1 到 5 之间
age IN (15, 12) 在列表中
age NOT IN (15, 12) 不在列表中
age IS NULL 是否为 NULL,NULL 不能用=判断
age IS NOT NULL 不为 NULL

# LIKE 模糊查询

占位符:

  • _: 任意单个字符
  • %: 任意多个字符
SELECT * FROM table_name WHERE name LIKE 'mr%'; -- 已mr开头的所有
SELECT * FROM table_name WHERE name LIKE '_c'; -- 第二个字符是c的所有
SELECT * FROM table_name WHERE name LIKE '___'; -- name是3个字符的
1
2
3

注意

NULL 参与的计算机国都为NULL

# 聚合函数

注意

聚合函数的计算,会排除 NULL 值。

# COUNT 计算个数

SELECT COUNT(*) FROM table_name; ---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。
SELECT COUNT(1) FROM table_name;---忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录。
SELECT COUNT(column_name) FROM table_name;---只包括列名指定列,返回指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内。
SELECT COUNT(IFNULL(name, 0)) FROM table_name; --- 只包括指定列,不会忽略NULL
1
2
3
4

# MAX 计算最大值

# MIN 计算最小值

# SUM 计算和

# AVG 计算平均值

# 分组查询

语法:group by 分组字段

注意

  1. 分组之后查询的字段:分组字段、聚合函数

  2. where 在分组之前进行限定,如果条件不满足则不参与分组;having 在分组之后进行限定,如果条件不满足,则不会被查询出来。

  3. where 后不可以进行聚合函数的判断,having 可以。

# 常用关键字及函数

# DISTINCT:去重

SELECT DISTINCT age, name FROM table_name; -- 去除age和name完全一样的
1

# IFNULL():空判断返回值

如果param1为空返回param2,否则返回param1

  -- param1: 可以为表达式,字段等
  IFNULL(param1, params2)
1
2

# 约束

# 主键约束: primary key

主键表示为非空且唯一,一张表只能有一个主键,主键就是表中记录的唯一标识

-- 创建表的时候添加约束
CREATE TABLE stu(
	id INT PRIMARY KEY, -- 给ID添加主键约束
	name VARCHAR(20) NOT NULL -- name为非空
);

-- 删除主键
ALTER TABLE stu DROP PRIMARY KEY;

-- 创建表后添加约束
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
1
2
3
4
5
6
7
8
9
10
11

# 自动增长

如果某一列的值是数值类型的,使用auto_increment可以来完成值的自动增长

-- 创建表的时候添加主键约束并自增长
CREATE TABLE stu(
	id INT PRIMARY KEY AUTO_INCREMENT, -- 给ID添加主键约束
	name VARCHAR(20) NOT NULL -- name为非空
);

-- 删除自动增长
ALTER TABLE stu MODIFY id INT;

-- 添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
1
2
3
4
5
6
7
8
9
10
11

# 非空约束: not null

某一列的值不能为NULL

-- 创建表的时候添加约束
CREATE TABLE stu(
	id INT,
	name VARCHAR(20) NOT NULL -- name为非空
);

-- 删除name的非空约束
ALTER TABLE stu MODIFY name VARCHAR(20);

-- 创建表后添加约束
ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;
1
2
3
4
5
6
7
8
9
10
11

# 唯一约束: unique

某一列的值不能重复

-- 在创建表时创建唯一约束
CREATE TABLE stu(
  id int,
  mobile VARCHAR(20) UNIQUE
)
-- 删除唯一约束
ALTER TABLE stu DROP INDEX mobile;

-- 创建表后添加约束
ALTER TABLE stu MODIFY name VARCHAR(20) UNIQUE;
1
2
3
4
5
6
7
8
9
10

注意

  1. 唯一约束可以有 NULL 值,但只能有一条记录未 NULL;
  2. 唯一约束要以删除索引的方式删除约束;

# 外键约束: foreign key

让表与表产生关系,从而保证数据的正确性

-- 创建表时添加外间
CREATE TABLE stu(
  id INT PRIMARY KEY AUTO_INCREMENT,
  category_id INT, -- 外键列
  CONSTRAINT stu_category_id FOREIGN KEY (category_id) REFERENCES category(id)
  -- stu_category_id: 外键名称
  -- (category_id): 本表中哪列作为外键
  -- category(id): 关联category表中的id列
)

-- 删除外键
ALTER TABLE stu DROP FOREIGN KEY stu_category_id;

-- 在创建表之后添加外键
ALTER TABLE stu ADD CONSTRAINT stu_category_id FOREIGN KEY (category_id) REFERENCES category(id);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

注意

  1. 外键值可以为NULL,但是不能为关联表不存在值

# 级联操作

ALTER TABLE stu ADD CONSTRAINT stu_category_id FOREIGN KEY (category_id) REFERENCES category(id) ON UPDATE CASCADE ON DELETE CASCADE;
1
# 级联更新
ALTER TABLE stu ADD CONSTRAINT stu_category_id FOREIGN KEY (category_id) REFERENCES category(id) ON UPDATE CASCADE;
1
# 级联删除

ALTER TABLE stu ADD CONSTRAINT stu_category_id FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE CASCADE;
1
2
#mysql
上次更新: 2023/09/22, 16:54:32
总结下mysql8在windows环境下的安装和配置

总结下mysql8在windows环境下的安装和配置→

最近更新
01
uniapp常见问题
03-19
02
Vue3项目搭建
12-25
03
使用pnpm的monorepo组织项目
11-01
更多文章>
Theme by Vdoing | Copyright © 2020-2025 Mrcdh | 苏ICP备2020058908号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×