写在SQL语句中

时间:2016-02-23 19:03:47

标签: mysql sql

我正在阅读sql.txt文件,这是一个部分。它的作用是创建一个表“Page”:

DROP TABLE IF EXISTS `Page`;
CREATE TABLE `Page` (
  `id` bigint(20) NOT NULL auto_increment,
  `pageId` int(11) default NULL,
  `name` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `pageId` (`pageId`)
)

--
-- Dumping data for table `Page`
--

LOCK TABLES `Page` WRITE;
/*!40000 ALTER TABLE `Page` DISABLE KEYS */;
/*!40000 ALTER TABLE `Page` ENABLE KEYS */;
UNLOCK TABLES;

我有几个问题:

  1. TABLES是数据库名称吗?
  2. WRITE是否将数据加载到表'页'?如果是,数据来源在哪里?
  3. 锁是否意味着首先锁定数据库?

2 个答案:

答案 0 :(得分:0)

  1. TABLES不是数据库名称。这意味着要锁定哪个表(在本例中为表' Page')。

  2. WRITE表示,表格被锁定以便写入。

  3. 这意味着锁定表,而不是数据库。

答案 1 :(得分:0)

LOCK TABLES是一个SQL命令(请参阅文档链接),它将锁定应用于指定的表集。在这种情况下,它只有一个表Page

LOCK TABLES `Page` WRITE;

在这种情况下,它将是两个表:

LOCK TABLES `Page`, `Book` WRITE;

锁可以有一个'type',在这种情况下是WRITE。这意味着当此锁定到位时,无法将数据写入表中。这可确保在完成所有操作之前,不会更新任何更新。这使数据库表保持已知状态。

请注意,您仍然可以从写锁定下的表中读取。这意味着在写入数据时读取将是不确定的。

SQL不支持锁定整个数据库(据我所知)。上面的命令只会锁定指定的表。