MySQL---------基本使用和查询命令

一,MySQL的基本使用

1. 库,表 ,表结构,数据

mysql -u 用户名 -p 密码 ---------->登录命令

show databases; ---------------------->查看所有库名

creat databases 数据库名; ---------------------->创建数据库

use 数据库名; ---------------------->进入数据库

describe 表名; ---------------------->查看表结构

INSERT INTO 表名(field1,field2,field3,…) VALUES(‘field1的值’field2的值【不带’’,说明不是字符】,‘field3的值’,…);; ---------------------->增加“一行”数据

select * from 表名; ---------------------->列出所有数据

2.创建数据库,表,插入数据

2.1 创建库,表

  • 在这里插入图片描述

NOT NULL 为约束条件 -->非空

扫描二维码关注公众号,回复: 9169439 查看本文章
  • 在这里插入图片描述

2.2插入数据记录

INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('a1',101,'apple',5.2);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('b1',101,'blackberry',10.2);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('bs1',102,'orange',11.2);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('bs2',105,'melon',8.2);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('t1',102,'banana',10.3);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('t2',102,'grape', 5.3);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('o2',103,'coconut',9.2);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('c0',101,'cherry',3.2);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('a2',103,'apricot',2.2);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('l2',104,'lemon',6.4);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('b2',104,'berry',7.6);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('m1',106,'mango',15.6);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('m2',105,'xbabay',2.6);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('t4',107,'xbababa',3.6);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('m3',105,'xxtt',11.6);
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('b5',107,'xxxx',3.6 );

2.3 列出数据

  • 在这里插入图片描述

3.删除数据

delete from 表名

二,SQL查询语句

1. ????sql语句的执行顺序????

SQL执行顺序
 (1)from   
    (2) on 
       (3) join 
           (4) where 
                (5)group by 
                      (6) avg,sum.... 
                                (7)having 
                                         (8) select 
                                               (9) distinct 
                                                         (10) order by

2. 单表查询语句

1.1查询所有字段

SELECT * FROM 表名;

  • 在这里插入图片描述
1.2 列出指定field(可以理解为列)

SELECT field1 , foeld2 FROM 表;

  • -
1.3 where语句添加过滤条件

①查询指定字段

  • 在这里插入图片描述
    ②or 或选择
    在这里插入图片描述
    ③and 与选择
    在这里插入图片描述
  • 在这里插入图片描述

④带IN字查询
IN关键字:IN(xx,yy,…) 满足条件范围内的一个值即为匹配项

  • 在这里插入图片描述

⑤带BETWEEN AND的范围查询
BETWEEN … AND … : 在…到…范围内的值即为匹配项

  • 在这里插入图片描述

⑥模糊查找 -->like

LIKE: 相当于模糊查询,和LIKE一起使用的通配符有  "%"、"_"  
  "%":作用是能匹配任意长度的字符。
  "_":只能匹配任意一个字符

		姓名 like 【张% |  张--】
  • 在这里插入图片描述

⑦查询空值

空值不是指为空字符串""或者0,一般表示数据未知或者在以后在添加数据,也就是在添加数据时,其字段上默认为NULL,也就是说,如果该字段上不插入任何值,就为NULL。此时就可以查询出来。
 
  SELECT * FROM 表名 WHERE 字段名 IS NULL;  //查询字段名是NULL的记录
      SELECT * FROM 表名 WHERE 字段名 IS NOT NULL;  //查询字段名不是NULL的记录
1.4 去重复查询distinct
  • 在这里插入图片描述
1.5 对查询结果排序 ORDER BY
order by   field_name     [asc]  升序排列  (默认)
order by    field_name    desc   降序排列

  • 在这里插入图片描述
  • 在这里插入图片描述
1.6 集合函数查询

①COUNT()函数

 COUNT(*):计算表中的总的行数,不管某列有数值或者为空值,因为*就是代表查询表中所有的数据行。
 COUNT(字段名):计算该字段名下总的行数,计算时会忽略空值的行,也就是NULL值的行。

-在这里插入图片描述

②sum()函数

  • 在这里插入图片描述

④AVG()函数

  • 在这里插入图片描述

⑤MAX()函数、MIN()函数

  • 在这里插入图片描述
1.7 分组查询 (GROUP BY)

适合用于表的记录比较混合

l例如:查询男女生的人数
在没有学习分组查询之前,我们可以安装常规的思路解决查询需求
select count(*) from student where sex=‘男’

select count(*) from student where sex=‘女’

那么现在又要个需要时,查询每个班级的总人数

如果按照常规解决查询,那么我们应该思考的是
1.每个班级,我们并不知道在表里有哪些班级,那么我们where 后的条件如何写
2.如果该表里有1000个班级,那么我难道要写一千条where查询语句
面对这样的问题 sql server为我们准备了Group by 关键字实现分组查询

