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 中使用包含空格或使用保留字的列或表名。例如,最好避免像 table
或 first name
这样的名字。
如果你必须使用这些名称,请将它们放在 back-tick ``
分隔符之间。例如:
CREATE TABLE `table`
(
`first name` VARCHAR(30)
);
包含此表上的反斜杠分隔符的查询可能是:
SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';