IP地址检测
视频播放器
输入关键词搜索
登录
MariaDB数据库使用教程|Docker版本

MariaDB数据库使用教程|Docker版本

2023-04-19
编程开发

考虑到mariadb容器有可能会被其他容器访问,因此用docker-compose方式启动,在mariadb_default网络中运行,其他容器可主动加入该网络,并用mariadb直接访问

docker-compose.yml

services:
  mariadb:
    container_name: mariadb
    image: mariadb
    restart: always
    volumes:
      - $PWD/volume:/var/lib/mysql
    environment:
      - TZ=Asia/Shanghai
      - MARIADB_ROOT_PASSWORD=<root-password>
    ports:
      - "[出于安全性考虑,不要使用3306端口,选用数字大一点的端口号,不容易被扫描到]:3306"

连接数据库

cd [docker-compose.yml所在目录]
docker compose exec -it mariadb mariadb -u root -p

第一个mariadb是docker-compose.yml文件中定义的服务名,第二个mariadb是容器中的可执行文件

命令

1.创建数据库

// 如果数据库不存在则创建,存在则不创建。
// 创建RUNOOB数据库,并设定编码集为utf8
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • CHARSET 字符集
  • COLLATE 排序规则

列出所有数据库

show databases;

使用数据库

use [数据库名称];

2.创建表

// 语法
CREATE TABLE table_name (column_name column_type);
// 例子
CREATE TABLE IF NOT EXISTS `表名`(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `title` VARCHAR(100) NOT NULL,
   `author` VARCHAR(40) NOT NULL,
   `date` DATE,
   PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. 表名规则,小写字母+下划线
  2. 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  3. AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  4. PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  5. ENGINE 设置存储引擎,CHARSET 设置编码。

列出所有表

show tables;

删除表

DROP TABLE 表名;

查看表结构

desc 表名;

3.插入数据

// 语法
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

4.查询数据

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

查询子句

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
操作符描述实例
=等号,检测两个值是否相等,如果相等返回true(A = B) 返回false
<>, !=不等于,检测两个值是否相等,如果不相等返回true(A != B) 返回 true
>大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true(A > B) 返回false
<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(A < B) 返回 true
>=大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true(A >= B) 返回false
<=小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true(A <= B) 返回 true
  • FROM:指定要从哪些表中检索数据。如果查询涉及多个表,则需要使用JOINs将它们连接在一起。
  • WHERE:过滤要检索的记录,只返回符合条件的记录。
  • GROUP BY:将相同的值分组在一起,以便进行聚合操作(如SUM、AVG、COUNT等)。
  • HAVING:过滤聚合数据,只返回符合条件的数据。
  • WINDOW functions:执行窗口函数,这是一种特殊的聚合函数,可以在结果集的特定窗口中执行计算。
  • SELECT:选择要返回的列,并可以使用聚合函数、表达式、别名等对结果进行转换。
  • DISTINCT:返回唯一的结果,删除重复的行。
  • UNION:将多个查询结果合并为一个结果集。
  • ORDER BY:按指定列对结果进行排序。
  • LIMIT and OFFSET:限制结果集的大小和偏移量。

5.更新数据

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
  • 你可以同时更新一个或多个字段。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以在一个单独表中同时更新数据。

update 语句可用来修改表中的数据, 简单来说基本的使用形式为:

update 表名称 set 列名称=新值 where 更新条件;

以下是在表 students 中的实例:

将 id 为 5 的手机号改为默认的 - : update students settel=default where id=5;

将所有人的年龄增加 1: update students set age=age+1;

将手机号为 13288097888 的姓名改为 "小明", 年龄改为 19: update students setname="小明", age=19 wheretel="13288097888";

UPDATE替换某个字段中的某个字符

当我们需要将字段中的特定字符串批量修改为其他字符串时,可已使用以下操作:

UPDATE table_name SET field=REPLACE(field, 'old-string', 'new-string') 
[WHERE Clause]

// 以下实例将更新 runoob_id 为 3 的runoob_title 字段值的 "C++" 替换为 "Python":
UPDATE runoob_tbl SET runoob_title = REPLACE(runoob_title, 'C++', 'Python') where 
runoob_id = 3;

删除数据

DELETE FROM table_name [WHERE Clause]
  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  • 你可以在 WHERE 子句中指定任何条件
  • 您可以在单个表中一次性删除记录。

delete 语句用于删除表中的数据, 基本用法为:

delete from 表名称 where 删除条件;

以下是在表 students 中的实例:

删除 id 为 3 的行: delete from students where id=3;

删除所有年龄小于 21 岁的数据: delete from students where age<20;

删除表中的所有数据: delete from students;


delete,drop,truncate 都有删除表的作用,区别在于

  1. delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
  2. delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
  3. 执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。
THE END
0/500
暂无评论
📢网站公告
欢迎来到这里
⚙️实用工具
html转pdfmarkdown编辑器
本站推荐:腾讯云服务器仅需2.3折 (点击直达)
用户协议
隐私政策
Build Time: 2025-04-26 11:07:00