MiddleWare ❀ MySQL基础概述
Posted 无糖可乐没有灵魂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MiddleWare ❀ MySQL基础概述相关的知识,希望对你有一定的参考价值。
文章目录
mysql基础
1、SQL语法与分类
- DDL:数据定义语言,定义数据库对象(数据库、表、字段);
- DML:数据操作语言,对数据库表中的数据进行增删改;
- DQL:数据查询语言,查询数据库中表的数据;
- DCL:数据控制语言,创建数据库用户、控制访问权限。
1.1 DDL 数据定义语言
DDL:数据定义语言,定义数据库对象(数据库、表、字段)
1.1.1 库操作
1.1.1.1 查询
# 查询所有数据库
SHOW DATABASES;
# 查询当前数据库
SELECT DATABASE();
1.1.1.2 创建
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
1.1.1.3 删除
DROP DATABASE [IF EXISTS] 数据库名;
1.1.1.4 使用
USE 数据库名;
1.1.2 表+字段操作
1.1.2.1 查询
- 查询当前数据库所有表
SHOW TABLES;
- 查询表结构
DESC 表名;
- 查询指定表的创建语句
SHOW CREATE TABLE 表名;
1.1.2.2 创建
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段2注释],
字段3 字段3类型 [COMMENT 字段3注释],
...
字段n 字段n类型 [COMMENT 字段n注释]
) [COMMENT 表注释];
# [...]为可选参数,最后一个自动后面不需要添加逗号
数据类型
MySQL中的数据类型很多,主要分为三类:数值类型、字符串类型、日期时间类型。
-
数值类型
-
字符串类型
-
日期时间类型
1.1.2.3 修改
- 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
- 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
- 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
- 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
1.1.2.4 删除
- 删除表
DROP TABLE [IF EXISTS] 表名;
- 删除指定表,并重新创建
TRUNCATE TABLE 表名;
1.1.3 操作案例
# 创建一个test数据库
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
# 进入该数据库
mysql> use test;
Database changed
# 创建一张表,名称为aaa
mysql> create table aaa(
id int comment 'id',
name varchar(50) comment 'name',
age int comment 'age',
gender varchar(1) comment 'gender'
);
Query OK, 0 rows affected (0.08 sec)
# 查看表
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| aaa |
+----------------+
1 row in set (0.00 sec)
# 查看表字段
mysql> desc aaa;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| age | int | YES | | NULL | |
| gender | varchar(1) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
# 查看建表语句
mysql> show create table aaa;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| aaa | CREATE TABLE `aaa` (
`id` int DEFAULT NULL COMMENT 'id',
`name` varchar(50) DEFAULT NULL COMMENT 'name',
`age` int DEFAULT NULL COMMENT 'age',
`gender` varchar(1) DEFAULT NULL COMMENT 'gender'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
# 在表aaa中添加一个名称为number的新字段
mysql> alter table aaa add number int comment 'number';
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc aaa;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| age | int | YES | | NULL | |
| gender | varchar(1) | YES | | NULL | |
| number | int | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
# 修改name字段的数据类型
mysql> alter table aaa modify name varchar(30);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc aaa;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(30) | YES | | NULL | |
| age | int | YES | | NULL | |
| gender | varchar(1) | YES | | NULL | |
| number | int | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
# 修改number字段的名称和类型
mysql> alter table aaa change number numb varchar(10) comment 'change';
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc aaa;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(30) | YES | | NULL | |
| age | int | YES | | NULL | |
| gender | varchar(1) | YES | | NULL | |
| numb | varchar(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
# 修改表名
mysql> alter table aaa rename to bbb;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| bbb |
+----------------+
1 row in set (0.01 sec)
# 删除表
mysql> drop table if exists bbb;
Query OK, 0 rows affected (0.03 sec)
mysql> show tables;
Empty set (0.00 sec)
1.2 DML 数据操作语言
DML:数据操作语言,对数据库表中的数据进行增删改;
1.2.1 数据操作
1.2.1.1 添加 INSERT
- 给指定字段添加数据
INSERT INTO 表名(字段1名,字段名2,...) VALUES(值1,值2,...);
# 指定字段的顺序与值的顺序一一对应,字段1-值1,字段2-值2
# 字符串和日期时间类型数据需要带引号
# 需要注意插入数据的大小需要符合字段类型要求
- 给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
- 批量添加数据
# 批量添加指定字段数据
INSERT INTO 表名(字段1名,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),;
# 批量添加全部字段数据
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...);
1.2.1.2 修改 UPDATE
UPDATE 表名 SET 字段名1=值1,字段名2=值2,... [WHERE 条件];
# 条件为非必需项,条件不存在则代表整张表
1.2.1.3 删除 DELETE
DELETE FROM 表名 [WHERE 条件];
# 条件为非必需项,条件不存在则代表整张表
# DELETE不可以删除表中的某个字段,可以使用UPDATE替换数据为NULL
1.2.2 操作案例
# 创建表
mysql> create table aaa(
id int comment 'id',
number varchar(10) comment 'number',
name varchar(10) comment 'name',
gender char(1) comment 'gender',
age tinyint unsigned comment 'age',
idcard char(18) comment 'idcard',
date date comment 'date'
);
Query OK, 0 rows affected (0.06 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| aaa |
+----------------+
1 row in set (0.00 sec)
# 添加数据
mysql> insert into aaa values (1,1,'a1','m',18,'111111111111111111','2022-09-15');
Query OK, 1 row affected (0.01 sec)
mysql> select * from aaa;
+------+--------+------+--------+------+--------------------+------------+
| id | number | name | gender | age | idcard | date |
+------+--------+------+--------+------+--------------------+------------+
| 1 | 1 | a1 | m | 18 | 111111111111111111 | 2022-09-15 |
+------+--------+------+--------+------+--------------------+------------+
1 row in set (0.00 sec)
# 某一行的单个字段修改
mysql> update aaa set name = 'b1' where id = 2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from aaa;
+------+--------+------+--------+------+--------------------+------------+
| id | number | name | gender | age | idcard | date |
+------+--------+------+--------+------+--------------------+------------+
| 1 | 1 | a1 | m | 18 | 111111111111111111 | 2022-09-15 |
| 2 | 2 | b1 | w | 28 | 111111111111111112 | 2022-09-15 |
+------+--------+------+--------+------+--------------------+------------+
2 rows in set (0.00 sec)
# 某一行的多个字段修改
mysql> update aaa set name = 'a2',gender = 'w' where id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from aaa;
+------+--------+------+--------+------+--------------------+------------+
| id | number | name | gender | age | idcard | date |
+------+--------+------+--------+------+--------------------+------------+
| 1 | 1 | a2 | w | 18 | 111111111111111111 | 2022-09-15 |
| 2 | 2 | b1 | w | 28 | 111111111111111112 | 2022-09-15 |
+------+--------+------+--------+------+--------------------+------------+
2 rows in set (0.00 sec)
# 所有行的某个字段修改
mysql> update aaa set date = '2022-01-01';
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select * from aaa;
+------+--------+------+--------+------+--------------------+------------+
| id | number | name | gender | age | idcard | date |
+------+--------+------+--------+------+--------------------+------------+
| 1 | 1 | a2 | w | 18 | 111111111111111111 | 2022-01-01 |
| 2 | 2 | b1 | w | 28 | 111111111111111112 | 2022-01-01 |
+------+--------+------+--------+------+--------------------+------------+
2 rows in set (0.00 sec)
# 所有行的多个字段修改
mysql> update aaa set gender = 'm',date = '2022-01-02';
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select * from aaa;
+------+--------+------+--------+------+--------------------+------------+
| id | number | name | gender | age | idcard | date |
+------+--------+------+--------+------+--------------------+------------+
| 1 | 1 | a2 | m MiddleWare ❀ Zookeeper基础概述