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)