MySql增删改查
插入数据
MySQL中,通过INSERT语句来插入新的数据。使用INSERT语句来可以同时为表的所有字段插入数据,也可以为表的指定字段插入数据。INSERT语句可以同时插入多条记录,还可以将一个表中查询出来的数据插入到另一个表中。
INSERT语句中不指定具体的字段名,其基本语句形式如下:
INSERT INTO 表名 values(值1,值2,...值n);
INSERT语句中列出所有或部分字段,其基本语句形式如下:
INSERT INTO 表名 (属性1,属性2,...属性n)values(值1,值2,...值n);
MySQL中,一个INSERT语句可以同时插入多条记录。其基本语法形式如下:
INSERT into 表名[(属性列表)] values (取值列表1),(取值列表2),...(取值列表n);
INSERT语句可以将一个表中查询出来的数据插入到另一表中。这样,可以方便不同表之间进行数据交换。其基本语法形式如下:
INSERT into 表名1(属性列表1) select 属性列表2 from 表名2 where 条件表达式;
更新数据
更新数据是更新表中已经存在的记录。通过这种方式可以改变表中已经存在的数据。MySQL中,通过UPDATE语句来更新数据。其基本语法形式如下:
UPDATE 表名 set 属性名1=取值1,属性名2=取值2,..., 属性名n=取值n where 条件表达式;
删除数据
删除数据是删除表中已经存在的记录。通过这种方式可以删除表中不再使用的记录。MySQL中,使用DELETE语句来删除数据。其基本语法形式如下:
DELETE from 表名 [where 条件表达式];
带IN关键字的查询
IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足查询条件,该记录将被查询出来。如果不在集合中,则不满足查询条件。其语法规则如下:
[not] in (元素1,元素2,...,元素n)
带BETWEEN AND的范围查询
BETWEEN AND关键字可以判断某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足查询条件,该记录将被查询出来。如果不在指定范围内,则不满足查询条件。其语法规则如下:
[NOT] BETWEEN 取值1 AND 取值2
带LIKE的字符匹配查询
LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该记录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:
[NOT] LIKE ‘字符串’
查询空值
  IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其语法规则如下:
IS [NOT] NULL
其中,“NOT”是可选参数,加上NOT表示字段不是空值时满足条件。
分组查询
GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组,其语法规则如下:
GROUP BY 属性名 [HAVING 条件表达式] [with rollup]
GROUP BY关键字与GROUP_CONCAT()函数一起使用
这里先使用GROUP BY字段先进行分组查询,然后再使用GROUP_CONCAT()函数将每个分组的name字段的值显示
      
GROUP BY关键字与HAVING一起使用:先使用GROUP BY字段先进行分组查询,然后显示记录数大于等于多少的分组
select sex,count(sex) from t_stu group by sex having count(sex) >3;
用LIMIT限制查询结果的数量
  查询数据时,可能会查询出很多的记录。而银行需要的记录可能只是很少的一部分。这样就需要来限制查询结果的数量。LIMIT是MySQL中的一个特殊关键字。其中可以用来指定查询结果从哪条记录开始显示。还可以指定一共显示多少条记录。LIMIT关键字有两种使用方式。这两种方式分别是不指定初始位置和指定初始位置。
1.不指定初始位置
显示前几条
select * from t_stu limit 4;//前面4条
2.指定初始位置
指定从第几条开始显示,然后显示多少条,0代表的是第1条,依次类推~
select * from t_stu limit 0,4;
内连接查询
内连接查询是一种最常用的连接查询。内连接查询可以查询两个或两个以上的表。当两个表中存在表示相同意义的字段时,可以通过该字段来连接这两个表。当该字段的值相等时,就查询出该记录。
select * from t_stu,t_score where t_stu.stu_id = t_score.stu_id;
外连接查询
  外连接查询可以查询两个或两个以上的表。外连接查询也需要通过指定字段来进行连接。当该字段取值相等时,可以查询出该记录。而且,该字段不相等的记录也可以查询出来。外连接查询包括左连接查询和右连接查询。其基本语法如下:
