当前位置: 首页 > news >正文

MySQL库与表的操作

目录

一、登录并进入数据库

1、登录 

2、USE 命令

检查当前数据库

二、库的操作 

1、创建数据库语法

2、举例演示

3、退出

三、字符集和校对规则

1、字符集(Character Set)

2、校对集(Collation)

总结

3、操作命令

查看系统默认字符集以及校验规则

查看数据库支持的字符集

查看数据库支持的字符集校验规则

校验规则对数据库的影响

查询示例

四、操纵数据库

1、查看当前数据库有哪些表

2、查看当前在哪个数据库

 3、查看数据库

4、修改数据库

实例:修改数据库字符集

五、数据库备份、恢复与连接情况

1、备份

2、还原

3、查看连接情况

六、表的操作

1、创建表

2、插入数据

不指定列名

插入多行数据

使用子查询插入数据

注意事项

3、存储引擎与文件

4、查看表结构

DESC 命令

SELECT * FROM 命令

SHOW CREATE TABLE  

注意事项

5、修改表

添加字段

修改字段

删除字段

更改表的字符集和存储引擎

重命名表

批量重命名

跨数据库重命名

6、删除表


一、登录并进入数据库

1、登录 

mysql 是一个命令行客户端工具,用于与 MySQL 数据库管理系统进行交互。当你需要通过命令行登录到 MySQL 数据库时,可以使用以下格式的命令:

mysql -h [hostname] -P [port] -u [username] -p[password]

这里的参数解释如下:

  • -h [hostname]:指定 MySQL 数据库服务器的主机名或 IP 地址。如果省略此参数,默认值是本地主机 127.0.0.1 或 localhost
  • -P [port]:指定 MySQL 数据库服务器监听的端口号。默认端口号通常是 3306。注意 -P 是大写的 P。
  • -u [username]:指定用于登录数据库的用户名。
  • -p[password]:指定用户的密码。如果直接跟在 -p 后面,则不包含空格,整个字符串会被视为密码;如果 -p 和密码之间有空格,则会提示输入密码。

因此,命令 mysql -h 127.0.0.1 -P 3306 -u root -p 将尝试连接到运行在本地主机上的 MySQL 服务器,使用 root 用户名,并且会提示你输入密码。

示例

假设你想要登录到本地 MySQL 数据库,使用 root 用户,并且你的密码是 mysecretpassword,则可以使用下面的命令:

mysql -h 127.0.0.1 -P 3306 -u root -pmysecretpassword

或者,如果你不想直接在命令行上显示密码,可以这样:

mysql -h 127.0.0.1 -P 3306 -u root -p

然后当执行上述命令后,系统会提示你输入密码:

Enter password:

2、USE 命令

在 MySQL 中,一旦你使用命令行客户端或其他数据库管理工具登录到了 MySQL 服务器,你就可以选择一个具体的数据库来开始执行 SQL 查询。要选择或“进入”一个数据库,你需要使用 USE 命令。

USE 命令的基本语法如下:

USE database_name;

其中 database_name 是你要选择的数据库的名称。执行完这个命令后,你所有的后续 SQL 查询都将在所选的数据库中执行。

示例

假设你有一个名为 mydatabase 的数据库,你可以这样选择它:

USE mydatabase;

如果你成功选择了数据库,MySQL 将不会返回任何输出,只会显示一条消息说 Database changed,表示你当前正在使用的数据库已经被更改。

检查当前数据库

如果你想确认你当前正在使用的数据库是哪一个,可以使用以下命令:

SELECT DATABASE();

这将返回当前数据库的名称,如果没有选择任何数据库,则返回 NULL

注意事项

  • 在选择数据库之前,确保你拥有足够的权限访问该数据库。如果你没有权限,MySQL 将会返回一个错误。
  • 如果你尝试选择一个不存在的数据库,MySQL 也会返回一个错误。在使用 USE 命令之前,你可以先用 SHOW DATABASES; 来列出所有可用的数据库,以确保你拼写正确。

二、库的操作 

在 MySQL 中,创建数据库是一个关键的步骤,它为存储数据提供了基础容器。下面是关于创建数据库的详细解析:

1、创建数据库语法

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...];
  • [IF NOT EXISTS]:这是一个可选部分,用于确保如果数据库已经存在,不会报错。如果没有这个选项,尝试创建已存在的数据库会导致错误。
  • db_name:你打算创建的数据库的名称。
  • create_specification:一系列可选的规范,用于设定数据库的特定属性,包括字符集和校验规则。

create_specification 参数:

  • [DEFAULT] CHARACTER SET charset_name:指定数据库使用的字符集。例如,CHARACTER SET utf8 将数据库的字符集设为 UTF-8。
  • [DEFAULT] COLLATE collation_name:指定数据库字符集的校验规则。例如,COLLATE utf8_general_ci 设定了一个不区分大小写的校验规则。
  • 创建数据库时,你可以选择是否指定字符集和校验规则。如果不指定,MySQL 将使用其默认设置。指定这些参数可以确保你的数据库能够正确处理和存储各种语言的文本数据,并按照预期的方式进行文本比较和排序。这对于国际化的应用尤其重要,可以避免由于字符集或校验规则不匹配导致的问题。

2、举例演示

创建一个默认字符集和校验规则的数据库

CREATE DATABASE db1;
  • 当没有明确指定字符集和校验规则时,MySQL 使用其默认设置,通常是 UTF-8 (utf8) 和 utf8_general_ci

创建一个使用UTF8字符集的数据库

CREATE DATABASE db2 CHARACTER SET utf8;
  • 这条语句显式指定了数据库 db2 使用 UTF-8 字符集,但未指定校验规则,因此会使用默认的 utf8_general_ci

创建一个使用UTF8字符集并带校对规则的数据库

CREATE DATABASE db3 CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 这里不仅指定了 db3 使用 UTF-8 字符集,还明确了校验规则为 utf8_general_ci,这意味着该数据库将不区分大小写地比较字符串。

3、退出

