MySQL开始使用MySQL

备注

MySQL徽标

MySQL是一个开源的关系数据库管理系统(RDBMS),由Oracle Corporation开发和支持。

MySQL在大量平台上受支持 ,包括Linux变体,OS X和Windows。它还具有适用于大量语言的API ,包括C,C ++,Java,Lua,.Net,Perl,PHP,Python和Ruby。

MariaDB是MySQL的一个分支,具有稍微不同的功能集 。对于大多数应用程序,它完全兼容MySQL。

版本

发布日期
1.0 1995-05-23
3.19 1996-12-01
3.20 1997-01-01
3.21 1998-10-01
3.22 1999-10-01
3.23 2001年1月22日
4 2003-03-01
4.1 2004-10-01
5 2005-10-01
5.1 2008-11-27
5.5 2010-11-01
5.6 2013年2月1日
5.7 2015年10月1日

入门

在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

如果你必须使用这些名称,请将它们放在后面的`` 分隔符”之间。例如:

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

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

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

信息模式示例

PROCESSLIST

这将按顺序显示所有活动和休眠查询,然后显示多长时间。
SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
 

这是关于时间帧的更多细节,因为它默认为秒

SELECT ID, USER, HOST, DB, COMMAND, 
TIME as time_seconds, 
ROUND(TIME / 60, 2) as time_minutes, 
ROUND(TIME / 60 / 60, 2) as time_hours, 
STATE, INFO
FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
 

存储过程搜索

通过所有Stored Procedures 轻松搜索单词和通配符。

SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';
 
ENUM