MySQL操作数据库和表的常用命令新手教程_MySQL
我是新手
学习如何管理和导航MySQL数据库和表是要掌握的首要任务之一,下面的内容将主要对MySQL的数据库和表的一些常用命令进行总结,一些我们不得不掌握的命令,一些信手拈来的命令。
处理数据库
1.查看数据库
获取服务器上的数据库列表通常很有用。执行show databases;命令就可以搞定。
代码如下:
mysql> show databases;
2.创建数据库
代码如下:
mysql> create database db_test;
Query OK, 1 row affected (0.00 sec)
3.使用数据库
数据库一旦创建,就可以通过“使用”(use命令)数据库,将其指定为默认的工作数据库。
代码如下:
mysql> use db_test;
Database changed
4.删除数据库
删除数据库的方式与创建的方式很相似。可以在mysql客户端中使用drop命令删除数据库,如下:
代码如下:
mysql> drop database db_test;
Query OK, 0 rows affected (0.00 sec)
处理表
这里将对如何创建、列出、查看、删除和修改MySQL数据库表。
1.创建表
表通过create table语句来创建。创建表的过程中会使用非常多的选项和子句,在这里完全总结一遍也是不现实的,这里只是总结最普遍的,以后遇到别的,再单个总结。创建表的一般用法如下:
代码如下:
mysql> create table tb_test(
-> id int unsigned not null auto_increment,
-> firstname varchar(25) not null,
-> lastname varchar(25) not null,
-> email varchar(45) not null,
-> phone varchar(10) not null,
-> primary key(id));
Query OK, 0 rows affected (0.03 sec)
记住,表至少包含一列。另外,创建表之后总是可以再回过头来修改表的结构。无论当前是否在使用目标数据库,都可以创建表,只要在表名前面加上目标数据库即可。例如:
代码如下:
mysql> create table db_test.tb_test(
-> id int unsigned not null auto_increment,
-> firstname varchar(25) not null,
-> lastname varchar(25) not null,
-> email varchar(45) not null,
-> phone varchar(10) not null,
-> primary key(id));
Query OK, 0 rows affected (0.03 sec)
2.有条件的创建表
在默认情况下,如果试图创建一个已经存在的表,MySQL会产生一个错误。为了避免这个错误,create table语句提供了一个子句,如果你希望在目标表已经存在的情况下简单地退出表创建,就可以使用这个子句。例如:
代码如下:
mysql> create table if not exists db_test.tb_test(
-> id int unsigned not null auto_increment,
-> firstname varchar(25) not null,
-> lastname varchar(25) not null,
-> email varchar(45) not null,
-> phone varchar(10) not null,
-> primary key(id));
Query OK, 0 rows affected, 1 warning (0.00 sec)
无论是否已经创建,都会在返回到命令提示窗口时显示“Query OK”消息。
3.复制表
基于现有的表创建新表是一项很容易的任务。以下代码将得到tb_test表的一个副本,名为tb_test2:
代码如下:
mysql> create table tb_test2 select * from db_test.tb_test;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
将向数据库增加一个相同的表tb_test2。而有的时候,可能希望只基于现有表的几个列创建一个表。通过create select语句中指定列就可以实现:
代码如下:
mysql> describe tb_test;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| firstname | varchar(25) | NO | | NULL | |
| lastname | varchar(25) | NO | | NULL | |
| email | varchar(45) | NO | | NULL | |
| phone | varchar(10) | NO | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
mysql> create table tb_test2 select id, firstname, lastname, email from tb_test;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> describe tb_test2;
+-----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | | 0 | |
| firstname | varchar(25) | NO | | NULL | |
| lastname | varchar(25) | NO | | NULL | |
| email | varchar(45) | NO | | NULL | |
+-----------+------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
4.创建临时表
有的时候,当工作在非常大的表上时,可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录保存到一个临时表可能更快一些,然后对这些临时表进行查询操作。可以通过使用temporary关键字和create table语句来实现。
代码如下:
mysql> create temporary table emp_temp select firstname, lastname from tb_test;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
临时表的创建与其它表一样,只是它们存储在操作系统指定的临时目录中。临时表将在你连接MySQL期间存在,当你断开时,MySQL将自动删除表并释放所有的内存空间;当然了,你也可以手动的使用drop table命令删除临时表。
5.查看数据库中可用的表
可以使用show tables命令完成。例如:
代码如下:
mysql> show tables;
+-------------------+
| Tables_in_db_test |
+-------------------+
| tb_test |
| tb_test2 |
+-------------------+
2 rows in set (0.00 sec)
6.查看表结构
可以使用describe语句查看表结构,例如:
代码如下:
mysql> describe tb_test;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| firstname | varchar(25) | NO | | NULL | |
| lastname | varchar(25) | NO | | NULL | |
| email | varchar(45) | NO | | NULL | |
| phone | varchar(10) | NO | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
另外,使用show命令也能得到相同的结果,例如:
代码如下:
mysql> show columns in tb_test;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| firstname | varchar(25) | NO | | NULL | |
| lastname | varchar(25) | NO | | NULL | |
| email | varchar(45) | NO | | NULL | |
| phone | varchar(10) | NO | | NULL | |
+-----------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
7.删除表
删除表是使用drop table语句实现的,其语法如下:
代码如下:
drop [temporary] table [if exists] tbl_name [, tbl_name, ...]
8.更改表结构
我们会发现,我们会经常修改和改进表结构,特别是在开发初期;但是,每次进行修改时不必都先删除再重新创建表。相反,可以使用alter语句修改表的结构。利用这个语句,可以再必要时删除、修改和增加列。和create table一样,alter table提供了很多子句、关键字和选项。这里只是会说一些简单的使用,比如在表tb_demo表中插入一列,表示email,代码如下:
代码如下:
mysql> alter table tb_demo add column email varchar(45);
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
新的列放在表的最后位置。不过,还可以使用适当的关键字(包括first、after和last)来控制新列的位置。如果想修改表,比如,刚刚加的email,我想加入一个not null控制,代码可以是这样的:
代码如下:
mysql> alter table tb_demo change email email varchar(45) not null;
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
如果觉的这个email这列没有存在的必要了,可以使用下面的代码删除它,例如:
代码如下:
mysql> alter table tb_demo drop email;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
我不是新手
这篇文章大体上总结了与MySQL打交道时常用的一些命令,希望对大家有帮助。看完这篇文章,你应该认为你已经不是新手了,如果上面的命令你都实践过一遍以后,你应该比60%的人都熟悉MySQL数据库。就是这样,越简单的东西,越是有很多人不会。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