退出 MySQL 命令行客户端有几种方法,你可以根据自己的偏好选择:

  1. 使用 EXIT 命令:

    输入 EXIT 并按 Enter 键,可以直接退出 MySQL 命令行环境。

    mysql> EXIT
    Bye
  2. 使用 QUIT 命令:

    输入 QUIT 并按 Enter 键,同样可以退出 MySQL 命令行环境。

    mysql> QUIT
    Bye
  3. 使用 Ctrl + C:

    连续按两次 Ctrl + C 组合键,可以中断当前正在执行的命令,并退出 MySQL 命令行环境。但通常这种方法用于中断正在执行的查询,而不作为常规的退出方式。

  4. 使用 Ctrl + D:

    在 Unix/Linux 系统中,按一次 Ctrl + D 组合键可以退出 MySQL 命令行环境。

  5. 使用退出命令的缩写:

    你也可以使用 EXITQUIT 命令的缩写 \q\x 来退出。

    mysql> \q
    Bye
    mysql> \x
    Bye

无论你选择哪种方式,MySQL 命令行都会给出 "Bye" 的提示,表明你已经成功退出了命令行环境。在退出之前,任何未提交的事务将会被自动回滚,所以不用担心数据完整性问题。

三、字符集和校对规则

在创建数据库时,确实会涉及到两个与字符编码相关的概念:字符集(Character Set)和校对集(Collation)。这两个概念对确保数据正确存储和处理至关重要,尤其是在处理多语言或多字节字符时。 

1、字符集(Character Set)

字符集定义了一组字符及其对应的二进制编码,用于表示文本数据。不同的字符集可以支持不同的字符范围和语言,例如 ASCII、UTF-8、GBK、BIG5 等。在数据库中,字符集决定了如何在内部存储和解释文本数据。

当创建数据库或表时,可以选择一个字符集作为存储数据的基础编码。例如,UTF-8 是一种常见的多字节编码,能够支持全球大多数语言的字符,因此在国际化应用中非常受欢迎。

2、校对集(Collation)

校对集是字符集的一个子集,它规定了字符集中的字符如何进行比较和排序。校对集不仅决定了字符的排序规则,还可能影响字符的大小写敏感性、重音符号处理、以及特殊字符的识别等。例如,对于相同的 UTF-8 字符集,可以有 utf8_general_ciutf8_unicode_ciutf8_bin 等不同的校对集,它们在字符比较和排序时的行为各不相同。

  • utf8_general_ci:大小写不敏感,对重音符号不敏感。
  • utf8_unicode_ci:大小写不敏感,但对重音符号敏感。
  • utf8_bin:完全按照字节进行比较,大小写敏感,适用于二进制数据比较。

选择正确的字符集和校对集非常重要,原因如下:

  • 数据完整性:确保所有字符都能正确存储和显示,避免因字符集不匹配导致的数据损坏或乱码。
  • 数据一致性:在比较和排序数据时,使用合适的校对集可以确保结果符合预期,尤其是在处理多语言数据时。
  • 性能:某些字符集和校对集可能对性能有影响,例如,多字节字符集在存储和处理时可能比单字节字符集慢。

总结

在创建数据库时,选择字符集和校对集是一项基础但重要的配置。字符集决定了数据如何存储,而校对集则决定了数据如何比较和排序。为了确保数据的正确存储和处理,应根据数据库的实际需求和数据特征,合理选择字符集和校对集。在大多数情况下,使用通用且支持广泛字符的 UTF-8 字符集,配合适合的校对集,可以满足大部分应用场景的需求。

3、操作命令

字符集和校验规则(Collation)在数据库设计和数据处理中扮演着至关重要的角色。它们影响着数据的存储方式和比较操作。

查看系统默认字符集以及校验规则

  • show variables like 'character_set_database'; 这个命令用于显示当前数据库使用的字符集。character_set_database 变量指定了数据库层面的字符集,默认通常是 utf8utf8mb4

  • show variables like 'collation_database'; 这个命令用于显示当前数据库使用的校验规则。collation_database 变量决定了如何比较和排序字符,例如是否区分大小写。

查看数据库支持的字符集

  • show charset; 此命令列出MySQL服务器支持的所有字符集。

查看数据库支持的字符集校验规则

  • show collation; 列出所有可用的校验规则,每个校验规则对应一个特定的字符集,定义了字符的排序规则和比较方式。

校验规则对数据库的影响

不区分大小写

当你创建数据库时,如果使用了 utf8_general_ci 这样的校验规则,那么在该数据库中的数据比较和排序将不区分大小写。ci 是 Case Insensitive 的缩写,意味着“不区分大小写”。

示例:

create database test1 collate utf8_general_ci;

在这个数据库中,插入 'a' 和 'A' 将被视为相同的数据项,因为校验规则设定为不区分大小写。

区分大小写

另一方面,使用 utf8_bin 这样的校验规则将使数据库在比较和排序时区分大小写。bin 意味着二进制比较,即完全按照字节比较,区分大小写。

示例:

create database test2 collate utf8_bin;

在这个数据库中,'a' 和 'A' 被视为不同的数据项,因为在 utf8_bin 校验规则下,数据库严格区分大小写。

分别use test1 use test2
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

查询示例

test1 数据库中,由于使用了 utf8_general_ci,查询 'a' 会返回所有包含 'a' 或 'A' 的记录,因为大小写被忽略。不区分大小写的查询以及结果:

mysql> use test1;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a |
| A |
+------+
2 rows in set (0.01 sec)

test2 数据库中,由于使用了 utf8_bin,查询 'a' 只会返回实际包含小写 'a' 的记录,而不会匹配大写 'A'。区分大小写的查询以及结果:

mysql> use test2;
mysql> select * from person where name='a';
+------+
| name |
+------+
| a |
+------+
2 rows in set (0.01 sec)

选择正确的字符集和校验规则对于确保数据的一致性和正确性至关重要,特别是在多语言环境中。

 不区分大小写排序以及结果:
mysql> use test1;
mysql> select * from person order by name;
+------+
| name |
+------+
| a |
| A |
| b |
| B |
+------+

区分大小写排序以及结果:

mysql> use test2;
mysql> select * from person order by name;
+------+
| name |
+------+
| A |
| B |
| a |
| b |
+------+

