CREATE DATABASE

1
CREATE DATABASE dbname;

创建名称为dbname的数据库

CREATE TABLE

1
CREATE TABLE mytable (userid INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id', email VARCHAR(256) NOT NULL COMMENT '用户邮箱', phone VARCHAR(20) NOT NULL COMMENT '用户手机号', PRIMARY KEY(userid));

创建名为mytable的数据表。数据表中有条目userid(非负整数,自增), email(字符串,最长256位),phone(字符串,最长20位),数据条目的3个域均不能为null值。userid为数据表的主键。

CREATE INDEX

1
CREATE INDEX index_name ON table_name (column_name);

以column_name域创建索引,允许重复值。

1
CREATE UNIQUE INDEX index_name ON table_name (column_name);

创建索引,但是索引值不允许重复值。

SELECT

SELECT语句是数据库最基本的操作,用来选中数据表中的特定域。

1
SELECT column_name1, column_name2 FROM table_name;

选中column_name1和column_name2两个域

1
SELECT * from table_name;

选中数据表中的所有域

SELECT INTO

1
SELECT column1, column2, ... INTO newtable [IN other_db] FROM table_name;

选中数据表中的条目,将结果输出到一张新表中

LIMIT

1
SELECT column_name1, column_name2, ... FROM table_name LIMIT number;

输出选中所有条目的前number个条目

WHERE

1
SELECT column_name1, column_name2 FROM table_name WHERE option;

WHERE语句用来限定选中条目的特征,例如从数据表中选出ID为某个范围的条目

ORDER BY

1
SELECT column_name1, column_name2 from table_name ORDER BY column_name3 DESC, column_name4 ASC;

ORDER BY语句用来限定输出的条目的顺序,以上语句首先按照column_name3域降序排列,其次按照column_name4域升序排列

INSERT INTO

1
INSERT INTO table_name VALUES (value1, value2, ...);

在数据表中插入新的条目,各个域的值依次为value1, value2, …

1
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

插入条目,但是指定该条目的各个域的值,若某个于没有指定值,则为null或者默认值

INSERT INTO SELECT

1
INSERT INTO table2 SELECT * from table1;

table2与table1结构相同,将table1的所有条目复制到table2中

1
INSERT INTO table2 (column1_A, column2_A, ...) SELECT (column1_B, column2_B, ...) FROM table1;

将table1中选出的条目插入到table2中(table2与table1表结构可以不同)

UPDATE

1
UPDATE table_name SET column1=value1, column2=value2, ... WHERE option;

以上特定条目的column1域的值更新为value1, column2域的值更新为value2

DELETE

1
DELETE FROM table_name WHERE option;

删除数据表中满足特定条件的条目

DROP

1
ALTER TABLE table_name DROP INDEX inde_name;

删除数据表中的某个索引(MySql)

1
DROP TABLE table_name;

删除数据表

1
DROP DATABASE database_name;

删除数据库

1
TRUNCATE TABLE table_name;

删除数据表中的数据,但是不删除数据表本身

ALTER

1
ALTER TABLE table_name ADD column_name datatype;

在数据表中添加新域

1
ALTER TABLE table_name DROP COLUMN column_name;

删除数据表中的某个域

1
ALTER TABLE table_name MODIFY COLUMN column_name datatype;

修改数据表中某个域的数据类型(MySql)

IN

1
SELECT column1, column2, ... FOME table_name WHERE column_name IN (value1, value2, ...);

选中column_name域的值为value1,value2 或者…的条目

BETWEEN

1
SELECT column1, column2, ... FROM table_name WHERE column_name BETWEEN value1 AND value2;

选中column_name域的值在区间[value1, value2]内的条目

LIKE

1
SELECT column1, column2, ... FROM table_name WHERE column_name LIKE pattern;

选中数据表中column_name域具有符合pattern模式的条目

pattern中可以使用通配符,SQL通配符可以参见w3schools

IS NULL

1
SELECT column1, column2, ... FROM table_name WHERE column_name IS NULL

IS NULL作为WHERE筛选条件,选中数据域为NULL的条目

AS

1
SELECT column_name AS alias_name FROM table_name;

将column_name取别名

1
SELECT column_name FROM table_name AS alias_name;

将所有选出的条目作为名称为alias_name的数据表

AS的详细用法请参见w3schools

AND, OR

1
SELECT column1 column2, ... FROM table_name WHERE option1 AND option2;

AND和OR用来连接WHERE语句中的多个筛选条件

JOIN

JOIN语句用来合并多张表的不同域,JOIN的详细用法参见w3schools

UNION

1
SELECT column1, column2, ... FROM table1 UNION SELECT column1, column2, ... FROM table2;

合并table1和table2的查询结果(选中域应当一致),查询结果只包含不同的条目 如果要保留重复条目,应该使用UNION ALL

Constraint

在创建数据表时,可以使用CONSTRAINT来限定数据域的属性

  • NOT NULL –> 数据域的值不可为NULL
  • UNIQUE –> 数据域的值不可有重复值
  • AUTO_INCREMENT –> 数据域的值自增(该数据域是数字类型而且为UNIQUE)
  • PRIMARY KEY –> 该数据域是数据表的主键(主键隐含NOT NULL和UNIQUE属性)
  • FOREIGN KEY –> 该数据域是另一个数据表的主键,用于链接另一个关联的数据表
  • CHECK –> 检查数据域的值是否满足特定条件
  • DEFAULT –> 设定数据域的默认值
  • COMMENT –> 设置数据域的注解

Comment

SQL语言中有两种添加注解的方式

1
2
3
4
5
--Select all:
SELECT * FROM table_name;

/* This is just comments.
   You can add multiple comments like this. */

本文辑录了最常用的SQL语句,可作为SQL速查目录。本文的内容来自w3schools,更详细和高级的内容可以在那里阅读。