mysql sql语句可以分多行显示 询表中的所有列或部分列 as 取别名 case 列值运算 distinct 消除重复项 where 条件查询 and or not 逻辑运算 between and 范围比较 like 模糊查询 in 过滤查询 空值查询 not的位置 多表查询

虚拟机: ssh  test@192.168.245.189 密码:test
mysql: mysql -h 192.168.245.189 -u root -P 3306 -p123

数据库查询语句汇总


SELECT * FROM game;
SELECT * FROM 王者荣耀.game AS zz;
SELECT 类型 FROM game;
SELECT DISTINCT 类型 FROM game;
SELECT DISTINCT aa.类型 AS bb FROM 王者荣耀.game AS aa;
SELECT * FROM game WHERE 类型 = '法师';
SELECT * FROM game WHERE 类型 LIKE '法师';
SELECT * FROM game WHERE 类型 = '法师' AND 等级 > 30;
SELECT * FROM game WHERE 类型 = '法师' OR 等级 > 60;
SELECT * FROM game WHERE 类型 LIKE '法师' OR 等级 > 60;
SELECT * FROM game WHERE 等级 BETWEEN 60 AND 80;
SELECT * FROM game WHERE 等级 >= 60 AND 等级 <= 80;
SELECT 等级,姓名 FROM game;
SELECT * FROM game WHERE 姓名 LIKE '李%';
SELECT * FROM game WHERE 姓名 LIKE '%小_';
SELECT * FROM game WHERE 姓名 LIKE '%信%';
SELECT * FROM game WHERE 姓名 LIKE '__信';
SELECT 等级 * 10 AS 'zz' FROM game ;
SELECT 编号 * 等级 AS 'zz' FROM game ;
SELECT * FROM game WHERE 类型 != '法师';
SELECT * FROM game WHERE NOT 类型 = '法师';
SELECT * FROM game WHERE NOT 类型 LIKE '法师';
SELECT * FROM game WHERE NOT 类型 IN ('法师');
SELECT * FROM game WHERE NOT 等级 <= 60;
SELECT * FROM game WHERE 类型 IS NULL;
SELECT * FROM game WHERE 类型 IS NOT NULL;
SELECT * FROM game WHERE NOT 类型 IS NULL;
SELECT * FROM game WHERE 姓名 IN ('李白','李广','武则天')
SELECT * FROM game WHERE 姓名 = '李白' OR 姓名 = '李广' OR 姓名 = '武则天'
SELECT * FROM game WHERE 姓名 LIKE '李白' OR 姓名 LIKE '李广' OR 姓名 LIKE '武则天'


#查询game表的前3行
SELECT * FROM game LIMIT 3	
#查询game表全部信息,并且按"编号"列升序
SELECT * FROM game ORDER BY 编号	
#查询game表全部信息,并且按"编号"列倒序
SELECT * FROM game ORDER BY 编号 DESC  
#查询game表全部信息,并且按"编号"列和"等级"列升序
SELECT * FROM game ORDER BY 编号,等级
#查询game表多少行数
SELECT COUNT(*) FROM game     		
#查询game表“等级”列多少行数据
SELECT COUNT(等级) FROM game 		  
#查询game表“等级”列所有行的和
SELECT SUM(等级) FROM game 		
#查询game表“等级”列所有行的平均值
SELECT AVG(等级) FROM game		
#查询game表“等级”列的最大值
SELECT MAX(等级) FROM game	
#查询game表“等级”列的最小值
SELECT MIN(等级) FROM game 	
#请查询sell表中,每个用户有多少订单号?
SELECT COUNT(*), 用户号 FROM sell GROUP BY 用户号

常用命令

#查看数据库服务端的版本
SELECT VERSION();
#查看所有数据库
SHOW DATABASES;
#查看当前所在数据库
SELECT DATABASE();
#查看表中的所有信息
SELECT * FROM 表名;
#查看登录数据库的用户
SELECT USER();
#显示表结构
desc 表名;
#切换数据库
USE 数据库名;
#查看数据库当前连接详情
show full processlist
 
 
SELECT * 
FROM members;   
/*
1.SQL 可以写在一行或者多行
*/

询表中的所有列或部分列

SELECT * FROM members;   
SELECT 性别,注册时间 FROM members; 
/*
0. from 跟的是表名
1. select 后面跟所查询的列,
2. 显示列的顺序与输入的顺序有关
3. 列与列之间有英文逗号分隔
4. *表示搜索所有列
5. 关键词不区分大小写
*/
 
 

as 取别名