①不带过滤条件的分组查询

  • 在这里插入图片描述

②带过滤条件的分组查询

分组之后还可以进行条件过滤,将不想要的分组丢弃,使用关键字 HAVING

HAVING和WHERE都是进行条件过滤的,区别就在于 WHERE 是在分组之前进行过滤,而HAVING是在分组之后进行条件过滤。

2.1 having 和 group by连用

  • 在这里插入图片描述

2.1 where 和group by连用

  • 在这里插入图片描述
    2.3 where和group by和having连用

  • 在这里插入图片描述

1.8 使用LIMIT限制查询结果的数量
select * from 表名   limit 4;      【显示前4行】
select * from 表名   limit 4,3;     【从第四行开始显示,显示三行】     --->第一行是0行
  • 在这里插入图片描述

  • 在这里插入图片描述

3. 多表查询语句

  • 在这里插入图片描述
INSERT INTO suppliers VALUES(101,'Supplies A','Tianjin','400000','18075');
INSERT INTO suppliers VALUES(102,'Supplies B','Chongqing','400000','44333');
INSERT INTO suppliers VALUES(103,'Supplies C','Shanghai','400000','90046');
INSERT INTO suppliers VALUES(104,'Supplies D','Zhongshan','400000','11111');
INSERT INTO suppliers VALUES(105,'Supplies E','Taiyuang','400000','22222');
INSERT INTO suppliers VALUES(106,'Supplies F','Beijing','400000','45678');
INSERT INTO suppliers VALUES(107,'Supplies G','Zhengzhou','400000','33332');
INSERT INTO suppliers VALUES(108,'Supplies H','Xiaan','400000','44442');
INSERT INTO suppliers VALUES(109,'Supplies I','Fuzhou','400000','55552');
INSERT INTO suppliers VALUES(110,'Supplies J','Xiamen','400000','66662');
3.1 普通双表连接查询

查询两表字段一致的数据

  • 在这里插入图片描述
3.2 内,连接查询

格式:表名 INNER JOIN 表名 ON 连接条件
内连接是将符合查询条件(符合连接条件)的行返回,也就是相关联的行就返回

外连接除了返回相关联的行之外,将没有关联的行也会显示出来。

  • 1.左外联查询:格式: 表名 LEFT JOIN 表名 ON 条件;
    返回包括左表中的所有记录和右表中连接字段相等的记录,通俗点讲,就是除了显示相关联的行,还会将左表中的所有记录行都显示出来。
  • 2.右外联查询:格式: 表名 RIGHT JOIN 表名 ON 条件
    返回包括右表中的所有记录和右表中连接字段相等的记录

为什么需要将不没关联的行也显示出来呢?这就要根据不同的业务需求了,就比如,order和customers,顾客可以有订单也可以没订单,现在需要知道所有顾客的下单情况,而我们不能够只查询出有订单的用户,而把没订单的用户丢在一边不显示,这个就跟我们的业务需求不相符了,有人说,既然知道了有订单的顾客,通过单表查询出来不包含这些有订单顾客,不就能达到我们的要求吗,这样是可以,但是很麻烦,如何能够将其一起显示并且不那么麻烦呢?为了解决这个问题,就有了外连接查询这个东西了

①内连接查询

  • 在这里插入图片描述

②外连接查询

左外连接查询

  • 在这里插入图片描述
3.3 子查询
将查询一张表得到的结果来充当另一个查询的条件,这样嵌套的查询就称为子查询
    
子查询(一张表的查询结果做条件)
		外层查询能否执行-->取决与内层
			①ANY【任意】  
			②SOME【一些】     
			③ALL【】 关键字
				   eg:ANY(SELECT num2 from tables2)

①any和some

ANY和SOME关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE,通俗点讲,只要满足任意一个条件,就返回TRUE。

  • 在这里插入图片描述

②ALL

  • 在这里插入图片描述

④带EXISTS(是否存在)关键字的子查询

EXISTS关键字后面的参数是任意一个子查询,如果子查询有返回记录行,则为TRUE,外层查询语句将会进行查询,如果子查询没有返回任何记录行,则为FALSE,外层查询语句将不会进行查询。

  • 在这里插入图片描述

⑤带IN的子查询
外层某数据是否在内层 --> 若在 --> 执行

  • 在这里插入图片描述

⑥合并结果查询

利用UNION关键字,可以将查询出的结果合并到一张结果集中,也就是通过UNION关键字将多条SELECT语句连接起来,注意,合并结果集,只是增加了表中的记录,并不是将表中的字段增加,仅仅是将记录行合并到一起。其显示的字段应该是相同的,不然不能合并。

UNION:执行的时候会去重,排序
UNION ALL:不删除重复航也不对结果进行自动排序。

  • 在这里插入图片描述
发布了49 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Z_Grant/article/details/98214945