MySQL复习----笔记

MySQL 基础(二)

教学视频转:http://www.atguigu.com/download_detail.shtml?v=3

DQL语言的学习

#进阶1:基础查询
/*
语法:
SELECT 查询列表 FROM 表名;

类似于:System.out.println(打印东西);

特点:
1、查询列表可以是:表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟的
*/
USE goods;
#1、查询表中的单个字段
SELECT loginname FROM t_user;
#2、查询表中的多个字段
SELECT loginname,loginpass FROM t_user;
#3、查询表中的所有字段
SELECT * FROM t_user;
SELECT uid,loginname,loginpass,email,`status`,activationCode FROM t_user;
#4、查询常量值
SELECT 100;
SELECT 'john';
#5、查询表达式
SELECT 100%98;
#6、查询函数
SELECT VERSION();
#7、起别名
/*
1、便于理解
2、如果要查询的字段有重名的情况,使用别名可以区分开来
*/
#方式一:使用as
SELECT 100%98 AS 结果;
SELECT loginname AS 用户登录名,loginpass AS 用户登录密码 FROM t_user;
#方式二:使用空格
SELECT loginname 用户登录名,loginpass 用户登录密码 FROM t_user;
#案例:查询loginname,显示结果为login user
SELECT loginname 'login user' FROM t_user;

#8、去重  DISTINCT

#案例:查询用户表中有几种状态类型
SELECT DISTINCT `status` FROM t_user;

#9、+号的作用
/*
java中的+号:
1、运算符,两个操作数都为数值型
2、连接符,只要有一个操作数为字符串

mysql中的+号:
仅仅只有一个功能:运算符
SELECT 100+90;   两个操作数都为数值型,则做加法运算
SELECT '123'+90; 只要其中一方为字符型,试图将字符型转换成数值型
                 如果转换成功,则继续做加法运算
                 如果转换失败,则将字符型数值转换成0
SELECT 'John'+90;
SELECT NULL+10;  只要其中一方为null,则结果肯定为null
*/ 
#案例:查询用户名和密码连接成一个字段(拼接 concat)
SELECT CONCAT(loginname,'  ',loginpass) 拼接结果 FROM t_user;

#防止拼接中null的影响
SELECT 
     IFNULL(pid,0) AS 父类id,
     pid
FROM
     t_category;
#案例:查询分类表的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
SELECT 
     CONCAT(cid,',',cname,',', IFNULL(pid,0),',',`desc`) AS OUT_PUT
FROM 
    t_category;
#【补充】concat函数
功能:拼接字符
SELECT CONCAT(1,2,2);

#【补充】ifnull函数
功能:判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值
SELECT IFNULL(pid,0) FROM t_category;

#【补充】isnull函数
功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0
SELECT ISNULL(pid) FROM t_category;
#进阶2:条件查询
/*

语法:
      SELECT 
            查询列表
      FROM
            表名
			WHERE
						筛选条件;

分类:
     一、按条件表达式筛选

		 条件运算符:> < = != <> >= <= <=>

		 二、按逻辑表达式筛选

     逻辑运算符:
     
								&& || !
								AND OR NOT
     &&和and:两个条件都为true,结果为true,反之为false
     ||或or:只要有一个条件为true,反之为true
     !或not:如果连接的条件本身为false,结果为true,反之为false

		 三、模糊查询
		 
								LIKE
								BETWEEN AND
								in
								IS NULL
*/
#一、按条件表达式筛选
#案例1:查询图书价格大于100元的图书信息
SELECT 
				*
FROM
				t_book
WHERE 
				price>100;
#案例2:查询用户名不是'liSi'的用户名和密码
SELECT
				loginname,loginpass
FROM
				t_user
WHERE   
				loginname <>'liSi';

#二、按逻辑表达式筛选

#案例1:查询图书价格50到150之间的图书名、图书价格
SELECT
				bname,
				price
FROM
				t_book
WHERE
				price>=50 AND price<=150;

#案例2:查询图书价格不是在50到150之间,或者折扣高于6.5的图书信息
SELECT
				*
FROM
				t_book
WHERE
#price>150 OR price<50 OR discount>6.5;
				NOT(price>=50 AND price<=150) OR discount>6.5;

#三、模糊查询
#1、LIKE
#案例1:查询用户名中包含字符a的用户信息
SELECT 
				*
FROM
				t_user
WHERE
		loginname LIKE '%a%';

#案例1:查询分类排序中包含字符1的分类信息
SELECT 
				*
FROM
				t_category
WHERE
				orderBy LIKE '1_';
#案例2:查询用户名中第三个字符,第七个字符都为a的用户信息
SELECT 
				*
FROM
				t_user
WHERE
				loginname LIKE '__a___a%';
#案例3:查询用户名中第二个字符为_的用户信息(需要转义一下)
SELECT 
				*
FROM
				t_user
WHERE
				loginname LIKE '_\_%';

SELECT 
				*
FROM
				t_user
WHERE
				loginname LIKE '_$_%' ESCAPE '$';

#2、BETWEEN  AND
/*
1、使用between and 可以提高语句的简洁度
2、包含临界值
3、两个临界值不要调换顺序
*/
#案例:查询图书价格50到150之间的图书名、图书价格
SELECT
				bname,
				price
FROM
				t_book
WHERE
				price BETWEEN 50 AND 150;
#3、in
/*
含义:判断某字段的值是否属于in列表中的某一项
特点:
1、使用in提高语句的简洁度
2、in列表的值类型必须一致或兼容
'123' 可以转换成  123
*/
#案例:查询用户的密码是aaa、123、abc的用户信息
SELECT 
				*
FROM
				t_user
WHERE
				loginpass IN('aaa','123','abc');
#4、is NULL
/*
=或<>不能用于判断null值
is null或者is not null  可以判断null值
*/
#案例1:查询一级分类的分类id和分类名
SELECT 
				cid,cname
FROM
				t_category
WHERE
				pid IS NULL;
#案例2:查询二级分类的分类id和分类名
SELECT 
				cid,cname
FROM
				t_category
WHERE
				pid IS NOT NULL;

#安全等于<=>
#案例1:查询一级分类的分类id和分类名
SELECT 
				cid,cname
FROM
				t_category
WHERE
				pid <=> NULL;
#案例2:查询用户名为'liSi'的用户信息
SELECT 
				*
FROM
				t_user
WHERE
				loginname <=> 'liSi';

#is null pk <=>
IS NULL :仅仅可以判断null值,可读性较高
<=> :既可以判断null值,又可以判断普通的数值,可读性较低
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值