2019-08-03
在阅读语句语法时,应该记住以下约定。
|
符号用来指出几个选择中的一个,因此,NULL | NOT NULL
表示或者给出NULL
或者给出NOT NULL
。- 包含在方括号中的关键字或子句(如
[like this]
)是可选的。- 即没有列出所有的
MySQL
语句,也没有列出每一条子句和选项。
1. ALTER TABLE
ALERT TABLE
用来更新已经存在的表的模式。
输入:help alter table
ALTER TABLE table_name
| ADD [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| ADD [COLUMN] (col_name column_definition,...)
| ADD {INDEX|KEY} [index_name]
[index_type] (index_col_name,...) [index_option] ...
| ADD [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (index_col_name,...) [index_option] ...
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name]
[index_type] (index_col_name,...) [index_option] ...
| ADD FULLTEXT [INDEX|KEY] [index_name]
(index_col_name,...) [index_option] ...
| ADD SPATIAL [INDEX|KEY] [index_name]
(index_col_name,...) [index_option] ...
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
reference_definition
| ALGORITHM [=] {DEFAULT|INPLACE|COPY}
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| ALTER INDEX index_name {VISIBLE | INVISIBLE}
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST|AFTER col_name]
| [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| {DISABLE|ENABLE} KEYS
| {DISCARD|IMPORT} TABLESPACE
| DROP [COLUMN] col_name
| DROP {INDEX|KEY} index_name
| DROP PRIMARY KEY
| DROP FOREIGN KEY fk_symbol
| FORCE
| LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| ORDER BY col_name [, col_name] ...
| RENAME COLUMN old_col_name TO new_col_name
| RENAME {INDEX|KEY} old_index_name TO new_index_name
| RENAME [TO|AS] new_tbl_name
| {WITHOUT|WITH} VALIDATION
| ADD PARTITION (partition_definition)
| DROP PARTITION partition_names
| DISCARD PARTITION {partition_names | ALL} TABLESPACE
| IMPORT PARTITION {partition_names | ALL} TABLESPACE
| TRUNCATE PARTITION {partition_names | ALL}
| COALESCE PARTITION number
| REORGANIZE PARTITION partition_names INTO (partition_definitions)
| EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH|WITHOUT} VALIDATION]
| ANALYZE PARTITION {partition_names | ALL}
| CHECK PARTITION {partition_names | ALL}
| OPTIMIZE PARTITION {partition_names | ALL}
| REBUILD PARTITION {partition_names | ALL}
| REPAIR PARTITION {partition_names | ALL}
| REMOVE PARTITIONING
| UPGRADE PARTITIONING
2.COMMIT
COMMIT
用来将事务处理写到数据库。
输入:
COMMIT;
3.CREATE INDEX
CREATE INDEX
用于在一个或多个列上创建索引。
输入:
CREATE INDEX indexname
ON tablename (column [ASC | DESC], ...);
4.CREATE PROCEDURE
CREATE PROCEDURE
用于创建存储过程。
输入:
CREATE PROCEDURE procedurename( [parameters] )
BEGIN
...
END;
5.CREATE TABLE
CREATE TABLE
用于创建新数据库表。为更新已经存在的表的结构,使用ALTER TABLE
。
输入:
CREATE TABLE [IF NOT EXISTS] tablename
(
column datatype [NULL | NOT NULL] [CONSTRAINTS],
column datatype [NULL | NOT NULL] [CONSTRAINTS],
...
);
创建列时如果不指定NOT NULL
,则认为指定的是NULL
,NULL
为默认值。
不要把NULL
值与空串相混淆。NULL
值是没有值,它不是空串。如果指定''
(两个单引号,其间没有字符),这在NOT NULL
列中是允许的。空串是一个有效的值,它不是无值。NULL
值用关键字NULL
而不是空串指定。
6.CREATE USER
CREATE USER
用于向系统中添加新的用户账号。
输入:
CREATE USER username[@hostname]
[IDENTIFIED BY [PASSWORD] 'password'];
7.CREATE VIEW
CREATE VIEW
用来创建一个或多个表上的新视图。
输入:
CREATE [OR REPLACE] VIEW viewname
AS
SELECT ...;
8.DELETE
DELETE
从表中删除一行或多行,并不删除表本身。如果想从表中删除所有行,不要使用DELETE
。可使用TRUNCATE TABLE
语句,它完成相同的工作,但速度更快(TRUNCATE
实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。
输入:
DELETE FROM tablename
[WHERE ...];
9.DROP
DROP
永久地删除数据库对象。
输入:
DROP DATABASE | INDEX | PROCEDURE | TABLE | TRIGGER | USER | VIEW
itemname;
10.INSERT
INSERT
给表增加一行。
输入:
INSERT INTO tablename [(columns, ...)]
VALUES(values, ...);
11.INSERT SELECT
INSERT SELECT
插入SELECT
的结果到一个表。
输入:
INSERT INTO tablename [(columns, ...)]
SELECT columns, ... FROM tablename, ...
[WHERE ...];
12.ROLLBACK
ROLLBACK
用于撤销一个事务处理块。
输入:
ROLLBACK [TO savepointname];
13.SAVEPOINT
SAVEPOINT
为使用ROLLBACK
语句设立保留点。
输入:
SAVEPOINT sp1;
14.SELECT
SELECT
用于从一个或多个表(视图)中检索数据。
输入:
SELECT columnname, ...
FROM tablename, ...
[WHERE ...]
[UNION ...]
[GROUP BY ...]
[HAVING ...]
[ORDER BY ...];
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解(SQL数据库和Oracle数据库的区别)
15.START TRANSACTION
START TRANSACTION
表示一个新的事务处理块的开始。
输入:
START TRANSACTION;
16.UPDATE
UPDATE
更新表中的一行或多行。如果用UPDATE
语句更新多行,并且在更新这些行中的一行或多行时出现一个错误,则整个UPDATE
操作被 取消(错误发生前更新的所有行被恢复到它们原来的值)。即使是发生错误,也继续进行更新,可使用IGNORE
关键字。
输入:
UPDATE [IGNORE] tablename
SET columnname = value, ...
[WHERE ...];
17.重命名表
RENAME TABLE oldTableName TO newTableName