· SQL:结构化查询语言(Structured Query Language)
· DBMS:数据库管理系统
· 关系数据库:一个个 table 就是“关系”的意思。
· 一般将查询关键字大写
· SQL语言包含了三部分:
DDL:数据定义语言(Data Definition Language)
DML:数据操作语言(Data Manipalolion Language)
DCL:数据控制语言(Data Contral Language)
· 数据库中,库、表、字段等的命名推荐使用 xxx_xxx_xxx 的样式。
· 某字段为 NULL 并不表示为零值或者为空字符串
NULL 不参与计算
· <>:表示判断“不等于”
· 在SQL语句中,任何允许有表达式的地方,也允许有子查询。
· COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入总数)
COUNT(*) 函数返回表中的记录数
COUNT(DISTINCT column_name) 函数返回指定列中的不同值的数目
· MAX(column_name)函数返回一列中的最大值。NULL 值不包括在计算中。
MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
如:SELECT MAX(OrderPrice) FROM Orders
· 在SQL中,有如下表示法:
数据库.表
表.字段
说明:后者在多表查询/嵌套查询中更常用,它可以写在 SELECT 或者 WHERE 的后面。
如 SELECT table1.*,table2.col3 FROM table1,table2
WHERE tabel1.col1 = table2.col1 AND tabel1.col2 = table2.col2
即结果集为 tabel1.col1 = table2.col1 并且 tabel1.col2 = table2.col2 的记录,此外虚拟表中只有 table1 的所有列和 table2 的 col3 列。
· 授权:GRANT。语法:GRANT …… ON …… TO ……,意思是:对谁谁谁,在哪些表上或所有上,有什么什么样的权力
例如:GRANT SELECT ON 数据库.* TO '用户名'@登录主机 IDENTIFIED BY '密码'
取消授权:REVOKE
· DROP:
删除索引:各种数据库语法不用
删除整个表:DROP TABLE 表名称
删除整个数据库:DROP DATABASE 数据库名称
DELETE:
删除某行:DELETE FROM 表名称 WHERE 列名称 = 值
删除整个表的数据:DELETE FROM table_name,或者:DELETE * FROM table_name,或者TRUNCATE TABLE table_name
· “索引”,就是一个表的指针表
· SQL语句支持加减乘除
· 连接字符串使用“+”或者“||”
· 函数SUBSTRING
SUBSTRING(string,pos)
或,SUBSTRING(string FROM pos)
SUBSTRING(string,pos,length)
或,SUBSTRING(string FROM pos FOR length)
返回的是从 pos 开始,一共 length 个字符的子串。其中原串以 1 为第一个元素!
没有 length 参数的表示一直到string的结束。
另外,string可以是常量(用引号引起来),也可以是表中的字段名
· SELECT语句:
SELECT column_list(多个列,以逗号分隔)
FROM table_list(多个表)
[WHERE search_condition]
[GROUP BY grouping_condition]
[HAVING search_condition]
[ORDER BY ordering_condition]
真实的执行过程:
ORDER BY( SELECT( HAVING( GROUP BY( WHERE( FROM ……)))))。 !!!
说明:
WHERE:过滤行
HAVING:过滤组
GROUP BY:会自动将分组的结果按数字/字母的顺序升序排列
ORDER BY …… (ASC/DESC):是在最后一步进行排序的。另外,若是字符串,是按照从左到右的顺序依次排序的。进行排序的参数字段可以有多个[size=x-small][/size]
· LIKE:
%:匹配任意字符串,包括零个字符,
*:匹配一个字符
如果需要将“%”“*”看做一个字符,而不是通配符,则需要在每一个前面使用转义符“#”
·UNION(并集):
合并两个或多个 SELECT 语句的结果集。但是,每个SELECT查询的结果集必须是相同的列数。
· 联合(Join):
· 基本联合:
FROM table1,table2
即一个表的每一行与另一个表的每一行都相联合。--笛卡尔乘积。
· 条件联合:
FROM table1,table2 WHERE table1.column1 = table2.column2
只有 table1 与 table2 中字段 column1 和 column2 的值相等的行才联合在一起。另外,产生的虚拟表不一定是一对一的关系。另外,这个 = 关系,可以变成: <, >,或者 <> 关系。
· 以及其他联合,内部/外部联合,并联合等
· 别名:
SELECT t1.*,t2.col2,t2.col3 [b]FROM table1 t1,table2 t2[/b]
WHERE t1.col1 = t2.col1
注意:别名与表名不要混合使用。
· 有时,为了性能上的考虑,即便一组数据是可以也是应当放在一张表中的,但是,由于一部分数据相对静止,变化性较小,而另一部分可能经常变动,因此,会考虑分成两种表。
· IN:
使用 IN 允许我们在 WHERE 子句中规定多个值。
WHERE column_name IN (value1,value2,...):即字段 column_name 中值为value1 或 value2 或 ...的行。
注意:在使用嵌套查询时,IN (SELECT ......),括号中SELECT子句返回的结果集一定是单列的,即SELECT的后面必须跟上一个字段名。
· 允许多重嵌套查询
· 光标定位一个特定的行。当光标被激活,你可以在由光标所指的行上完成选择、修改、删除的操作。
· DBMS:数据库管理系统
· 关系数据库:一个个 table 就是“关系”的意思。
· 一般将查询关键字大写
· SQL语言包含了三部分:
DDL:数据定义语言(Data Definition Language)
DML:数据操作语言(Data Manipalolion Language)
DCL:数据控制语言(Data Contral Language)
· 数据库中,库、表、字段等的命名推荐使用 xxx_xxx_xxx 的样式。
· 某字段为 NULL 并不表示为零值或者为空字符串
NULL 不参与计算
· <>:表示判断“不等于”
· 在SQL语句中,任何允许有表达式的地方,也允许有子查询。
· COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入总数)
COUNT(*) 函数返回表中的记录数
COUNT(DISTINCT column_name) 函数返回指定列中的不同值的数目
· MAX(column_name)函数返回一列中的最大值。NULL 值不包括在计算中。
MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
如:SELECT MAX(OrderPrice) FROM Orders
· 在SQL中,有如下表示法:
数据库.表
表.字段
说明:后者在多表查询/嵌套查询中更常用,它可以写在 SELECT 或者 WHERE 的后面。
如 SELECT table1.*,table2.col3 FROM table1,table2
WHERE tabel1.col1 = table2.col1 AND tabel1.col2 = table2.col2
即结果集为 tabel1.col1 = table2.col1 并且 tabel1.col2 = table2.col2 的记录,此外虚拟表中只有 table1 的所有列和 table2 的 col3 列。
· 授权:GRANT。语法:GRANT …… ON …… TO ……,意思是:对谁谁谁,在哪些表上或所有上,有什么什么样的权力
例如:GRANT SELECT ON 数据库.* TO '用户名'@登录主机 IDENTIFIED BY '密码'
取消授权:REVOKE
· DROP:
删除索引:各种数据库语法不用
删除整个表:DROP TABLE 表名称
删除整个数据库:DROP DATABASE 数据库名称
DELETE:
删除某行:DELETE FROM 表名称 WHERE 列名称 = 值
删除整个表的数据:DELETE FROM table_name,或者:DELETE * FROM table_name,或者TRUNCATE TABLE table_name
· “索引”,就是一个表的指针表
· SQL语句支持加减乘除
· 连接字符串使用“+”或者“||”
· 函数SUBSTRING
SUBSTRING(string,pos)
或,SUBSTRING(string FROM pos)
SUBSTRING(string,pos,length)
或,SUBSTRING(string FROM pos FOR length)
返回的是从 pos 开始,一共 length 个字符的子串。其中原串以 1 为第一个元素!
没有 length 参数的表示一直到string的结束。
另外,string可以是常量(用引号引起来),也可以是表中的字段名
· SELECT语句:
SELECT column_list(多个列,以逗号分隔)
FROM table_list(多个表)
[WHERE search_condition]
[GROUP BY grouping_condition]
[HAVING search_condition]
[ORDER BY ordering_condition]
真实的执行过程:
ORDER BY( SELECT( HAVING( GROUP BY( WHERE( FROM ……)))))。 !!!
说明:
WHERE:过滤行
HAVING:过滤组
GROUP BY:会自动将分组的结果按数字/字母的顺序升序排列
ORDER BY …… (ASC/DESC):是在最后一步进行排序的。另外,若是字符串,是按照从左到右的顺序依次排序的。进行排序的参数字段可以有多个[size=x-small][/size]
· LIKE:
%:匹配任意字符串,包括零个字符,
*:匹配一个字符
如果需要将“%”“*”看做一个字符,而不是通配符,则需要在每一个前面使用转义符“#”
·UNION(并集):
合并两个或多个 SELECT 语句的结果集。但是,每个SELECT查询的结果集必须是相同的列数。
· 联合(Join):
· 基本联合:
FROM table1,table2
即一个表的每一行与另一个表的每一行都相联合。--笛卡尔乘积。
· 条件联合:
FROM table1,table2 WHERE table1.column1 = table2.column2
只有 table1 与 table2 中字段 column1 和 column2 的值相等的行才联合在一起。另外,产生的虚拟表不一定是一对一的关系。另外,这个 = 关系,可以变成: <, >,或者 <> 关系。
· 以及其他联合,内部/外部联合,并联合等
· 别名:
SELECT t1.*,t2.col2,t2.col3 [b]FROM table1 t1,table2 t2[/b]
WHERE t1.col1 = t2.col1
注意:别名与表名不要混合使用。
· 有时,为了性能上的考虑,即便一组数据是可以也是应当放在一张表中的,但是,由于一部分数据相对静止,变化性较小,而另一部分可能经常变动,因此,会考虑分成两种表。
· IN:
使用 IN 允许我们在 WHERE 子句中规定多个值。
WHERE column_name IN (value1,value2,...):即字段 column_name 中值为value1 或 value2 或 ...的行。
注意:在使用嵌套查询时,IN (SELECT ......),括号中SELECT子句返回的结果集一定是单列的,即SELECT的后面必须跟上一个字段名。
· 允许多重嵌套查询
· 光标定位一个特定的行。当光标被激活,你可以在由光标所指的行上完成选择、修改、删除的操作。