MySQL基础命令

发布时间:2024年01月12日

1.SQL语句基础

1.1?SQL简介

????????SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及 数据维护的标准语言。使用SQL语句,程序员和数据库管理员可以完成如下的任务

????????改变数据库的结构

????????更改系统的安全设置

????????增加用户对数据库或表的许可权限

????????在数据库中检索需要的信息

????????对数据库的信息进行更新

1.2 SQL语句分类

MySQL致力于支持全套ANSI/ISO SQL标准。在MySQL数据库中,SQL语句主要可以划分为以下几类

????????DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作。 CREATE、DROP、ALTER、RENAME、 TRUNCATE等

????????DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。 INSERT、DELETE、UPDATE、SELECT等

????????DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全 级别。

? ? ? ? GRANT、REVOKE等

Transaction Control:事务控制

????????COMMIT、ROLLBACK、SAVEPOINT等

1.3 SQL语句的书写规范

????????在数据库系统中,SQL语句不区分大小写(建议用大写) 。

????????????????但字符串常量区分大小写。

????????????????SQL语句可单行或多行书写,以“;”结尾。

????????????????关键词不能跨多行或简写。

????????????????用空格和缩进来提高语句的可读性。

????????????????子句通常位于独立行,便于编辑,提高可读性。

????????????????????????SELECT * FROM tb_table

????????????????注释:

????????????????SQL标准:

????????????????????????//。多行注释

????????????????????????“--” 单行注释

????????????????MySQL注释: “#”????????

2、数据库基本操作

2.1 创建数据库

语法:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...
    
create_option: [DEFAULT] {
    CHARACTER SET [=] charset_name
  | COLLATE [=] collation_name
  | ENCRYPTION [=] {'Y' | 'N'}
}

案例:????????

在window11的终端登陆数据库:

C:\Users\31922>mysql -uroot -p
Enter password: ******

查看此时所有的数据库:

mysql> show databases;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| mysql ? ? ? ? ? ? ?|
| performance_schema |
| sakila ? ? ? ? ? ? |
| sys ? ? ? ? ? ? ? ?|
| world ? ? ? ? ? ? ?|
+--------------------+
6 rows in set (0.00 sec)

创建新的数据库TEATDATABASES并查看:

