您的位置:首页 > 数据库 > MySQL

Part02_MySQL对数据的基本操作

2012-04-21 15:54 519 查看
Part02_SQL对数据的基本操作

------------------------------------------------------------------------------------

内容大纲:

1.查询数据

2.插入数据

3.更新数据

4.删除数据



------------------------------------------------------------------------------------

正文:



------------------------------- [ 我是每章的分界线 ] -------------------------------

00.第10章 查询数据



--------------> 我是小节的小小分界线 <--------------(单表查询)

01.基本查询语句

SELECT 属性列表

FROM 表名和视图列表

[WHERE 条件表达式1]

[GROUP BY 属性名1 [H***ING 条件表达式2]]

[ORDER BY 属性名2 [ASC|DESC]]



02.使用“*”查询所有的字段

SELECT * FROM 表名;



03.查询条件(用在WHERE那里)

比较: =、<、<=、>、>=、!=、<>、!>、!=

指定范围:BETWEEN AND、NOT BETWEEN AND

指定集合:IN、NOT IN

匹配字符:LIKE、NOT LIKE

是否为空值:IS NULL、IS NOT NULL

多个查询条件:AND、OR



04.带IN关键字的查询

1.概念:判断某个字段是否在指定的集合中

2.语法:字段[NOT] IN (元素1, 元素2, 元素3)



05.带BETWEEN AND的范围查询

1.概念:判读某个字段的值是否在指定的范围内。

2.语法:(字段) [NOT] BETWEEN 取值1 AND 取值2



06.带LIKE的字符串匹配

1.概念:匹配字符串是否相等。

2.语法:(字段)[NOT] LIKE '字符串'

3.附注:字符串可以包含“%”或“_”,“%”代表任意长度的字符串,“_”表示任意的单个字符。

如:“%”中的b%k可代表 bk、buk、book、break...

“_”中的b_k代表 bok、buk、bak...



07.使查询结果不重复: SELECT DISTINCT 属性名



08.分组查询

0.语法:

GROUP BY 属性名 [H***ING 条件表达式][WITH ROLLUP]

1.单独使用GROUP BY关键字来分组

SELECT 属性列表 FROM 表名 ORDER BY 属性名2 [ASC|DESC]

2.GROUP BY 关键字与GROUP_CONCAT()函数一起用:以分组形式显示字段值

SELECT 属性列表, GROUP_CONCAT(字段) FROM 表名 GROUP BY 属性名2 [ASC|DESC]

3.GROUP BY 关键字与集合函数一起使用

SELECT 属性列表, 集合函数 FROM 表名 GROUP BY 属性名 [H***ING 条件表达式][WITH ROLLUP];



09.用LIMIT限制查询结果的数量

1.语法1:LIMIT 记录数;

2.语法2:LIMIT 初始记录,记录数; // 从下标“0”开始记数。



--------------> 我是小节的小小分界线 <--------------(使用集合函数查询)

10.使用集合函数

0.语法: SELECT 属性列表,集合函数 FROM ...

1.COUNT():统计记录的条数。

2.SUM():求和函数。(只能计算数值类型的字段)

3.***G():求平均值。

4.MAX():求最大值的函数。(可以计算数值和字符和字符串的最大值。)

5.MIN():求最小值的函数。



--------------> 我是小节的小小分界线 <--------------(连接查询)

11.连接查询的概念

连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据。

当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几个表。



12.内连接查询

1.概念:当两个或多个表中存在表示相同意义的字段时,可能通过该字段来连接这两个表;

当该字段的值相等时,就查询出该记录。

2.例:现在需要查询出employee表和department表中具有相同id的人的信息,用一张表输出结果。

SELECT num, name, employee.d_id, age, sex, d_name, function

FROM employee,department

WHERE employee.d_id = department.d_id; // 这里的d_id是两表共有的字段。



13.外连接查询

0.概念:指定字段进行查询连接两个或多个表,无论该字段取值是否相等,具有该字段的记录都能被查询出。

1.语法:SELECT 属性列表 FROM 表名1 LEFT|RIGHT JOIN 表名2 ON 表名1.属性名 = 表名2.属性2

2.左连接查询:可以查询出“表名1”所指的表中指定字段的所有的记录。

3.右连接查询:可以查询出“表名2”所指的表中指定字段的所有的记录。



--------------> 我是小节的小小分界线 <--------------(子查询)

14.子查询的概念