MySQLは、複数の同時接続を処理し、マルチスレッド/マルチプロセスを使用して、各クライアントのリクエストに独立した実行環境を割り当てて、邪魔されないことを確認できます。ただし、同時接続の数は、システムリソース、MySQL構成、クエリパフォーマンス、ストレージエンジン、ネットワーク環境の影響を受けます。最適化では、コードレベル(効率的なSQLの書き込み)、構成レベル(MAX_Connectionの調整)、ハードウェアレベル(サーバー構成の改善)などの多くの要因を考慮する必要があります。

MySQLがテーブル構造を変更すると、メタデータロックが通常使用され、テーブルがロックされる可能性があります。ロックの影響を減らすために、次の測定値をとることができます。1。オンラインDDLでテーブルを使用できます。 2。バッチで複雑な変更を実行します。 3.小規模またはオフピーク期間中に操作します。 4. PT-OSCツールを使用して、より細かい制御を実現します。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

MySQLプライマリキーは、データベース内の各行を一意に識別するキー属性であるため、空にすることはできません。主キーが空になる可能性がある場合、レコードを一意に識別することはできません。これにより、データの混乱が発生します。一次キーとして自己挿入整数列またはUUIDを使用する場合、効率やスペース占有などの要因を考慮し、適切なソリューションを選択する必要があります。

MySQLはAndroidで直接実行できませんが、次の方法を使用して間接的に実装できます。Androidシステムに構築されたLightWeight Database SQLiteを使用して、別のサーバーを必要とせず、モバイルデバイスアプリケーションに非常に適したリソース使用量が少ない。 MySQLサーバーにリモートで接続し、データの読み取りと書き込みのためにネットワークを介してリモートサーバー上のMySQLデータベースに接続しますが、強力なネットワーク依存関係、セキュリティの問題、サーバーコストなどの短所があります。

MySQLはJSONデータを返すことができます。 json_extract関数はフィールド値を抽出します。複雑なクエリについては、Where句を使用してJSONデータをフィルタリングすることを検討できますが、そのパフォーマンスへの影響に注意してください。 JSONに対するMySQLのサポートは絶えず増加しており、最新バージョンと機能に注意を払うことをお勧めします。

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。