mysql> CREATE DATABASE TEATDATABASES;
Query OK, 1 row affected (0.01 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database ? ? ? ? ? |
+--------------------+
| information_schema |
| mysql ? ? ? ? ? ? ?|
| performance_schema |
| sakila ? ? ? ? ? ? |
| sys ? ? ? ? ? ? ? ?|
| teatdatabases ? ? ?|
| world ? ? ? ? ? ? ?|
+--------------------+

使用数据库:

mysql> use teatdatabases;?

退出此时所登陆的数据库,登陆新创建的数据库:

mysql> EXIT

C:\Users\31922>mysql -uroot -p teatdatabases

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-u用户名? -p? ?默认使用的数据库
Enter password: ******

查看当前连接的数据库:

mysql> select database();
+---------------+
| database() ? ?|
+---------------+
| teatdatabases |
+---------------+
1 row in set (0.00 sec)

mysql>

扩展:

查看当前连接的数据库

mysql> select database();
+---------------+
| database() ? ?|
+---------------+
| teatdatabases |
+---------------+
1 row in set (0.00 sec)

查看数据库版本

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.35 ? ?|
+-----------+
1 row in set (0.00 sec)

查看当前用户

mysql> select user();
+----------------+
| user() ? ? ? ? |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

查看所有用户:

SELECT User,Host,Password FROM mysql.user;

若此时在Linux中使用MySQL,则可以用system<命令>来查看调用linux中命令:

执行对应系统命令:

SYSTEM <命令>

system cls | clear

system date 等

MySQL自带数据库:

????????Information_schema: 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信 息、字符集信息、分区信息等。(数据字典表)

????????performance_schema: 主要存储数据库服务器的性能参数

????????mysql: 存储了系统的用户权限信息及帮助信息。

????????sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和 performance_schema结合起来,查询出更加令人容易理解的数据

????????test: 系统自动创建的测试数据库,任何用户都可以使用。

2.2?字符集和校对规则

????????字符集是指一系列符号以及符号对应的编码的集合,比如英文字母可以使用 ASCII 编码,中文可以使用 GBK 或者 UTF-8 编码,校对规则则是指一种比较字符的规则,在排序或者比较字符的时候使用。

????????每个字符集都会对应多个校对规则,是一对多的关系,而且每个字符集会有默认的校对规则,当我们在 创建数据库或者表时,如果只指定字符集,则使用字符集对应的默认校对规则。

????????cs 大小写敏感

????????ci 大小写不敏感

????????bin 二进制编码比较

# 查看支持的字符集

mysql> show character set;

解析:

????????Charset 字符集名称

????????Description 字符集描述

????????Default collation 默认校对规则

????????Maxlen 最大长度

# 查看支持的校对规则

mysql> show collation;

解析:

????????Collation 校对规则名称

????????Charset 哪个字符集

????????Id 校对规则编号

????????Default 是否为默认校对规则

????????Compiled 是否系统自带

????????Sortlen 这与对字符集中表示的字符串进行排序所需的内存量有关。

????????Pad_attribute 末尾空格是否参与比较

参考:

????????1、非二进制字符串( CHAR 、 VARCHAR 、 TEXT )比较时,末尾空格的处理跟列的字符序有直接关系

????????2、 MySQL5.7 及之前的版本,排序规则的类型都是 PAD SPACE ,会忽略字符串末尾的空格, LIKE 除外

????????3、 MySQL8 开始,字符序增加了一个参数 Pad_attribute ,该参数的值不同,对字符串末尾空格的处理 方式不同 NO PAD :字符串末尾的空格会和其他字符一样,不会被忽略 PAD SPACE :字符串末尾的空格会被忽略, LIKE 除外

????????4、如上针对的都是非二进制字符串的排序和比较,而不是储存

# 查看默认的字符集和校对规则

mysql> show create database teatdatabases;

create database teatdatabases;) # 创建数据库的命令

utf8和utf8mb4的区别

????????MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的 unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。

????????既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字 符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符,如表情等 等(utf8的缺点)。

????????因此在8.0之后,建议大家使用utf8mb4这种编码。

2.3 修改数据库

语法:

ALTER {DATABASE | SCHEMA} [db_name]
    alter_option ...
alter_option: {
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name
  | [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}
  | READ ONLY [=] {DEFAULT | 0 | 1}
}

案例:

mysql> select database();

+---------------+
| database()    |
+---------------+
| teatdatabases |
+---------------+
1 row in set (0.00 sec)

mysql> show create database ?teatdatabases;?

+---------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| Database      | Create Database
                                                       |
+---------------+-----------------------------------------------------------------------------------------------------------------------------------------+
| teatdatabases | CREATE DATABASE `teatdatabases` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+---------------+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> alter database teatdatabases read only = 1;? ? #? read only=1 只读

Query OK, 1 row affected (0.01 sec)

mysql> show create database teatdatabases;

+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Database ? ? ?| Create Database

? |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| teatdatabases | CREATE DATABASE `teatdatabases` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ /* READ ONLY = 1 */ |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> drop table td_emp1;? ?# 此时我们删除表td_emp1时,会提示(此时是只读模式)

ERROR 3989 (HY000): Schema 'teatdatabases' is in read only mode.

mysql> alter database teatdatabases read only = 0;

Query OK, 1 row affected (0.01 sec)

mysql> drop table tb_emp1;

Query OK,0 rows affected (0.01 sec)

mysql> show tables;? ? ?#,用于显示当前数据库中的所有表格(也称为表)

Empty set (0.02 sec)

3.4 删除数据库

语法:

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

案例:

mysql> drop database testdatabase;? #? 删除数据库 testdatabase

文章来源:https://blog.csdn.net/2302_77035737/article/details/135541661
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。