MySQL 入门

在 MySQL 中创建数据库

CREATE DATABASE mydb;

返回值:

查询 OK,1 行受影响(0.05 秒)

使用创建的数据库 mydb

USE mydb;

返回值:

数据库已更改

在 MySQL 中创建一个表

CREATE TABLE mytable
(
  id              int unsigned NOT NULL auto_increment,
  username        varchar(100) NOT NULL,
  email           varchar(100) NOT NULL,
  PRIMARY KEY     (id)
);

CREATE TABLE mytable 将创建一个名为 mytable 的新表。

id int unsigned NOT NULL auto_increment 创建了 id 列,这种类型的字段将为表中的每条记录分配一个唯一的数字 ID(意味着在这种情况下没有两行可以具有相同的 id),MySQL 将自动为记录分配一个新的唯一值。id 字段(从 1 开始)。

返回值:

查询 OK,0 行受影响(0.10 秒)

将行插入 MySQL 表

INSERT INTO mytable ( username, email )
VALUES ( "myuser", "myuser@example.com" );

示例返回值:

查询正常,1 行受影响(0.06 秒)

也可以使用单引号插入 varchar aka strings

INSERT INTO mytable ( username, email )
VALUES ( 'username', 'username@example.com' );

将行更新为 MySQL 表

UPDATE mytable SET username="myuser" WHERE id=8

示例返回值:

查询正常,1 行受影响(0.06 秒)

可以在没有引号的查询中插入 int 值。字符串和日期必须用单引号'或双引号 " 括起来。

将行删除到 MySQL 表中

DELETE FROM mytable WHERE id=8

示例返回值:

查询正常,1 行受影响(0.06 秒)

这将删除 id 为 8 的行。

根据 MySQL 中的条件选择行

SELECT * FROM mytable WHERE username = "myuser";

返回值:

+----+----------+---------------------+
| `id` | username | email               |
+----+----------+---------------------+
|  1 | myuser   | myuser@example.com  |
+----+----------+---------------------+

1 排(0.00 秒)

显示现有数据库的列表

SHOW databases;

返回值:

+-------------------+
| `Databases`         |
+-------------------+
| information_schema|
| `mydb`              |
+-------------------+

2 行(0.00 秒)

你可以将“information_schema”视为提供对数据库元数据的访问的主数据库

在现有数据库中显示表

SHOW tables;

返回值:

+----------------+
| Tables_in_mydb |
+----------------+
| `mytable`        |
+----------------+

1 排(0.00 秒)

显示表格的所有字段

DESCRIBE databaseName.tableName;

或者,如果已经使用数据库:

DESCRIBE tableName;

返回值:

+-----------+----------------+--------+---------+-------------------+-------+
| `Field`     | Type           | Null   | Key     | Default           | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| `fieldname` | fieldvaluetype | NO/YES | keytype | defaultfieldvalue |       |
+-----------+----------------+--------+---------+-------------------+-------+

Extra 可能包含例如 auto_increment

Key 指的是可能影响该领域的键的类型。主要(PRI),独特(UNI)……

n 行(0.00 秒)

其中 n 是表中字段的数量。

创建用户

首先,你需要创建一个用户,然后授予用户对某些数据库/表的权限。在创建用户时,你还需要指定此用户可以从哪里连接。

CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';

将创建一个只能在托管数据库的本地计算机上连接的用户。

CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';

将创建一个可以从任何地方连接的用户(本地计算机除外)。

示例返回值:

查询正常,0 行受影响(0.00 秒)

添加权限

为指定数据库的所有表授予用户通用的基本权限:

GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';

为所有数据库上的所有表授予用户所有权限(请注意):

GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;

如上所示,*.*以所有数据库和表为目标,databaseName.*定位特定数据库的所有表。也可以像 databaseName.tableName 那样指定数据库和表格。

如果用户无需授予其他用户权限,则应忽略 WITH GRANT OPTION

特权可以

ALL

以下的组合,每个用逗号分隔(非详尽列表)。

SELECT
INSERT
UPDATE
DELETE
CREATE
DROP

注意

通常,你应该尽量避免在 SQL 中使用包含空格或使用保留字的列或表名。例如,最好避免像 tablefirst name 这样的名字。

如果你必须使用这些名称,请将它们放在 back-tick ``分隔符之间。例如:

CREATE TABLE `table`
(   
   `first name` VARCHAR(30)
);

包含此表上的反斜杠分隔符的查询可能是:

 SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';