#取别名 使用as
SELECT 姓名 AS NAME FROM members;
SELECT 姓名  NAME FROM members;
SELECT 书名 NAME,作者 AS auther,出版社 AS publisher FROM book;
SELECT 用户号 AS "tt bb" FROM members;
1.取别名使用as 关键词
2.as可加可不加,但是必须有空格
3.当别名中有空格时,需要使用单引号或双引号引起来
4.别名不能是数值类型, 否则使用引号引起来

 
 

case

 SELECT 图书编号, 书名,数量,  
      CASE 
          WHEN 数量 IS NULL THEN  '尚未进货'
          WHEN 数量 < 5 THEN  '需进货'
         WHEN 数量 >=5 AND 数量<=50 THEN  '库存正常'
       	 ELSE  '库存积压'
      END AS ooo
  FROM book;  
 /*
1. case 语句放在select后面
2. case带头,end结尾
3. else可以不加
4. when后面跟条件,then后面跟结果 
 */
 
 

列值运算

SELECT 姓名,等级, 姓名 +  等级 AS '新等级' FROM game 
/*
1. 字符串当0值运算
2. 列与数字运算
3. 列与列相互运算
4. 列与列、数字、运算符号混合运算。
*/
 
 

distinct 消除重复项

SELECT  DISTINCT 学历  FROM employees;
# 其含义是对结果集中的重复行只选择一个,保证行的唯一性.
 
 

where 条件查询

#使用WHERE 子句,将不满足条件的行过滤掉。
SELECT 书名,单价 FROM Book WHERE 书名='网页程序设计'
#查询book表的单价是27的信息
SELECT 单价 FROM book WHERE 单价 = 27;
/*
1. 条件语句用where关键词
2. where必须在from关键词的后面
3. 运算符号间不要有空格
*/

 

mysql
sql语句可以分多行显示
询表中的所有列或部分列
as 取别名
case
列值运算
distinct 消除重复项
where 条件查询
and or not 逻辑运算
between and 范围比较
like 模糊查询
in 过滤查询
空值查询
not的位置
多表查询

and or not 逻辑运算

#查看game表中等级不等于80的所有信息,(使用 != 和 not 2种方法)
#查看game表中等级大等于70,并且等级小于80的所有信息
#查看game表中等级大等于70,并且类型是法师的所有信息
#查看game表中等级大等于80,或者等级小于等于70的所有信息
/*
1. not 与 != 和<> 是等效的
2. not 放在字段的前面,而!=和<> 放在字段与值的中间
3. not是运算一个条件,而and和or是运算2个条件语句
4. and和or的2个条件语句不分先后顺序,且2个条件中都必须有字段
*/

mysql
sql语句可以分多行显示
询表中的所有列或部分列
as 取别名
case
列值运算
distinct 消除重复项
where 条件查询
and or not 逻辑运算
between and 范围比较
like 模糊查询
in 过滤查询
空值查询
not的位置
多表查询

between and 范围比较

#对数值查询
SELECT * FROM sell WHERE 订购单价 BETWEEN 22 AND 28
#对时间查询
SELECT * FROM sell WHERE 订购时间  BETWEEN '2013-07-26 12:25:03'  AND '2015-08-01 12:13:49'
/*
1. between and子句在where后面
2. 字段名在between前面
3. 两个数值在and的两边
4. 两个数值,小的在and左边,大的在and右边。
5. .包含两端数据
6. .between前面可以加not,表示查询不在此范围的数据,但不包括2端的数据
7. 可以对时间类型查询查询
8. 可以对数值类型查询
*/
 
 

like 模糊查询

SELECT * FROM members WHERE 姓名 LIKE '司%懿'  #找出姓名以“张”开头的名字
SELECT * FROM book  WHERE 作者 LIKE "_小%"
SELECT * FROM book  WHERE 作者 LIKE "小%"  # 以小开头的字符
SELECT * FROM book  WHERE 作者 LIKE "%小"  # 以小结尾的字符
SELECT * FROM book  WHERE 作者 LIKE "%小%"  # 只要字符含有小就可以
SELECT * FROM book  WHERE 作者 LIKE "%小%刚%"  # 只要字符包含小和刚,且小必须在刚的前面就行
SELECT * FROM book  WHERE 作者 LIKE "_小"   #有两个字符,小必须在后面
SELECT * FROM book  WHERE 作者 LIKE "_小_"   #有3个字符,小必须在中间
SELECT * FROM book  WHERE 作者 LIKE "_小_刚" #有4个字符,且第二字符是小,第4个字符是刚
SELECT * FROM book  WHERE 作者 LIKE "__小"   #有3个字符,小必须在后面
SELECT * FROM book  WHERE 作者 LIKE "__小%" #至少有3个字符,且第三字符是小就行
SELECT * FROM book  WHERE 作者 LIKE "_小%"    #只要第二字符是小就行
SELECT * FROM book  WHERE 作者 LIKE "_小_%"   #至少有3个字符,且第二字符是小就行
/*
1. 属于条件查询,必须关键词where
2. 使用like作为模糊查询的关键词, like 在where的后面
3. 字段名紧跟在like的前面
4. 模糊查询的条件尽量使用引号引起来
5. _表示单个任意字符
6. %表示任意个任意字符(所有字符)
*/

