MySQL复习----笔记

mac2024-04-10  32

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值,又可以判断普通的数值,可读性较低
最新回复(0)