sql sql 数据定义语言 (DDL)

2019-04-17 16:20:13 浏览数 (1)

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

1.CREATE DATABASE :

代码语言:javascript复制
CREATE DATABASE my_db

2.ALTER DATABASE:

代码语言:javascript复制
ALTERDATABASE name [ WITH CONNECTION LIMIT connlimit ]

ALTERDATABASE name SET parameter { TO | = } { value | DEFAULT }

ALTERDATABASE name RESET parameter

ALTERDATABASE name RENAME TO newname

ALTERDATABASE name OWNER TO new_owner

3.CREATE TABLE:

代码语言:javascript复制
CREATE TABLE `handelalarm` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `area` varchar(255) DEFAULT NULL,
  `count` varchar(255) DEFAULT NULL,
  `time` varchar(255) NOT NULL,
  `begtime` varchar(255) DEFAULT NULL,
  `endtime` varchar(255) DEFAULT NULL,
  `important` varchar(255) DEFAULT NULL,
  `handelcontent` varchar(512) DEFAULT NULL,
  `aid` int(11) unsigned NOT NULL,
  `operator` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `aid` (`aid`),
  CONSTRAINT `handelalarm_ibfk_1` FOREIGN KEY (`aid`) REFERENCES `criticalalarms` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8

4.ALTER TABLE:DROP INDEX:

代码语言:javascript复制
添加列
ALTER TABLE Persons ADD Birthday date
修改列数据类型
ALTER TABLE Persons ALTER COLUMN Birthday year
删除列
ALTER TABLE Person DROP COLUMN Birthday

5.DROP TABLE:

代码语言:javascript复制
用于 Microsoft SQLJet (以及 Microsoft Access) 的语法:

DROP INDEX index_name ON table_name

用于 MS SQL Server 的语法:

DROP INDEX table_name.index_name

用于 IBM DB2 和 Oracle 语法:

DROP INDEX index_name

用于 MySQL 的语法:

ALTER TABLE table_name DROP INDEX index_name

SQL DROP TABLE 语句

DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):

DROP TABLE 表名称

SQL DROP DATABASE 语句

DROP DATABASE 语句用于删除数据库:

DROP DATABASE 数据库名称

SQL TRUNCATE TABLE 语句

如果我们仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?

请使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):

TRUNCATE TABLE 表名称

5.CREATE INDEX:

代码语言:javascript复制
CREATE INDEX 语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

索引
您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

SQL CREATE INDEX 语法
在表上创建一个简单的索引。允许使用重复的值:

CREATE INDEX index_name
ON table_name (column_name)
注释:"column_name" 规定需要索引的列。

SQL CREATE UNIQUE INDEX 语法
在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE INDEX 实例
本例会创建一个简单的索引,名为 "PersonIndex",在 Person 表的 LastName 列:

CREATE INDEX PersonIndex
ON Person (LastName) 
如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC:

CREATE INDEX PersonIndex
ON Person (LastName DESC) 
假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:

CREATE INDEX PersonIndex
ON Person (LastName, FirstName)

0 人点赞