现在的位置: 首页 > 综合 > 正文

Part02_MySQL对数据的基本操作

2014年01月22日 ⁄ 综合 ⁄ 共 4584字 ⁄ 字号 评论关闭

Part02_SQL对数据的基本操作

------------------------------------------------------------------------------------
内容大纲:
1.查询数据
2.插入数据
3.更新数据
4.删除数据

 

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

正文:

 

------------------------------- [ 我是每章的分界线 ] -------------------------------
00.第10章 查询数据

 

--------------> 我是小节的小小分界线 <--------------(单表查询)
01.基本查询语句
   SELECT 属性列表
          FROM 表名和视图列表
          [WHERE 条件表达式1]
          [GROUP BY 属性名1 [HAVING 条件表达式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 属性名 [HAVING 条件表达式][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 属性名 [HAVING 条件表达式][WITH ROLLUP];

 

09.用LIMIT限制查询结果的数量
   1.语法1:LIMIT 记录数;
   2.语法2:LIMIT 初始记录,记录数;   // 从下标“0”开始记数。

 

--------------> 我是小节的小小分界线 <--------------(使用集合函数查询)
10.使用集合函数
   0.语法: SELECT 属性列表,集合函数 FROM ...
   1.COUNT():统计记录的条数。
   2.SUM():求和函数。(只能计算数值类型的字段)
   3.AVG():求平均值。
   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 条件表达式];

 

 

抱歉!评论已关闭.