mysql学习
— Java攻城狮学习路线 —
入门:
- 1. 简介
- 2. 安装
- 3. 数据库连接
- 4. 数据库操作
- 5. 注释
- 6. 数据类型
- 7. 数据表操作
- 8. 数据操作
- 9. 常用函数
- 10. 导入导出数据
- 11. 图形化工具
- 12. SQL快速参考
进阶:
1. 简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
1.1 什么是据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。基于读写速度考虑,现在使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。其特点为:
- 数据以表格的形式出现
- 每行为各种记录
- 每列为记录所对应的数据项
- 许多的行和列组成一张表单
- 若干的表单组成数据库
1.2 RDBMS 术语
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
2. 安装
MySQL下载地址:https://www.mysql.com/downloads/
相关安装教程较为简单,可自行查询。
3. 数据库连接
3.1 使用命令连接
Linux和Windows连接方式一样,在命令行输入:
[root@host]# mysql -uroot -p
Enter password:******
登录后成功后输出:
Welcome to the MySQL monitor. Commands end with ; or \\g.
Your MySQL connection id is XXXXXX to server version: 5.X.X
Type \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the buffer.
基本操作:
- 查看帮助:
- hlep;
- \\h
- ?加上相关关键字
- 取消当前命令执行:\\c
- 命令行结束符:
- ;
- \\g
- 退出系统:
- exit
- quit
- \\q
3.2 JDBC连接
利用Java API实现数据库连接,详情见JDBC相关资料。
4. 数据库操作
4.1 创建数据库
使用create关键词创建数据库,database和schema等效。
CREATE DATABASE dbname;
CREATE SCHEMA dbname;
指定编码方式创建数据库。
CREATE DATABASE [IF NOT EXISTS] dbname [DEFAULT] CHARACTER SET [=] utf-8;
4.2 查看数据库
使用show关键字查看当前服务器下全部数据库。
SHOW DATABASE;
SHOW SCHEMA;
4.3 查看数据库详细信息
SHOW CREATE DATABASE dbname;
4.4 修改数据库编码方式
ALTER DATABASE dbname [DEFAULT] CHARACTER SET [=] utf-8;
注:[]表示可以省略
4.5 打开数据库
USE dbname;
4.6 得到当前打开数据库
SELECT DATABASE();
SELECT SCHEMA();
4.7 删除数据库
DROP DATABASE [IF EXISTS] dbname;
5. 注释
两种注释方式。
# 这是一段注释1
-- 这是一段注释2
6. 数据类型
6.1 数值类型
类型 | 大小 | 范围 | 用途 |
---|---|---|---|
TINYINT | 1 字节 | (-128,127) | 小整数值 |
SMALLINT | 2 字节 | (-32 768,32 767) | 大整数值 |
MEDIUMINT | 3 字节 | (-8 388 608,8 388 607) | 大整数值 |
INT | 4 字节 | (-2 147 483 648,2 147 483 647) | 大整数值 |
BIGINT | 8 字节 | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | 极大整数值 |
FLOAT | 4 字节 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 单精度浮点数值 |
DOUBLE | 8 字节 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度浮点数值 |
DECIMAL | M,D决定 | 依赖于M和D的值 | 小数值 |
6.2 字符串类型
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 字节 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
6.3 日期和时间类型
类型 | 大小 | 格式 | 用途 |
---|---|---|---|
DATE | 3 字节 | YYYY-MM-DD | 日期值 |
TIME | 3 字节 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 字节 | YYYY | 年份值 |
DATETIME | 8 字节 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 字节 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
7. 数据表操作
数据表由行和列组成,每个数据表中至少有1列,行可以0,1或多行,表名必须唯一,且含义明确。
7.1 创建表
CREATE TABLE [IF NOT EXISTS] tblname(
字段名称 字段类型 [完整性约束条件],
字段名称 字段类型 [完整性约束条件],
字段名称 字段类型 [完整性约束条件],
...
)ENGINE=存储引擎 CHARSET=编码方式;
MySQL中在表创建时指定数据项的约束条件:
约束条件 | 作用 |
---|---|
UNSIGNED | 无符号 |
ZEROFILL | 零填充 |
NOT NULL | 非空 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键,标识记录唯一性,值不重复且不为空 |
UNIQUE KEY | 唯一性 |
AUTO_INCREMENT | 自动增长,数值列,配合索引 |
FOREIGN KEY | 外键约束 |
# 实例
CREATE TABLE IF NOT EXISTS `tbl`(
`id` INT UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`author` VARCHAR(40) NOT NULL,
`date` DATE,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
7.2 查看表
SHOW [FULL] TABLES [[FROM/IN] dbname] [LIKE \'pattern\' / WHERE expr]
#实例
SHOW TABLES;
7.2.1 查看指定数据表的详细信息:
SHOW CREATE TABLE tlbname;
7.2.2 查看表结构:
DESC tblname;
DESCRIBE tblname;
SHOW COLUMNS FROM tblname;
7.4 删除表
DROP TABLE [IF EXISTS] tblname;
7.5 表结构操作
7.5.1 添加字段
ALTER TABLE tblname
ADD 字段名称 字段属性 [完整性约束条件]
[FIRST|AFTER 字段名称];
7.5.2 删除字段
ALTER TABLE tblname
DROP 字段名称;
7.5.3 添加默认值
ALTER TABLE tblname
ALTER 字段名称 SET DEFAULT 默认值;
7.5.4 删除默认值
ALTER TABLE tblname
ALTER 字段名称 DROP DEFAULT;
7.5.5 修改字段类型,属性
ALTER TABLE tblname
MODIFY 字段名称 字段类型 [字段属性] [FIRST|AFTER 字段名称];
7.5.6 修改字段名称、类型、属性
ALTER TABLE tblname
CHANGE 原字段名称 新字段名称 字段类型 字段属性
[FIRST|AFTER 字段名称];
7.5.7 添加主键
ALTER TABLE tblname
ADD PRIMARY KEY(字段名称);
7.5.8 删除主键
ALTER TABLE tblname
DROP PRIMARY KEY;
7.5.9 添加唯一索引
# 1
ALTER TABLE tblname
ADD UNIQUE KEY indexname(字段名称);
# 2
ALTER TABLE tblname
ADD UNIQUE INDEX indexname(字段名称);
7.5.10 删除唯一索引
ALTER TABLE tblname
DROP indexname;
7.5.11 修改数据表名称
# 1
ALTER TABLE tblname
RENAME [TO|AS] newtblname;
# 2
RENAME TABLE tblname TO newtblname;
8. 数据操作
8.1 添加记录
INSERT [INTO] tblname ( field1, field2,...fieldN )
VALUES ( value1, value2,...valueN );
8.1.1 不指定字段名称
INSERT tblname VALUES ( value1, value2,...valueN );
8.1.2 列出指定字段
INSERT tblname ( field1, field2,...fieldN )
VALUES ( value1, value2,...valueN );
8.1.3 一次添加多条记录
# 1
INSERT tblname ( field1, field2,...fieldN ) VALUES
( value1, value2,...valueN ),
( value1, value2,...valueN ),
...
( value1, value2,...valueN );
# 2
INSERT tblname SET field1 = value1, field2 = value2,...;
# 3
INSERT tblname [(field1, field2,...fieldN)]
SELECT field1, field2,...fieldN
FROM tblname [WHERE 条件];
8.2 修改记录
# 如果不添加条件,整个表中的记录都会更新
UPDATE tblname SET field1 = value1, field2 = value2,...
[WHERE 条件];
8.3 删除记录
# 如果不加入条件,所有记录都会删除,增长值不会改变
DELETE FROM tblname [WHERE 条件];
# 设置增长值为1
ALTER TABLE tblname AUTO_INCREMENT = 1;
# 彻底清空数据表
TRUNCATE [TABLE] tblname;
8.4 查询记录
SELECT 条件1,条件2... FROM tblname
[WHERE 条件]
[GROUP BY colname或position HAVING 二次筛选]
[ORDER BY colname,postion或expr [ASC|DESC]]
[LIMIT 限制结果集显示条数];
8.4.1 查询所有记录
SELECT * FROM tblname;
SELECT * FROM dbname.tblname;
8.4.2 指定字段查询
SELECT 字段名称,... FROM tblname;
8.4.3 给字段起别名
SELECT 字段名称,... [AS] 别名名称,... FROM dbname.tblname;
8.4.4 给表起别名
SELECT 字段名称,... FROM tblname [AS] 别名;
8.4.5 WHERE条件筛选记录
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND|OR] condition2.....
操作 | 符号 |
---|---|
比较运算符 | >, >=, <, <=, !=, <> ,<=> |
指定范围 | [NOT] BETWEEN...AND... |
指定集合 | [NOT] IN (value,...) |
逻辑运算符 | AND, OR |
匹配字符 | [NOT] LIKE; % (任意长度字符); _ (任意一个字符) |
8.4.6 GROUP BY分组
把值放到一个组中,结果只会显示组中一条记录
- 配合GROUP_CONCAT()查看组中某个字段的详细信息
SELECT GROUP_CONCAT(username),age,sex,addr
FROM tblname
GROUP BY sex;
- 配合聚合函数使用
COUNT()统计总数; SUM()求和; MAX()最大值; MIN()最小值; AVG()平均值
注:COUNT(字段名称),不统计值为NULL记录; COUNT(*)统计所有
SELECT sex, username, COUNT(*) FROM tblname
GROUP BY sex;
- 配合WITH ROLLUP使用,在记录末尾添加一条,为所有记录总和
SELECT sex, username FROM tblname
GROUP BY sex
WITH ROLLUP;
- HAVING字句对分组结果进行二次筛选
SELECT sex, username FROM tblname
GROUP BY sex
HAVING sex = \'男\';
8.4.7 ORDER BY排序
# 默认排序为升序 ASC,可指定降序 DESC
# 1.按照多个字段排序
SELECT id, username, age
FROM tblname
ORDER BY age ASC, id ASC;
# 2.随机排序
SELECT id, username, age
FROM tblname
ORDER BY RAND();
8.4.8 LIMIT 限制结果集展示条数
# 1.显示前count条记录
SELECT * FROM tblname
LIMIT count;
# 2. 从offset页开始,显示count条记录
# offset从0开始编号
SELECT * FROM tblname
LIMIT offset, count;
8.5 多表查询
8.5.1 笛卡尔积形式
# 列出所有可能连接
SELECT * FROM tblname1 CROSS JOIN tblname2;
8.5.2 内连接形式
# 查询两个表中符合连接条件的记录
SELECT 字段名称,... FROM tblname1
INNER JOIN tblname2
ON 连接条件;
# 例
SELECT e.id, e.username, e.age, d.depName
FROM emp AS e
INNER JOIN dep AS d
ON d.depID = d.id;
8.5.3 外连接形式
- 左外连接
# 先显示左表中的全部记录,再去右表中查询复合条件记录,不符合以NULL代替
SELECT 字段名称,... FROM tblname1
LEFT OUTER JOIN tblname2
ON 连接条件;
- 右外连接
# 先显示右表中的全部记录,再去左表中查询复合条件记录,不符合以NULL代替
SELECT 字段名称,... FROM tblname1
RIGHT OUTER JOIN tblname2
ON 连接条件;
8.6 外键约束
只有InnoDB支持外键,详情查看存储引擎相关资料。
8.6.1 创建外键
- 建表时指定
# 先创建主表,子表的外键字段类型和主表要相似
# 如果外键字段没有创建索引,会自动创建
# 子表外键关联必须是父表的主键
[CONSTRAINT 外键名称] FOREIGN KEY (字段名称)
REFERENCES 主表 (字段名称);
- 动态添加删除外键
# 添加:要保证记录合法
ALTER TABLE tblname
ADD FOREIGN KEY (外键字段)
REFERENCES 主表 (字段名称);
# 删除
ALTER TABLE tblname
DROP FOREIGN KEY (外键字段);
8.6.2 外键约束
约束条件 | 作用 |
---|---|
CASCADE | 从父表删除或更新,子表相同操作 |
SET NULL | 从父表删除或更新,设置子表外键列为NULL |
NO ACTION/RESTRICT | 拒绝对父表做更新或删除 |
# 使用方法,设置时指定
# 删除约束
ALTER TABLE tblname
ADD FOREIGN KEY (外键字段)
ON DELETE CASCADE;
# 更新约束
ALTER TABLE tblname
ADD FOREIGN KEY (外键字段)
ON UPDATE CASCADE;
8.7 特殊形式查询
8.7.1 子查询
SELECT 字段名称 FROM tblname
WHERE colname = (SELECT colname FROM tblname);
- 由IN引发的子查询
# 也可以使用NOT IN
SELECT * FROM emp
WHERE depId IN (SELECT id FROM dep);
- 由比较运算符引出子查询
SELECT id, username, score FROM stud
WHERE score >= (SELECT score FROM level WHERE id=1);
- 由EXISTS引发的子查询
SELECT * FROM emp WHERE EXISTS (
SELECT depName FROM dep WHERE id = 10);
- 带有ANY,SOME,ALL关键字的子查询
运算符 | ANY | SOME | ALL |
---|---|---|---|
">",">=" | 最小值 | 最小值 | 最大值 |
"<", "<=" | 最大值 | 最大值 | 最小值 |
"=" | 任意值 | 任意值 | |
"<>", "!=" | 任意值 |
SELECT * FROM stu
WHERE score >= ANY(
SELECT score FROM level);
- 其他方式
# INSERT ... SELECT
# CREATE ... SELECT
CREATE TABLE user(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20)
) SELECT id ,username FROM emp;
# 去掉字段重复值 DISTINCT
SELECT DISTINCT (username) FROM emp;
8.7.2 联合查询
# UNION 去掉重复值
SELECT 字段名称,... FROM tblname1
UNION
SELECT 字段名称,... FROM tblname2
# UNION ALL 简单合并
SELECT 字段名称,... FROM tblname1
UNION ALL
SELECT 字段名称,... FROM tblname2
8.7.3 自身连接查询
可实现无极限分类。
9. 常用函数
9.1 数学函数
函数 | 作用 | 函数 | 作用 |
---|---|---|---|
CEIL() | 进一取整 | ABS() | 绝对值 |
FLOOR() | 舍一取整 | POWER() | a^b |
ROUND() | 四舍五入 | PI() | 圆周率 |
TRUNCATE() | 截取 | RAND() | 随机数 |
MOD() | 取余 | SIGN() | 符号函数 |
EXP(a) | e^a |
9.2 字符串函数
函数 | 作用 | 函数 | 作用 |
---|---|---|---|
CHAR_LENGTH() | 得到字符串字符数 | LENGTH() | 得到字符串长度 |
CONCAT(str1,str2) | 合并字符串 | CONCAT_WS(separator, str1, str2) | 已注定分隔符拼接字符串 |
UPPER()/UCASE() | 转大写 | LOWER()/LCASE() | 转小写 |
REVERSE() | 字符串反转 | LEFT(str,n) | 返回前几个字符 |
RIGHT() | 返回后几个字符 | LPAD()/RPAD(str1,n,str2) | 用字符串左/右填充到指定长度 |
TRIM()/LTRIM()/RTRIM() | 去掉全部/左/右空格 | REPEAT(str,n) | 重复指定次数 |
REPLACE(str,str1,str2) | 替换字符串 | SUBSTRING(str,n1,n2) | 截取子串 |
STRCMP(str1,str2) | 比较字符串 |
9.3 日期时间函数
函数 | 作用 | 函数 | 作用 |
---|---|---|---|
CURDATE()/CURRENT_DATE() | 返回当前日期 | CURTIME()/CURRENT_TIME() | 当前时间 |
NOW()/CURRENT_TIMESTAMP()/SYSDATE() | 返回日期和时间 | MONTH() | 返回日期中月份 |
DAYNAME() | 返回星期几 | DAYOFWEEK() | 一周内第几天 |
WEEK() | 一年第几个星期 | YEAR() | 返回年份 |
HOUR() | 小时 | MINUTE() | 分钟 |
SECOND() | 秒数 | DATEDIFF() | 计算日期相差天数 |
9.4 其他函数
函数 | 作用 | 函数 | 作用 |
---|---|---|---|
VERSION() | 系统版本 | CONNECTION_ID() | 连接数 |
DATABASE()/SCHEMA() | 打开数据库 | USER()/CURRENT_USER() | 当前用户 |
SYSTEM_USER()/SESSION_USER() | 当前用户 | LAST_INSERT_ID() | 上一个自增长id |
MD5() | 加密算法 | PASSWORD() | 默认用户加密算法 |
10. 导入导出数据
10.1 导出数据
10.1.1 SELECT ... INTO OUTFILE
SELECT * FROM runoob_tbl
INTO OUTFILE \'/tmp/tables.txt\';
# 生成一个文件,各值用逗号隔开
SELECT a,b,a+b INTO OUTFILE \'/tmp/result.text\'
FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\'
LINES TERMINATED BY \'\\n\'
FROM test_table;
10.1.2 mysqldump导出
mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。
# 1.命令栏导出
$ mysqldump -u root -p --no-create-info \\
--tab=/tmp DB tbl
password ******
# 2.导出表到指定文件
$ mysqldump -u root -p DB tbl > dump.txt
password ******
# 3.导出整个数据库数据
$ mysqldump -u root -p DB > database_dump.txt
password ******
# 4.备份所有数据库
$ mysqldump -u root -p --all-databases > database_dump.txt
password ******
10.2 导入数据
10.2.1 LOAD DATA
# 1.导入dump.txt
LOAD DATA LOCAL INFILE \'dump.txt\' INTO TABLE mytbl;
# 2.明确指出列的分隔符和尾行标记
LOAD DATA LOCAL INFILE \'dump.txt\' INTO TABLE mytbl
FIELDS TERMINATED BY \':\'
LINES TERMINATED BY \'\\r\\n\';
# 3.指定列的顺序
LOAD DATA LOCAL INFILE \'dump.txt\'
INTO TABLE mytbl (b, c, a);
10.2.2 mysqldump导入
# 1.导入dump.txt
$ mysqlimport -u root -p --local database_name dump.txt
password *****
# 2.指定选项来设置指定格式
$ mysqlimport -u root -p --local --fields-terminated-by=":" \\
--lines-terminated-by="\\r\\n" database_name dump.txt
password *****
# 3.使用 --columns 选项来设置列的顺序
$ mysqlimport -u root -p --local --columns=b,c,a \\
database_name dump.txt
password *****
11. 图形化工具
MySQL Workbench 下载: https://dev.mysql.com/downloads/workbench/
12. 快速参考
SQL 语句 | 语法 |
---|---|
AND / OR | SELECT column_name(s) FROM table_name WHERE condition AND/OR condition |
ALTER TABLE | ALTER TABLE table_name ADD column_name datatype ALTER TABLE table_name DROP COLUMN column_name |
AS (alias) | SELECT column_name AS column_alias FROM table_name SELECT column_name FROM table_name AS table_alias |
BETWEEN | SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2 |
CREATE DATABASE | CREATE DATABASE database_name |
CREATE TABLE | CREATE TABLE table_name( column_name1 data_type, column_name2 data_type, column_name2 data_type, ...) |
CREATE INDEX | CREATE INDEX index_name ON table_name (column_name) CREATE UNIQUE INDEX index_name ON table_name (column_name) |
CREATE VIEW | CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition |
DELETE | DELETE FROM table_name WHERE some_column=some_value DELETE FROM table_name DELETE * FROM table_name |
DROP DATABASE | DROP DATABASE database_name |
DROP INDEX | DROP INDEX table_name.index_name (SQL Server) DROP INDEX index_name ON table_name (MS Access) DROP INDEX index_name (DB2/Oracle) ALTER TABLE table_name DROP INDEX index_name (MySQL) |
DROP TABLE | DROP TABLE table_name |
GROUP BY | SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name |
HAVING | SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value |
IN | SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,..) |
INSERT INTO | INSERT INTO table_nameVALUES (value1, value2, value3,....) INSERT INTO table_name(column1, column2, column3,...)VALUES (value1, value2, value3,....) |
INNER JOIN | SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
LEFT JOIN | SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
RIGHT JOIN | SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
FULL JOIN | SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name |
LIKE | SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern |
ORDER BY | SELECT column_name(s) FROM table_name ORDER BY column_name [ASC/DESC] |
SELECT | SELECT column_name(s) FROM table_name |
SELECT * | SELECT * FROM table_name |
SELECT DISTINCT | SELECT DISTINCT column_name(s) FROM table_name |
SELECT INTO | SELECT * INTO new_table_name [IN externaldatabase] FROM old_table_name SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_table_name |
SELECT TOP | SELECT TOP number/percent column_name(s) FROM table_name |
TRUNCATE TABLE | TRUNCATE TABLE table_name |
UNION | SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2 |
UNION ALL | SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2 |
UPDATE | UPDATE table_name SET column1=value, column2=value,... WHERE some_column=some_value |
WHERE | SELECT column_name(s) FROM table_name WHERE column_name operator value |
更新中...