子查询是将一个查询语句嵌套在另一个查询语句中。内层查询语句的查询结果,可以为外层查询语句提供查询条件。



15.带IN关键字的子查询例子:

SELECT * FROM employee WHERE d_id IN (SELECT d_id FROM department);



16.带比较运算符的子查询例子:

SELECT name, score FROM computer_stu WHERE score >= (SELECT score FROM scholarship WHERE level=1);



17.带EXISTS关键字的子查询

0.概念:EXISTS关键字表示存在。

1.使用:使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个真假值。

2.作用:只有当内层语句返回true值时,外层查询语句才进行查询。

3.例子: SELECT * FROM employee WHERE EXISTS(SELECT d_name FROM department WHERE d_id=1005);



18.带ANY关键字的子查询(与带ALL关键字的用法一样,ALL关键字这里不做介绍)

0.概念:ANY关键字表示满足其中任一条件。

1.使用:ANY关键字通常与比较运算符一起使用。

使用ANY关键字时,只要满足内层查询语句返回的结果中的任何一个,就可以通过该条件来执行外层查询语句。

2.例:SELECT * FROM computer_stu WHERE score >= ANY(SELECT score FROM scholarship);



--------------> 我是小节的小小分界线 <--------------(合并查询结果)

19.合并查询结果的概念:将多个SELECT语句的查询结果合并到一起。



20.合并查询语句的语法:

SELECT 语句1

UNION | UNION ALL

SELECT 语句2

UNION | UNION ALL

SELECT 语句n;



21.UNION与UNION ALL的异同。

相同点:UNION关键字和UNION ALL关键字都可以合并查询结果。

不同点:UNION关键字合并查询结果时,需要将相同的记录消除掉。

而UNION ALL则相反,它不会消除掉相同的记录,而是所有的记录合并到一起。



--------------> 我是小节的小小分界线 <--------------(合并查询结果)

22.为表取别名

语法:表名 表的别名

作用:通过这种方式,“表的别名”就能在这次查询中代替“表名”了。

例子:SELECT * FROM department d WHERE d.d_id=1001; // 这里使用了d作为department的别名。



23.为字段取别名

语法:属性名 [AS] 别名

例子:SELECT d_id AS department_id, d_name AS department_name FROM department;



--------------> 我是小节的小小分界线 <--------------(使用正则表达式查询)

24.正则表达式的理解

正则表达式是用某种模式去匹配一类字符串的一个方式。



25.正则表达式的基本形式

属性名 REGEXP '匹配方式'



26.正则表达式的模式字符

^ 匹配字符串开始的部分 '^X'

$ 匹配字符串结构的部分 'X$'

. 代表字符串中的任意一个字符,包括回车和换行 '^X..X&'(两个任意字符)

[字符集合] 匹配“字符集合”中的任何一个字符。 (相当于or)

[^字符集合] 匹配除了“字符集合”外的任何一个字符。

S1 | S2 | S3 匹配S1、S2和S3中任意一个字符串

* 代表多个该符号之前的字符,包括0和1个

+ 代表多个该符号之前的字符,包括1个

字符串{N} 字符串出现N次

字符串{M, N} 字符串出现至少M次,最多N次



------------------------------- [ 我是每章的分界线 ] -------------------------------

00.第11章 插入、更新与删除数据



01.为表的所有的字段插入数据

1.不指定具体的字段名:INSERT INTO 表名 VALUES(值1, 值2, ..., 值n);

2.列出所有的字段:INSERT INTO 表名(属性1, 属性2, ..., 属性n) VALUES(值1, 值2,..., 值n);



02.为表的指定字段插入数据

注:如字段没赋值,数据库系统会为其插入默认值,若无设默认值,而且是非空,就必须为其赋值。

INSERT INTO 表名(属性1, 属性2, ..., 属性m) VALUES(值1, 值2, ..., 值m);



03.同时插入多条记录

INSERT INTO 表名(属性列表) VALUES(取值列表1), (取值列表2), ...,(取值列表n);



04.将查询结果插入到表中

INSERT INTO 表名1(属性列表1)

SELECT 属性列表2 FROM 表名2 WHERE 条件表达式;



05.更新数据

UPDATE 表名

SET 属性名1=取值1, 属性名2=取值2,

...,

属性名n=取值n

WHERE 条件表达式; // 这一句决定了要改哪行的数据



06.删除数据

DELETE FROM 表名 [WHERE 条件表达式];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: