mysql
虚拟机: 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
sql语句可以分多行显示
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. 运算符号间不要有空格
*/
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个条件中都必须有字段
*/
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行开始的条数据