1.基础查询
DESC 库名//查看库SHOW DATABASES ;//查看当前所在数据库SHOW TABLES;//查看当前库的所有表USE database;//datebase为需要查询的库名SELECT attribute,attribute2 FROM form;//从form中查询attribute,attribute2SELECT * FROM beauty;//查询表中所有属性SELECT DISTINCT attribute FROM form;//查询相关元素并去重,当查询多个属性时,需多个属性同时相同才满足去重条件SELECT id FROM beauty WHERE id=1;//where后为限制条件/* where子句中的运算符=:等于
<>:不等于(在sql的一些版本中也可以写成!=)
>:大于
<:小于
>=:大于等于
<=:小于等于
and(&&):且
or(||):或
not(!):否
between:在某个范围内,如:where income between 1000 and 2000,等价于 between income>=1000 and income <=2000
like:模糊查询%表示多个字符,_表示一个字符如: like 'm%'; 表示查询以m开头的内容like '%m_'; 表示查询以m在倒数第二位的所有内容in:查询内容在某些可能值内 如: where income in (1000,2000,3000)null:空*/ORDER BY;//用于对结果集按照一个列或者多个列进行排序,当其后跟有多列时,先按第一列排序,再按第二列....,默认情况为按升序排列,但可以进行修改,如 ORDER BY A ,B DESC; 按a的升序,b的降序排列
2.常见函数
1.字符函数concat:拼接举例:concat("aaa","bbb","ccc");返回:"aaabbbccc"substr:截取子串举例:substr("一二三四五六",1,5);返回:"一二三四五"upper:转换成大写举例:upper("AbcB");返回:"ABCB"lower:转换成小写同上trim:去前后指定的空格和字符举例:trim(" aaaa ");返回:"aaaa"ltrim:去左边空格同上rtrim:去右边空格同上length:获取字节个数举例:length("1 2");返回:32.数学函数round:四舍五入举例:ROUND(4.3);返回:4rand: 随机产生介于0~1之间的数floor:向下取整举例:FLOOR(4.2);返回:4ceil:向上取整同上mod:取余举例:MOD(9.2,2.1);返回:0.8truncate:截断举例:TRUNCATE(7.12345678,3);返回:7.1233.流程控制函数IF(expr1,expr2,expr3):expr1为true,返回expr2,否则返回expr3IF THENELSEIF THENELSEEND IF;(与c语言if else语句基本相同)SELECT CASE 1WHEN 1 THEN 'one'WHEN 2 THEN 'two'ELSE 'other'END;(返回'one',与c语言switch语句基本相同)4.分组函数sum: 求和举例:SELECT SUM(column_name) FROM table_name;说明:求table_name表中,所有column_name的和max: 最大值同上min: 最小值同上avg: 平均值同上count: 计数举例:SELECT COUNT(income) AS nums FROM access_logWHERE site_id=3;说明:求access_log表中,site_id=3的人的工资之和,并存在nums中注意:1、以上五个分组函数都忽略null值,除了count(*)2、sum和avg一般用于处理数值型max、min、count可以处理任何数据类型3、都可以搭配distinct使用,用于统计去重后的结果4、count的参数可以支持:字段、*、常量值,一般放1
3.分组查询
select 查询的字段,分组函数from 表group by 分组的字段注意:1、可以按单个字段分组2、和分组函数一同查询的字段最好是分组后的字段3、分组筛选针对的表 位置 关键字分组前筛选: 原始表 group by的前面 where分组后筛选: 分组后的结果集 group by的后面 having4、可以按多个字段分组,字段之间用逗号隔开5、可以支持排序6、having后可以支持别名
4.连接查询(多表查询)
1.分类:按年代:sq192标准:仅仅支持内连接sq199标准: 支持内连接+外连接(左外+右外)+交叉连接按功能分类:内连接:等值连接非等值连接自连接外连接:左外连接右外连接全外连接交叉连接2.sq192标准:SELECT 查询元素FROM 元素来自哪些表 AS 别名WHERE 查询条件,连接条件(不加连接条件会出现表与表之间的笛卡尔乘积)注意:如果为表取了别名。对元素进行限定只能通过别名根据where的条件区分等值连接,和非等值连接自己连接自己为自连接(为了方便区分,取别名)3.sq199标准:SELECT 查询元素FROM 表1 别名 (连接类型)JOIN 表2 ON 连接条件WHERE 筛选条件连接类型关键词 :内连接:inner外连接:左外:left outer(可省略)(join 左边的是主表)右外:right outer(join 右边的是主表)全外:full outer交叉连接:cross(迪达尔乘积)
5.子查询:出现在其他语句中的select语句,称为子查询或内查询
分类:按子查询出现的位置:select后面:标量子查询from后面:表子查询where或having后面:标量子查询,列子查询,行子查询⭐exists后面:表子查询按结果集进行查询标量子查询(结果集只有一行一列)列子查询(结果集一列多行)行子查询(结果集多行队列)表子查询(随意)where和having后面:1.标量子查询(单行子查询)通常在单行操作符后SELECT 元素1,元素2 FROM 表WHERE 元素2>(SELECT 元素2FROM 表2WHERE 条件);2.列子查询(多行子查询)通常在多行操作符后:IN,NOT IN, ANY,SOME,ALL SELECT 元素1,元素2 FROM 表WHERE 元素2 IN(SELECT 元素2FROM 表2WHERE 条件);3.行子查询(多行多列)SELECT 元素1,元素2 FROM 表WHERE (元素1,元素2) IN(SELECT 元素1,元素2FROM 表2WHERE 条件);特点:1.子查询放在小括号内2.子查询一般放在条件的右侧3.标量子查询一般搭配着单行操作符使用SELECT后的子查询:(子查询结果必须为1行1列)SELECT a.元素1 (SELECT b.元素2,b.元素1FROM 表2 bWHERE b.元素1=a.元素1)FROM 表1 a;
6.分页查询
SELECT 元素FROM 表【join type】 join 表2on 连接条件WHERE 筛选条件group by 分组元素having 筛选条件order by 排序字段limit 起始位子,数量;起始位子从0开始
7.联合查询:将多条查询语句的结果合并成一个结果
SELECT 元素 FROM 表 WHERE 条件
UNION ALL(加all不去重)
SELECT 元素 FROM 表 WHERE 条件注意:元素数必须相同会去重
安装教程
DML
DDL
TCL
--某科学的超电磁炮