SELECT 属性名列表 from 表名1 left|right join 表名2 on 表名1.属性名1=表名2.属性名2
产生一个表存在而另一个表不存在的数据集
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableB.id IS null
带EXISTS关键字的子查询
  EXISTS关键字表示存在。使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个真假值。如果内层查询语句查询到满足条件的记录,就返回一个真值(true)。否则,就返回一个假值(FALSE)。当返回的值是真值时,外层查询语句将进行查询,当返回值是假值时,外层查询语句不进行查询或者查询不出任何记录。
select * from t_stu where exists(select name from t_stu where name='Lucy');
带ANY关键字的子查询
  ANY关键字表示满足其中任一条件。使用ANY关键字时,只要满足内层查询语句返回的结果中的任何一个,就可以通过该条件来执行外层查询语句。例如,需要查询哪些同学能够获得奖学金。那么,首先必须从奖学金表中查询出各种奖学金要求的最低分。只要一个同学的成绩高于不同奖学金的最低分的任何一个,这个同学就可以获得奖学金。ANY关键字通常与比较运算符一起使用。
select * from t_stu where score>=any(select score from scholarieship);
带ALL关键字的子查询
  ALL关键字表示满足所有条件。使用ALL关键字时,只有满足内层查询语句返回的所有结果,才可以执行外层查询语句。例如,需要查询哪些同学能够获得一等奖学金。首先必须从奖学金表中查询出各种奖学金要求的最低分。因为一等奖学金要求的分数最高,只有当同学的成绩高于所有奖学金的最低分时,才可能获得一等奖学金。ALL关键字也经常与比较运算符一起使用。如图:
select * from t_stu where score >=all(select score from scholarieship);
合并查询结果
  合并查询结果是将多个SELECT语句的查询结果合并到一起。因为某种情况下,需要将几个SELECT语句查询出来的结果合并起来显示。例如,现在需要显示公司甲和公司乙这两个公司所有员工的信息。这就需要从公司甲中查询出所有员工的信息,再从公司乙中查询出所有公司的信息。然后将两次查询到的结果合并到一起。进行合并操作使用UNION和UNION ALL关键字。
使用UNION关键字时,数据库系统会将所有的查询结果合并到一起,然后去掉相同的记录。而UNION ALL关键字则只是简单的合并到一起。其语法规则如下:
SELECT 语句1 UNION|UNION ALL SELECT 语句2 UNION|UNION ALL........ SELECT 语句n;
为表取别名
当表的名称特别长时,在查询时直接使用表名很不方便。这时可以为表取一个别名。用这个别名代替表的名称。
MySQL中为表取别名的基本形式如下:
表名 表的别名
为字段取别名
当查询数据时,MySQL会显示每个输出列的名词。默认的情况下,显示的列明是创建表定义的列名。MySQL中为字段取别名的基本形式如下:属性名 [AS] 别名
使用正则表达式查询
MySQL中,使用REGFEXP关键字来匹配查询正则表达式。
其基本形式如下:属性名 regexp ‘匹配方式’
使用字符“^”可以匹配以特定字符或字符串开头的记录
select * from t_stu where name regexp '^L';
select * from t_stu where name regexp 'gg$';//以特定字符串结尾
方括号([])可以将需要查询字符组成一个字符集
select * from t_stu where name regexp '[exg]'; select * from t_stu where name regexp 'ex';//匹配特定的字符
select * from t_stu where name regexp 'a{3,4}';//字符a出现至少3到至多4次
Inner join
Inner join产生的结果集中,是A和B的交集。
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
Full outer join
Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
参考:
https://blog.csdn.net/qq_33642117/article/details/76736015
                    
                
                
            
        
浙公网安备 33010602011771号