#在xs表中查询1990年的学生的所有信息
#在xs表中查询2月份出生的学生的所有信息
#在xs表中查询姓王的学生的所有信息
#在xs表中查询姓名是3个字的学生的所
 
 

in 过滤查询

SELECT * FROM game WHERE 姓名 IN  ('安琪拉', '程咬金', '庄周', '镜小') 
SELECT * FROM game WHERE 等级 IN  (80, 99) 
/*
1. in子句在where后面
2. 字段名在in的前面
3. 把要查询在内容放在小括号里面
4. 内容之间使用英文逗号隔开
5. 字符型的内容,用引号括起来
6. 数值型的内容,可以使用引号括起来,也可以不用引号
*/
 
 

空值查询

#查询sell表中,是否发货是空值的订单的所有信息。
SELECT * FROM sell  WHERE 是否结清 IS NOT  NULL;
/*
1. 查询空值null,使用is null,放在where的后面
2. 查询空值null,使用is null,字段名放在is null的前面,
3. 查询空值null,使用is not null
*/
 
 

not的位置

#查询game表中,等级不小于70的英雄所有信息
SELECT * FROM game WHERE  NOT 等级  <= 70;  
#查询game表中,等级不是80的英雄所有信息
SELECT * FROM game WHERE NOT 等级  = 80
#查询game表中,类型不是法师的英雄所有信息
SELECT * FROM game WHERE  NOT 类型  = "法师"
#查询game表中,等级不在60至80之间的英雄所有信息
SELECT * FROM game WHERE  NOT 等级  BETWEEN 60 AND 80
#查询game表中,姓名不是’韩信‘、’程咬金‘的英雄所有信息
SELECT * FROM game WHERE  NOT 姓名  IN ("韩信","程咬金")
#查询game表中,姓名的第二个字符不是'小'的英雄所有信息
SELECT * FROM game WHERE  姓名 NOT LIKE "_小%"
/*
1. not放在字段名的前面
2. 如果查询方式的关键字是like、in、between and,
   not可以放在字段名的前面,也可以放在字段名的后面
3. 如果比较运算符是< > <= >= != =,not必须放在字段名的前面
*/
 
 
#三个是等价的语句
SELECT DISTINCT 姓名 FROM members JOIN sell USING(用户号);
SELECT DISTINCT 姓名 FROM members AS m ,sell AS s WHERE m.用户号 = s.用户号
SELECT DISTINCT 姓名 FROM members AS m  JOIN sell AS s ON  m.用户号 = s.用户号
  • 1.
  • 2.
  • 3.
  • 4.
 
 

多表查询

表取别名

SELECT 姓名 AS '100' ,等级 FROM game as 'abc abc' ;
SELECT 姓名 AS '100' ,等级 FROM game as 'abc' ;
SELECT 姓名 AS '100' ,等级 FROM game as 100 ;
SELECT 姓名 AS '100' ,等级 FROM game  'abc' ;
1. 给表取别名使用as关键词,as也可以加,也可以省略
2. 给表取别名的,别名不能加引号、不能是数字、不能带空格。
3. 容易区分,操作简洁。
4. 如果给表取了别名,在使用时,必须使用别名,而不能使用原来的命中。
 
 

排序

orede by 字段名,
表示安某列进行排序,默认情况下是升序
desc 表示倒序
列如:
1、SELECT * FROM game ORDER BY 编号;  #按编号列升序
2、SELECT * FROM game ORDER BY 编号 desc #按编号列倒序
3、SELECT * FROM game ORDER BY 1 #按第一列升序
 
 

限制

limit 行数:返回行数
例如:
1、SELECT * FROM game  limit 2;  #只返回搜索结果的前2行
2、SELECT * FROM game  limit 2, 5;  #只返回搜索结果中从3行开始的条数据