CREATE DATABASE database; //创建一个数据库 DROP DATABASE database; //删除一个数据库
CREATE TABLE table (name1 type(size), name2 type(size), …); //创建一个表,其中所有数据类型包括:(不同数据库有所不同) 整数:integer(int) int(size) smallint(size) tinyint(size) 小数:decimal(size, d) numeric(size, d) //size是最大为数,d为小数点后位数 固定长度字符串:char(size) //size是固定长度 可变长度字符串:vachar(size) //size是最大长度 日期:date(yyyymmdd)
DROP TABLE table; //删除一个表,包括删除表的结构、属性和索引等 TRUNCATE TABLE table; //仅删除表中的所有数据,表依然存在 DELETE FROM table WHERE name op value; //删除表中某些记录
ALTER TABLE table ADD name type(size); //在表中添加新的列 ALTER TABLE table DROP COLUMN name; //删除表中某列
SELECT name1, name2,….. FROM table; SELECT * FROM table; SELECT DISTINCT name1, DISTINCT name2 FROM table; //返回不重复的值,每个DISTINCT只负责一个列名 SELECT name1, name2 FROM table ORDER BY name1, name2 //先按name1顺序排,再按name2顺序排 SELECT name1, name2 FROM table ORDER BY name1 ASC, name2 DESC; //ASC是升序排序,DESC是降序排序,每个ASC/DEST只负责一个列名 SELECT name FROM table WHERE name op value; //AND、OR可将WHERE中多个条件结合起来(AND优先级比OR大) //op is = <> > >= < <= BETWEEN LIKE SELECT name FROM table WHERE name LIKE ‘a%’; //LIKE中使用%(任意字符,包括0个字符)和_(任意单个字符)作为通配符 SELECT name FROM table WHERE name IN (value1, value2, ….); //用IN或者NOT IN确定返回的name在/不在之中,也可以使用SELECT子句如IN (SELECT .......) SELECT name FROM table WHERE name BETWEEN value AND value; //BETWEEN…AND…或者NOT BETWEEN…AND…之间的数可以是数值、文本(字典序)或者日期。每个数据库对BETWEEN的处理是有差异的,具体体现在头尾是否开区间的问题 SELECT name AS othername FROM table; SELECT name FROM table AS othertable; //每个AS对应一个列名或者表名 SELECT table1.name, table2.name FROM table1, table2 WHERE table1.name = table2.name; SELECT table1.name FROM table1, table2 WHERE table1.name = table2.name AND table2.name = value; //利用主键和外键的联系进行多表之间的联合查找 SELECT table1.name, table2.name FROM table1 INNER JOIN table2 ON table1.key = table2.foreignkey; //内连接,某表的主键和该表具有的其他表的外键,返回匹配的行 SELECT table1.name, table2.name FROM table1 LEFT JOIN table2 ON table1.key = table2.foreignkey; //返回table1的所有行,即使第二个表没有匹配的行 SELECT table1.name, table2.name FROM table1 RIGHT JOIN table2 ON table1.key = table2.foreignkey; //返回table2的所有行,即使第一个表没有匹配的行 SELECT name FROM table1 UNION SELECT name FROM table2; //使用UNION,被选取的列的数据类型应该是相同的,且只有不同的值会被选取 SELECT name FROM table1 UNION ALL SELECT name FROM table2; //UNION ALL会列出所有的值
INSERT INTO table VALUES (value1, value2,……); INSERT INTO table (name1, name2,….) VALUES (value1, value2);
UPDATE table SET name = value WHERE name op value;
GROUP BY: 合计函数常常需要添加GROUP BY功能,例如使用SUM(name)就需要使用GROUP BY name来计算。 SELECT name, SUM(name) FROM table GROUP BY name;
HAVING: WHERE无法应用于合计函数条件测试,所以使用HAVING对合计函数进行测试。 SELECT name, SUM(name) FROM table GROUP BY name HAVING SUM(name) op value; //HAVING与WHERE一样,可使用op、AND/OR等各种操作
Aggregate合计函数: 该函数操作面向一系列的值,返回一个单一的值。如果在SELECT语句的项目列表中的众多其他表达式中使用SELECT语句,则这个SELECT必须使用GROUP BY语句。Access和SQL Server中的合计函数如下: AVG(name):某列平均值 COUNT(name):某列行数(不包括NULL值) COUNT(*):被选总行数 FIRST(name):指定域中的第一个记录的值(SQL Server 2000不支持) LAST(name):指定域中的最后一个记录的值(SQL Server 2000不支持) MAX(name):某列最高值 MIN(name):某列最低值 SUM(name):某列总和
Scalar函数: 该函数面向单一的值,并返回基于输入值的一个单一的值。Access中的Scalar函数如下: UCASE(c):将某个域转换为大写 LCASE(C):将某个域转换为小写 MIN(c, start[, end]):从某个文本里提取字符 LEN(c):返回某个文本域的长度 INSTR(c, char):返回某个文本域中指定字符的位置 LEFT(c, numer):返回某个被请求文本域的左侧部分 RIGHT(c, numer):返回某个被请求文本域的右侧部分 ROUND(c, decimals):对某个数值域进行指定小数位数的四舍五入 MOD(x, y):返回除法操作的余数 NOW():返回当前系统日期 FORMAT(c, format):改变某个域的显示方式
下面是一些不常用的SQL语句功能,可以参考:
INDEX:索引被创建于已有的表中,它可使对行的定位更加快速有效,可以在表格的一个或者多个列上创建索引,每个索引都会被起个名字,用户无法看到索引,只能被用来加速查询。更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,建议仅在常常用于搜索的列上面创建索引。 CREATE UNIQUE INDEX indexname ON table (name1, name2); //创建一个唯一的索引,即两行不能有相同的索引值 CREATE INDEX indexname ON table (name1, name2); //创建一个简单索引,可以使用重复的值 CREATE INDEX indexname ON table (name DESC); //用DESC来降序索引某个列的值 DROP INDEX indexname ON table; //Access和MS SQLJet的做法 DROP INDEX table.indexname; //MS SQL Server的做法 DROP INDEX indexname; //DB2和Oracle的做法 ALTER TABLE table DROP INDEX indexname; //MySQL的做法
SELECT name INTO newtable [IN ‘externaldatabase’] FROM table WHERE name op value; 创建表的备份复件或者用于对记录进行存档。 SELECT * INTO newtable [IN ‘externaldatabase’] FROM table; SELECT name1, name2 INTO newtable [IN ‘externaldatabase’] FROM table; SELECT name INTO newtable FROM table WHERE name op value; SELECT name INTO newtable FROM table1 INNER JOIN table2 ON table1.key = table2.foreignkey;
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|
留言簿(3)
随笔分类(93)
收藏夹(2)
搜索
积分与排名
最新评论
阅读排行榜
|
|