四、操纵数据库

1、查看当前数据库有哪些表

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| student        |
+----------------+
1 row in set (0.00 sec)

2、查看当前在哪个数据库

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

 3、查看数据库

SHOW DATABASES;

这条命令用于列出当前 MySQL 服务器上所有可用的数据库。当你首次登录到 MySQL 服务器时,如果没有明确选择数据库,你将处于无数据库选择状态,此时可以使用此命令查看服务器上存在的所有数据库。

SHOW CREATE DATABASE <database_name>;

这条命令用于显示创建指定数据库时所使用的 SQL 语句。这对于理解数据库的初始设置非常有用,特别是字符集和校对规则。例如:

mysql> show create database mytest;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| mysql | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+

这里,mytest 是要检查的数据库名。输出显示了创建数据库时使用的 SQL 语句,包括默认的字符集设置(在这里是 utf8)。

说明:
  • 尽管 MySQL 不强制要求关键字必须使用大写,但在 SQL 语句中使用大写关键字是一种普遍接受的规范,有助于提高代码的可读性和一致性。

  • 此外,当数据库名称或表名称与 MySQL 的保留关键字相同时,需要使用反引号(`)将它们包围起来,以避免语法冲突。

  • /*!40100 ... */ 这种形式的注释并不是真正的注释,而是 MySQL 的一种特性,表示后面跟随的语句只在 MySQL 4.0.1 及更高版本中有效。这是 MySQL 对向后兼容性的一种处理方式,确保在不同版本间语句的正确执行。

4、修改数据库

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

这条命令用于修改现有数据库的特性,主要应用于改变数据库的字符集或校对规则。alter_specification 参数可以是:

  • [DEFAULT] CHARACTER SET charset_name
  • [DEFAULT] COLLATE collation_name

其中,charset_namecollation_name 分别是你希望数据库使用的新字符集和校对规则。

实例:修改数据库字符集

假设你想要将 mytest 数据库的字符集从 utf8 更改为 gbk,可以使用以下命令:

mysql> alter database mytest charset=gbk;
Query OK, 1 row affected (0.00 sec)

之后,再次使用 SHOW CREATE DATABASE mytest; 命令,你会看到数据库的字符集已经成功更改为 gbk

mysql> show create database mytest;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| mytest | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+----------------------------------------------------------------+

五、数据库备份、恢复与连接情况

数据库备份和恢复是数据库管理中的重要环节,确保数据的安全性和业务的连续性。在 MySQL 中,使用 mysqldump 工具进行备份是一种常见的做法。下面我们将详细解释备份、还原的过程以及一些注意事项。

1、备份

命令语法:

# mysqldump -P<port> -u<username> -p<password> -B <database_name> > <backup_file_path>
  • -P 指定 MySQL 服务器的端口号,默认通常是 3306。
  • -u 指定 MySQL 用户名。
  • -p 后跟密码,或者直接 -p 后输入密码,如 -p123456
  • -B 表示只备份指定的数据库。
  • <database_name> 是你要备份的数据库名称。
  • > 符号将输出重定向到指定的文件,即 <backup_file_path>,这是你备份文件的路径。

示例:

# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

这个命令将 mytest 数据库的内容备份到 D:/mytest.sql 文件中。

2、还原

在需要恢复数据时,可以使用 source 命令将备份文件中的 SQL 语句重新执行。

命令语法:

mysql> source <backup_file_path>;

示例:

mysql> source D:/mysql-5.7.22/mytest.sql;

在执行此命令前,确保你已经连接到了正确的 MySQL 数据库实例,并且拥有执行 SQL 语句的权限。

注意事项

  • 备份单个表:如果只想备份单个表,可以使用 -t 参数并指定表名,例如:

    # mysqldump -P3306 -u root -p123456 -B mytest -t mytable > D:/mytable.sql
  • 备份多个数据库:可以通过指定多个数据库名称来备份多个数据库,例如:

    # mysqldump -u root -p -B db1 db2 db3 > multiple_databases.sql
  • 未使用 -B 参数:如果不使用 -B 参数进行备份,那么备份文件将包含所有数据库的信息。在这种情况下,恢复时需要先创建相应的空数据库,然后再使用 source 命令来导入数据。

3、查看连接情况

show processlist 命令可以显示当前所有连接到 MySQL 服务器的会话,包括每个会话的 ID、用户、主机、当前操作的数据库、正在执行的命令、持续时间等信息。

命令语法:

mysql> show processlist;

输出示例:

mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+-------+------------------+
| 2 | root | localhost | test | Sleep | 1386 | | NULL |
| 3 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+

六、表的操作

在 MySQL 中,创建表是一个基本但重要的操作,它允许你定义数据库中的数据结构。下面是对创建表语法和相关概念的详细解释:

1、创建表

命令语法:

CREATE TABLE table_name (field1 datatype options,field2 datatype options,field3 datatype options,...
) CHARACTER SET charset_nameCOLLATE collation_nameENGINE = storage_engine;
  • table_name:你想要创建的表的名称。
  • field:表示列名,也就是表中的字段。
  • datatype:指定字段的数据类型,例如 INTVARCHAR(20)DATE 等。
  • options:可以附加在数据类型后面,用于定义字段的额外属性,如 NOT NULLAUTO_INCREMENTDEFAULT 'value' 等。
  • CHARACTER SET charset_name:定义表的字符集。如果省略,将使用数据库的默认字符集。
  • COLLATE collation_name:定义表的校对规则。如果省略,将使用数据库的默认校对规则。
  • ENGINE = storage_engine:指定表的存储引擎,如 MyISAMInnoDB 等。

举例

CREATE TABLE users (id INT,name VARCHAR(20) COMMENT '用户名',password CHAR(32) COMMENT '密码是32位的MD5值',birthday DATE COMMENT '生日'
) CHARACTER SET utf8ENGINE = MyISAM;

说明:

  • users 表有四个字段:idnamepasswordbirthday
  • COMMENT 关键字用于添加字段注释,这有助于理解字段的用途。
  • CHARACTER SET utf8 指定了表的字符集为 UTF-8,能够支持全球大部分语言。
  • ENGINE = MyISAM 指定了表的存储引擎为 MyISAM。

2、插入数据

在数据库中向表中插入数据是数据库管理中最常见的操作之一。不同的数据库管理系统(DBMS)如 MySQL、PostgreSQL、SQL Server 等,提供了相似但略有不同的语法来执行这一操作。这里,我将主要讲解在 MySQL 中如何插入数据到表中。

插入数据的基本语法

在 MySQL 中,使用 INSERT 语句来向表中插入数据。基本语法如下:

INSERT INTO table_name [(column1, column2, column3,...)]
VALUES (value1, value2, value3,...);

这里的 table_name 是你想要插入数据的表的名称,括号内的 column1, column2, column3,... 是表中的列名,而 value1, value2, value3,... 是你想要插入的相应列的值。

示例

假设你有一个名为 users 的表,该表有以下列:id, username, email, 和 registration_date。现在,你想要插入一条新的用户记录。

INSERT INTO users (id, username, email, registration_date)
VALUES (1, 'john_doe', 'john.doe@example.com', '2023-01-01');

不指定列名

如果插入的值与表中的列一一对应,你可以省略列名列表,如下所示:

INSERT INTO users VALUES (1, 'john_doe', 'john.doe@example.com', '2023-01-01');

但是,这种方法要求你对表结构有充分的了解,以确保值的顺序与列的顺序相匹配。

插入多行数据

你也可以一次性插入多行数据,这可以通过在 VALUES 关键字后提供多组值来实现:

INSERT INTO users (id, username, email, registration_date)
VALUES (1, 'john_doe', 'john.doe@example.com', '2023-01-01'),(2, 'jane_doe', 'jane.doe@example.com', '2023-01-02');

使用子查询插入数据

你还可以从一个查询的结果中插入数据到另一个表中:

INSERT INTO users (id, username, email)
SELECT id, username, email FROM temp_users;

这会将 temp_users 表中所有记录的 id, username, 和 email 字段值插入到 users 表中。

注意事项

  • 当插入数据时,需要确保数据类型与列的定义相符,例如,日期字段应插入日期值,字符串字段应插入字符串值。
  • 如果表中有主键或唯一索引,插入的数据不能违反这些约束。
  • 对于具有 AUTO_INCREMENT 属性的列,你不需要指定值,因为数据库会自动为其生成一个唯一的值。
  • 插入数据时,如果表中有外键约束,确保引用的外键值在相应的表中存在。

3、存储引擎与文件

不同的存储引擎会影响表数据的存储方式和文件类型。例如,如果你创建的是 MyISAM 引擎的表,MySQL 会在数据目录下生成三个与表相关的文件:

  • users.frm:包含表结构的定义。
  • users.MYD:存储表的数据。
  • users.MYI:存储表的索引信息。

注意

  • 如果你创建的是 InnoDB 引擎的表,数据和索引通常不会以独立的文件形式存储,而是存储在 InnoDB 表空间中,除非启用了 innodb_file_per_table 配置选项,此时每个 InnoDB 表也会有自己的 .ibd 文件。

4、查看表结构

DESC 命令

DESC 命令(实际上是 DESCRIBE 的简写)用于描述一个表的结构,它显示了表中的所有列以及它们的数据类型、是否允许为空、是否有默认值、是否是主键等信息。这对于理解表的结构非常有帮助。

示例:

假设我们有一个名为 employees 的表,包含以下字段:id, first_name, last_name, email, hire_date, job_id, salary

DESC employees;

执行上述命令后,你可能会得到类似这样的输出:

+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| first_name| varchar(20) | NO   |     | NULL    |                |
| last_name| varchar(25) | NO   |     | NULL    |                |
| email    | varchar(25) | NO   | UNI | NULL    |                |
| hire_date| date        | NO   |     | NULL    |                |
| job_id   | varchar(10) | YES  | MUL | NULL    |                |
| salary   | decimal(8,2)| NO   |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

SELECT * FROM 命令

SELECT * FROM 命令用于从一个或多个表中选择所有的列和行。* 表示所有列,FROM 后面跟着表的名称。这是最常见的 SQL 查询之一,用于获取数据。

示例:

如果你想查看 employees 表中的所有记录,你可以使用以下命令:

SELECT * FROM employees;

这将返回表中所有列的所有数据行。例如,你可能得到这样的结果:

+----+------------+-----------+----------------+------------+---------+--------+
| id | first_name | last_name | email          | hire_date  | job_id  | salary |
+----+------------+-----------+----------------+------------+---------+--------+
|  1 | John       | Doe       | john.doe@email | 2010-05-01| IT_PROG | 8000.00|
|  2 | Jane       | Smith     | jane.smith@eml | 2012-06-15| HR_REP  | 7000.00|
|  3 | Michael    | Brown     | mike.brown@eml | 2015-01-10| ACCT    | 6000.00|
+----+------------+-----------+----------------+------------+---------+--------+

SHOW CREATE TABLE  

在 MySQL 中,SHOW CREATE TABLE 是一个非常有用的命令,它用于显示一个或多个表的创建语句。这可以帮助你了解一个表是如何被定义的,包括其字段的数据类型、索引、约束、存储引擎等详细信息。

基本语法

SHOW CREATE TABLE 命令的基本语法如下:

SHOW CREATE TABLE table_name;

其中 table_name 是你想要查看创建语句的表的名字。如果需要查看多个表的创建语句,你可以使用通配符或者列出多个表名:

SHOW CREATE TABLE table_name1, table_name2, ...;

或者对于一个数据库下的所有表,你可以使用:

SHOW CREATE TABLE database_name.*;

但是,通常我们只对单个表使用此命令。

输出格式

当你运行 SHOW CREATE TABLE 命令后,MySQL 将返回两列数据:TableCreate Table

  • Table 列将显示表的名称。
  • Create Table 列将包含创建该表的完整 SQL 语句。

示例

假设你有一个名为 employees 的表,你可以这样运行命令:

SHOW CREATE TABLE employees;

输出可能如下所示:

+------------+---------------------------------------------------------------------------------------------------------------------+
| Table      | Create Table                                                                                                        |
+------------+---------------------------------------------------------------------------------------------------------------------+
| employees  | CREATE TABLE `employees` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`position` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+------------+---------------------------------------------------------------------------------------------------------------------+

这里,Create Table 列显示了创建 employees 表的 SQL 语句,包括字段定义、主键和其他表选项。

注意事项

  • 为了方便读取输出,你可以在命令末尾加上 \G,这样输出将以垂直格式显示,使输出更易读。
  • 创建语句中的表名和列名可能会被单引号括起来,这是正常的,因为 SQL 语句中使用单引号来标识字符串,而在创建语句中,表名和列名被视为字符串处理。
  • 如果你打算复制 Create Table 中的语句来重新创建表,请确保正确处理这些引号,以免出现语法错误。

5、修改表

在实际项目开发中,随着业务需求的变化,可能需要频繁地调整数据库表的结构。MySQL 提供了 ALTER TABLE 语句来帮助我们修改现有表的结构,包括添加字段、修改字段、删除字段、更改表的字符集和存储引擎等。下面将详细介绍这些操作及其语法,并给出具体的例子。

添加字段

如果需要向现有的表中添加新的字段,可以使用 ADD COLUMN 子句。

语法:

ALTER TABLE table_name
ADD [COLUMN] column_name data_type [constraint];

示例:

假设有一个 employees 表,现在需要增加一个 phone_number 字段。

ALTER TABLE employees
ADD COLUMN phone_number VARCHAR(15);

修改字段

当需要改变字段的数据类型、长度或其它属性时,可以使用 MODIFY COLUMNCHANGE COLUMN 子句。

语法:

ALTER TABLE table_name
MODIFY [COLUMN] column_name new_data_type [new_constraint];

或者

ALTER TABLE table_name
CHANGE [COLUMN] old_column_name new_column_name new_data_type [new_constraint];

示例:

假设需要将 employees 表中的 email 字段从 VARCHAR(50) 改为 VARCHAR(100)

ALTER TABLE employees
MODIFY COLUMN email VARCHAR(100);

或者,如果要将 email 字段改名为 contact_email 并同时修改类型:

ALTER TABLE employees
CHANGE COLUMN email contact_email VARCHAR(100);

删除字段

当不再需要某字段时,可以使用 DROP COLUMN 子句来删除它。

语法:

ALTER TABLE table_name
DROP [COLUMN] column_name;

示例:

假设决定从 employees 表中删除 phone_number 字段。

ALTER TABLE employees
DROP COLUMN phone_number;

更改表的字符集和存储引擎

你还可以使用 ALTER TABLE 来更改表的字符集和存储引擎。

更改字符集:

ALTER TABLE table_name
CONVERT TO CHARACTER SET charset_name
COLLATE collation_name;

更改存储引擎:

ALTER TABLE table_name
ENGINE = storage_engine;

示例:

假设需要将 employees 表的字符集改为 utf8mb4,并使用 InnoDB 存储引擎。

ALTER TABLE employees
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;ALTER TABLE employees
ENGINE = InnoDB;

重命名表

ALTER TABLE 语句不仅可以用来修改表的结构,如添加、修改或删除字段,还可以用来重命名表。重命名表是一项常见的数据库维护任务,特别是在重构数据库模式或迁移数据时。

语法

重命名表的基本语法如下:

RENAME TABLE old_table_name TO new_table_name;

或者,你也可以使用 ALTER TABLE 结合 RENAME TO 来实现相同的效果:

ALTER TABLE old_table_name RENAME TO new_table_name;

示例

假设你有一个名为 customers 的表,你决定将其重命名为 clients。可以使用以下 SQL 语句:

RENAME TABLE customers TO clients;

或者

ALTER TABLE customers RENAME TO clients;
批量重命名

如果你需要同时重命名多个表,可以在 RENAME TABLE 语句中一次指定多个表:

RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2, ...;

例如:

RENAME TABLE orders TO sales, products TO inventory;
跨数据库重命名

如果需要将表从一个数据库移动到另一个数据库并同时重命名,可以使用完整的数据库表名格式:

RENAME TABLE old_database.old_table TO new_database.new_table;

例如,将 old_database.orders 表重命名为 new_database.sales

RENAME TABLE old_database.orders TO new_database.sales;

注意事项

  • 在重命名表之前,请确保没有任何外键约束引用了旧的表名。如果存在外键依赖,你需要先删除这些约束,然后重命名表,最后重建约束。
  • 重命名操作可能会影响依赖于该表的应用程序代码和脚本。确保在重命名之后更新所有相关的引用。
  • 重命名操作可能需要一定的执行时间,特别是对于大型表,因此在生产环境中执行此类操作时要谨慎,并考虑执行时间和潜在的性能影响。

6、删除表

删除表:DROP TABLE

在数据库管理中,删除不再需要的表是一种常见的操作。MySQL 提供了 DROP TABLE 语句来实现这一功能。这个命令可以从数据库中永久删除一个或多个表,连同其中的所有数据和结构信息。

语法格式:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

这里的关键组成部分包括:

  • DROP: 表示你打算删除一个数据库对象。
  • TEMPORARY: 这个关键字是可选的,用于指定删除临时表。如果省略此关键字,DROP TABLE 命令将删除持久表。
  • IF EXISTS: 这个子句也是可选的,用于防止在表不存在的情况下抛出错误。如果表不存在,DROP TABLE 命令将无操作并成功执行,不会产生错误信息。
  • tbl_name: 表明你要删除的表的名称。你可以一次指定多个表名,用逗号 , 分隔。

示例:

假设你有一个名为 t1 的表,现在不再需要它了,可以使用以下命令来删除它:

DROP TABLE t1;

如果想在表不存在时也不报错,可以使用:

DROP TABLE IF EXISTS t1;

注意事项:

  • 删除表是一个不可逆的操作,一旦执行,所有与该表相关联的数据、索引、约束和触发器都将被永久删除。因此,在执行 DROP TABLE 命令之前,一定要确认你不再需要这个表,或者已经备份了必要的数据。
  • 如果表中存在外键约束或其他依赖关系,直接删除可能会失败。在这种情况下,你可能需要首先删除或修改这些依赖关系,然后再删除表。
  • 如果试图删除的表正在被其他连接使用,操作可能会失败。确保在删除表之前,没有活跃的事务或查询在使用该表。

相关文章:

MySQL库与表的操作

目录 一、登录并进入数据库 1、登录 2、USE 命令 检查当前数据库 二、库的操作 1、创建数据库语法 2、举例演示 3、退出 三、字符集和校对规则 1、字符集&#xff08;Character Set&#xff09; 2、校对集&#xff08;Collation&#xff09; 总结 3、操作命令 …...

TTS 语音合成技术学习

TTS 语音合成技术 TTS&#xff08;Text-to-Speech&#xff0c;文字转语音&#xff09;技术是一种能够将文字内容转换为自然语音的技术。通过 TTS&#xff0c;机器可以“说话”&#xff0c;这大大增强了人与机器之间的互动能力。无论是在语音助手、导航系统还是电子书朗读器中&…...

小公司做自动化的困境

1. 人员数量不够 非常常见的场景, 开发没几个, 凭什么测试要那么多, 假设这里面有3个测试, 是不是得有1个人会搞框架? 是不是得有2人搞功能测试, 一个人又搞框架, 有些脚本, 真来得及吗? 2. 人员基础不够 现在有的大公司, 是这样子协作的, 也就是某模块需求谁谁测试的, 那么…...

基于pytorch框架的手写数字识别(保姆级教学)

1、前言 本文基于PyTorch框架,采用CNN卷积神经网络实现MNIST手写数字识别,不仅可以在GPU上,同时也可以在CPU上运行。方便即使只有CPU的小伙伴也可以运行该模型。本博客手把手教学,如何手写网络层(3层),以及模型训练,详细介绍各参数含义与用途。 2、模型源码解读 该模型…...

注意力机制在大语言模型中的应用

在大语言模型中&#xff0c;注意力机制&#xff08;Attention Mechanism&#xff09;用于捕获输入序列中不同标记&#xff08;token&#xff09;之间的关系和依赖性。这种机制可以动态地调整每个标记对当前处理任务的重要性&#xff0c;从而提高模型的性能。具体来说&#xff0…...

qt 实现对字体高亮处理原理

在Qt中实现对文本的字体高亮处理&#xff0c;通常涉及到使用QTextDocument、QTextCharFormat和QSyntaxHighlighter。下面是一个简单的例子&#xff0c;演示如何为一个文本编辑器&#xff08;假设是QTextEdit&#xff09;添加简单的关键词高亮功能&#xff1a; 步骤 1: 定义关键…...

SAP中通过财务科目确定分析功能来定位解决BILLING问题实例

接用户反馈&#xff0c;一笔销售订单做发货后做销售发票时&#xff0c;没有成功过账到财务&#xff0c;提示财户确定错误。 这个之前可以通过VF02中点击小绿旗来重新执行过财动作&#xff0c;看看有没有相应日志来定位问题。本次尝试用此方法&#xff0c;也没有找到相关线索。 …...

充电站,正在杀死加油站

最近&#xff0c;深圳公布了一组数据&#xff0c;深圳的超级充电站数量已超过传统加油站数量&#xff0c;充电枪数量也已超过加油枪数量。 从全国范围看&#xff0c;加油站关停的速度在加快。 充电站正在杀死加油站。 加油站&#xff0c;未来何去何从&#xff1f; 01. 减少 我…...

哪个牌子的超声波清洗机好?四样超卓超声波清洗机独具特色!

眼镜是许多人日常生活中必不可少的工具&#xff0c;然而&#xff0c;相信很多人都有过清洗眼镜的烦恼。传统的清洗眼镜的方法往往不够彻底&#xff0c;容易留下污渍或者划伤镜片。因此&#xff0c;超声波洗眼镜机成为了现代人清洗眼镜的新选择。超声波洗眼镜机通过利用超声波震…...

vue3中若v-model绑定的响应字段出现三级,该如何实现rules验证规则

比如以下内容&#xff1a; 配置的rules内容 const rulesref({title:[{required:true,message:"请输入标题",trigger:"blur"},{max:50,message:"最大不能超过256个字",trigger:"blur"}],Category:[{required:true,message:"请选择…...

Docker-Compose一键部署项目

Docker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的…...

【C++】相机标定源码笔记-线激光点云处理工具类

一个线激光点云处理工具类&#xff0c;它包含了一系列的方法用于处理和分析线激光扫描得到的点云数据。提供的功能包括&#xff1a; 通过文件或直接数据设置点云。计算线激光在机器人坐标系下的精度&#xff0c;输出内点的平均距离、最大距离、最小距离、总点数和内点数。提供了…...

解决Transformer根本缺陷,所有大模型都能获得巨大改进

即使最强大的 LLM 也难以通过 token 索引来关注句子等概念&#xff0c;现在有办法了。 最近两天&#xff0c;马斯克和 LeCun 的口水战妥妥成为大家的看点。这两位 AI 圈的名人你来我往&#xff0c;在推特&#xff08;现为 X&#xff09;上相互拆对方台。 LeCun 在宣传自家最新论…...

如何排查Java应用的死锁

排查Java应用中的死锁问题是一个复杂但重要的任务&#xff0c;因为死锁会导致应用程序停止响应&#xff0c;影响用户体验和系统稳定性。以下是一些方法和步骤&#xff0c;帮助你排查Java应用中的死锁。 1. 理解死锁的概念 在计算机科学中&#xff0c;死锁是指两个或多个线程相…...

JS面试题1

1. 延迟加载JS有哪些方式&#xff1f; defer: 等html全部解析完成&#xff0c;才会执行js代码&#xff0c;顺次执行js脚本 async&#xff1a;是和html解析同步的&#xff0c;不是顺次执行js脚本&#xff08;当有很多个js时&#xff09;&#xff0c;是谁先加载完谁先执行。 <…...

Linux网络 - 再谈、详谈UDP和TCP协议

文章目录 前言预备netstatpidofcat /etc/services 一、UDP协议UDP协议端格式UDP的缓冲区基于UDP的应用层协议 二、TCP协议1.TCP协议段格式确认应答(ACK)机制三次握手疑问1 最后一次客户端发给服务端的ACK请求怎么保证服务端能够收到&#xff1f; 四次挥手疑问2 为什么挥手是四次…...

el-form重置后input无法输入问题

新增用户遇到的问题&#xff1a; 如果你没有为 formData 设置默认值&#xff0c;而只是将其初始化为空对象 {}&#xff0c;则在打开dialog时&#xff0c;正常输入&#xff0c; formdata会变成如下 但是&#xff0c;打开后&#xff0c;直接使用 resetFields 或直接清空表单&…...

Java网络编程(JavaWeb的基础)

Java网络编程&#xff08;JavaWeb的基础&#xff09; 文章目录 Java网络编程&#xff08;JavaWeb的基础&#xff09;前言一、网络编程概述1.1 软件架构&网络基础1.2 网络通信要素:IP/端口/通信协议1.3 传输层协议:tcp/udp 二、网络编程API2.1 InetAddress类2.2 Socket类&am…...

鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形

XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上&#xff0c;可以配合Native Window创建OpenGL开发环境&#xff0c;并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板&#xff0c;调用OpenGL ES图形库绘制3D图形&…...

DM达梦数据库存储过程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

【python】OpenCV—Color Correction

文章目录 cv2.aruco 介绍imutils.perspective.four_point_transform 介绍skimage.exposure.match_histograms 介绍牛刀小试遇到的问题 参考学习来自 OpenCV基础&#xff08;18&#xff09;使用 OpenCV 和 Python 进行自动色彩校正 cv2.aruco 介绍 一、cv2.aruco模块概述 cv2.…...

Java基础知识整理笔记

目录 1.关于Java概念 1.1 谈谈对Java的理解&#xff1f; 1.2 Java的基础数据类型&#xff1f; 1.3 关于面向对象的设计理解 1.3.1 面向对象的特性有哪些&#xff1f; 1.3.2 重写和重载的区别&#xff1f; 1.3.3 面向对象的设计原则是什么&#xff1f; 1.4 关于变量与方…...

知识图谱——Neo4j数据库实战

数据与代码链接见文末 1.Neo4j数据库安装 JDK 安装:https://www.oracle.com/java/technologies/javase-downloads.html Neo4j 安装:https://neo4j.com/download-center/ 配置好 JDK 和 Neo4j 的环境变量...

第十一次Javaweb作业

4.登录校验 4.1会话 --用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需要识别多次请求…...

人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命

随着科技的浪潮不断向前推进&#xff0c;人工智能&#xff08;AI&#xff09;正以惊人的速度重塑着我们的世界&#xff0c;特别是在创意产业的核心领域——UI设计与视频剪辑中&#xff0c;AI正逐步成为驱动行业创新与变革的关键力量。在这个AI技术全面开花的新时代&#xff0c;…...

计算机专业课面试常见问题-编程语言篇

目录 1. 程序的编译执行流程&#xff1f; 2. C浅拷贝和深拷贝的区别&#xff1f; 3. C虚函数&#xff1f; …...

CSS|05 继承性与优先级

继承性 一、继承性的特点&#xff1a; 1.外层元素身上的样式会被内层元素所继承 2.如果内层元素与外层元素身上的演示相同时&#xff0c;外层元素的样式会被内层元素所覆盖 二、关于继承性的问题 是不是所有样式都能被继承&#xff1f; 答&#xff1a;并不是所有样式能被继承…...

KVM性能优化之内存优化(宿主机)

linux系统自带了一技术叫透明巨型页&#xff08;transparent huge page&#xff09;&#xff0c;它允许所有的空余内存被用作缓存以提高性能&#xff0c;而且这个设置是默认开启的&#xff0c;我们不需要手动去操作。 Centos下&#xff0c;我们用cat /sys/kernel/mm/transpare…...

【Linux杂货铺】Linux学习之路:期末总结篇1

第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆&#xff1b;它由林纳斯 本纳第克特 托瓦兹从零开始编写&#xff0c;并在网络上众多松散的黑客团队的帮助下得以发展和完善&#xff1b;它遵从可移植操作系统接口&#xff08;POSIX&#xff09;标准和单一 UNIX 规范…...

GPT-5的到来:智能飞跃与未来畅想

IT之家6月22日消息&#xff0c;在美国达特茅斯工程学院的采访中&#xff0c;OpenAI首席技术官米拉穆拉蒂确认了GPT-5的发布计划&#xff0c;预计将在一年半后推出。穆拉蒂形象地将GPT-4到GPT-5的飞跃比作高中生到博士生的成长。这一飞跃将给我们带来哪些变化&#xff1f;GPT-5的…...

gin中间件

在web应用服务中&#xff0c;完整的业务处理在技术上包含客户端操作&#xff0c;服务端处理&#xff0c;返回处理结果给客户端三个步骤。但是在在更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证&#xff0c;权限管理&#xff0c;安全检查&#xff0c;日志记录等多维…...

swagger常用注解

最近查看接口文档的时候发现&#xff0c;POST方法中的query没法在swagger中显示&#xff0c;查了才发现这是因为Swagger或OpenAPI规范默认将HTTP POST请求的参数识别为请求体&#xff08;body&#xff09;参数&#xff0c;而不是查询字符串&#xff08;query&#xff09;参数。…...

【Flink metric(1)】Flink指标系统的系统性知识:获取metric以及注册自己的metric

文章目录 一. Registering metrics&#xff1a;向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)2.4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三. Reporter ing四. System…...

命令模式(Command Pattern)

命令模式&#xff08;Command Pattern&#xff09; 定义 命令模式是对命令的封装&#xff0c;每一个命令都是一个操作&#xff1a;请求的一方发出请求要求执行一个操作&#xff1b;接收的一方收到请求&#xff0c;并执行操作。 命令模式解耦了请求方和接收方&#xff0c;请求…...

掌握Symfony的模板继承:构建强大且灵活的Web界面

掌握Symfony的模板继承&#xff1a;构建强大且灵活的Web界面 在Symfony框架中&#xff0c;模板继承是一个强大的功能&#xff0c;它允许开发者创建可重用的布局模板&#xff0c;并通过扩展这些模板来构建具体的页面。这种机制不仅提高了代码的可维护性&#xff0c;还使得页面结…...

uboot基本使用网络命令和从服务器端下载linux内核启动

网络命令ip地址设置: setenv gmac_debug 0; setenv mdio_intf rgmii; setenv bootdelay 1; setenv ethaddr 00:xxxx:81:70; // mac地址 setenv ipaddr xxx; //开发板 IP 地址 setenv netmask 255.255.255.0; setenv gatewayip xxx.1; setenv serverip xxxx; //服…...

解决ArcGIS导出的svg格式的图片插入Word后的字体问题

背景 在ArcGIS中设置字体为Times New Roman&#xff0c;但导入Word后字体转为等线。 ArcGIS中的Layout 导入Word​​​​​​ 原因分析 Word无法识别嵌入进SVG格式文件中的字体。 解决方案 在Export Layer窗口中&#xff0c;将Embed fonts取消勾选&#xff0c;Convert cha…...

如何确保 Puppet 配置在复杂网络环境中的可靠分发和同步?

在复杂网络环境中确保 Puppet 配置的可靠分发和同步可以采取以下措施&#xff1a; 网络拓扑规划&#xff1a;在复杂网络环境中&#xff0c;首先需要进行网络拓扑规划&#xff0c;确保网络结构合理&#xff0c;并能够支持可靠的分发和同步机制。 Puppet Master 多节点部署&…...

2024最新!将mysql的数据导入到Solr

Solr导入mysql的数据 如何安装导入数据前准备配置Solr的Jar包以及Mysql驱动包1.1、将solr-8.11.3\dist下的两个包进行移动1.2、将mysql-connect包也移动到该位置1.3、重启Solr项目 配置xml2.1、第一步我们需要创建核心2.2、第二步修改xml(这里是结合19年的教程)2.3、 创建data-…...

Python数据分析第二课:conda的基础命令

Python数据分析第二课&#xff1a;conda的基础命令 1.conda是什么? conda是一个开源的包管理系统&#xff0c;可以帮助我们进行管理多个不同版本的软件包&#xff0c;还可以帮助我们建立虚拟环境&#xff0c;以便对不同的项目进行隔离。 简单来说&#xff0c;conda是一个软…...

LayoutInflater加载流程

简介 LayoutInflater在日常的Android开发中是经常使用的类&#xff0c;常常用于XML中View的加载相关流程。本文主要总结一些其常见api的源码流程。 获取LayoutInflater 我们一般会在Activity的onCreate方法中会通过setContentView方法设置自己的布局layoutId&#xff0c;Act…...

PLC数据采集案例

--------天津三石峰科技案例分享 项目介绍 项目背景 本项目为天津某钢铁集团下数字化改造项目&#xff0c;主要解决天津大型钢厂加氢站数字化改造过程中遇到的数据采集需求。项目难点PLC已经在运行了&#xff0c;需要采集里面数据&#xff0c;不修改程序&#xff0c;不影响P…...

基于单片机和LabVIEW 的远程矿井水位监控系统设计

摘要 &#xff1a; 针 对 现 有 矿 井 水 位 监 控 系 统 存 在 结 构 复 杂 和 不 能 远 程 监 控 的 问 题 &#xff0c; 设计了基于单片机和&#xff2c;&#xff41;&#xff42;&#xff36;&#xff29;&#xff25;&#xff37; 的远程矿井水位监控系统 &#xff0c; 详…...

element 表格嵌套表单验证指定行

elementui表格嵌套动态表单&#xff0c;单独验证某一行输入项是否符合校验规则&#xff1b; input动态绑定校验 :prop"imgTable. scope.$index .bxName" <el-form :model"formTable" ref"formTable" inline size"small"><…...

CORE Mobility Errorr的调试

在运行CORE tutorial 3中的mobility示例时&#xff0c;出现如下错误&#xff1a; 当看到这个问题的时候&#xff0c;并没有仔细去分析日志和现象&#xff0c;在core-daemon的进程打印界面只看了一下最后的出错堆栈&#xff1a; 2024-06-27 10:43:48,614 - ERROR - _server:_ca…...

基于weixin小程序乡村旅游系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;旅游景点管理&#xff0c;景点类型管理&#xff0c;景点路线管理&#xff0c;系统管理 商家帐号账号功能包括&#xff1a;系统首页&#xff0c;旅游景点管理&…...

详解三种常用标准化 Batch Norm Layer Norm RMSNorm

参考&#xff1a; BN究竟起了什么作用&#xff1f;一个闭门造车的分析《动手学深度学习》7.5 节 深度学习中&#xff0c;归一化是常用的稳定训练的手段&#xff0c;CV 中常用 Batch Norm&#xff1b; Transformer 类模型中常用 layer norm&#xff0c;而 RMSNorm 是近期很流行…...

云计算运维工程师面试

1. 云计算运维工程师的角色和职责是什么? 回答: 云计算运维工程师负责确保云计算环境(包括硬件和软件系统)的高可用性和稳定性。他们的主要职责包括: 监测系统和应用程序的性能,确保它们正常运行。故障排除,快速响应并解决系统或应用程序中出现的问题。容量规划,根据…...

聚观早报 | iPhone 16核心硬件曝光;三星Galaxy全球新品发布会

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月28日消息 iPhone 16核心硬件曝光 三星Galaxy全球新品发布会 苹果正多方下注布局AI商店 黄仁勋2024年薪酬3400…...

web前端之文档流、浮动、定位详解

目录 一、文档流 二、浮动 1.添加浮动 2.清除浮动 三、定位 1.相对定位 2.绝对定位 一、文档流 什么是文档流&#xff1f; ● 文档流指的是文档中的标签在排列时所占用的位置。 将窗体自上而下分成一行行 &#xff0c;并在每 行中按从左至右的顺序排放标签&#xff0c…...