MySQL基础查询基本语法规范单个函数使用语法

一些语法规范:
不区分大小写,建议关键字大写,其他小写
每条命令用分号结尾
如果说根据需要。可以进行缩进或者换行
单行注释:
#注释文字
– 注释文字
多行注释
/* 注释文字 */

基础语句
显示所有数据库show databases;

打开指定的库use 库名;

查看当前库的所有表show tables;

查看其他库的所有表show tables from 库名;

创建表

create table 表明{
    
    
	列名 列类型,
	列名 列类型 (最后一个就不用加逗号了)
}

查看表的结构desc 表名;

查看服务器的版本select version();
或者在cmdmysql -V / mysql --version

基础查询:

select 查询列表 (查询列表可以是:表中的字段,常量值,表达式,函数)
from 表名

查询的结果是一个虚拟的表格

查询表中的单个字段select 需要查询的字段名 from 表名; (注意最后的分号)

查询表中的多个字段

select 查询的字段1,查询的字段2,查询的字段3 from 表名; (字段名中间用逗号隔开,顺序可以和原始表不一致)

查询表中的所有字段
法一:select 点击表名(或者手动输入全部的,中间用逗号隔开,F12可以自动调整格式)
法二:select * from 表名(但是要注意使用* 的时候顺序是和原始表的顺序是一致的)

注意事项:
MYsql中的查看相等的值直接用的就是=,而不是==
` 这个符号不是单引号,是着重号。我的键盘是在Esc键盘下面。

不能与关键字重复,需要区分的时候可以加 着重号

查询常量值

select 100 ;100是可以替换的)
select ‘Tom’ ; (用的是单引号,且SQL认为非数值的都是字符)

查询表达式select 100*98 ;

查询函数select version();

起别名:
方式1:select 100%98 as 结果; (使用as关键字)
优点:方便理解
如果要查询的字段有重名的情况,使用别名可以区分开来
方式2:select 100%98 as 结果 (省略as关键字,使用空格)
如果别名包含关键字或者空格等,需要加上双引号,单引号也行。建议双引号。

去重select distinct department_id from table; (需要加上distinct关键字)

加号的作用 +
案例:查询员工名与员工姓,并显示为姓名

select last_name+first_name as 姓名 from employees;(这个写法是错误的)

select ‘123’+90;这个语句是试图将字符型转化为数值型,如果转化成功则继续做加法运算,这一句话是可以转化成功的。转化失败的字符转化为0;

只要有一方是Null,则结果为Null

在MySQL中,+的作用只有将数值相加的作用

如何拼接:使用函数concat(str1,str2, ...);

ifnull(表达式1,表达式2);表达式1放的是可能为空的名字,表达式2是如果是空的话想要返回的值。

条件查询:

select *
from table
where 筛选条件;

(执行顺序:先执行from table,先查看有没有这个表,然后执行where,最后是select)

分类
按条件表达式筛选:
条件运算符>, < , =, <>(!=), >=, <=,
按逻辑表达式查询:
逻辑运算符and, or, not(&&, ||, !),

模糊查询 like, between and, in, is null

like查询的举例:
查找名字中包含字母a的名字:
select * from table where name like ‘%a%’(注意两点,字符要用单引号,因为a可以在中间,可以在后面,所以要加上%,表示通配符

通配符:
% 任意多个字符(包含0个字符)
_ 表示任意单个字符

假如需要查找包含下划线的名字:
前面加转义字符: \
但推荐的前面加 $ ;escape ‘$’;($是可以任意指定的)

between and 是包含临界值的

in:判断某段值是否属于in列表中的某一项
使用in的优点:提高语句简洁度;
in列表的值的类型必须统一或者兼容(不支持下划线或者%这种写法)

is null 相反的是 is not null
= 或者 <> 不能用来判断null值
但可以写成<=> null

安全等于 <=>
可读性较差,不是很推荐使用

SQL排序查询:

order by 排序列表 asc(升序:从低到高) | desc(降序:从高到低)

默认是升序

可以按照函数排序 函数length()可以求长度

按照多个字段排序的方法order by 字段1,desc, 字段2,asc;

order by 字句一般排在最后,limit子句除外

执行顺序:from table , where , select, order by

函数
调用的方法: select 函数名(实参列表) from 表

单行函数concat., ;length, ifnull

分组函数:
做统计使用
又称为统计函数,聚合函数,组函数

字符函数:
length utf8下一个汉字占三个字节
concat 连接
upper 变大写
lower 变小写
substr/substring(注意索引是从1开始的),
substr(“TomAndBob”,5);这句话的意思是输出从索引5之后的字符串
substr(“TomAndBob”,2,5);这句话的意思是输出从索引2之后的5个字符
instr(str1,str2) 用于返回str2在str1中的起始索引,如果找不到返回的是0
trin() 用于去掉前后的指定的字母,如果没有指定则去掉的是空格。
示例:trin(‘a’ from ‘aaajkjjjsjjsjjsssaaaajjjjjjjjaaaaaaaaaaaa’);(注意去掉的这是前后的指定字符,不包括中间的)
lpad (注意是字母L,不是i)
lpad(‘str1’,10,’*’);在左边填充指定字符,最终的长度与指定的长度是一致的,尽管指定的长度可能比str1要小。
rpad:右填充
replace:替换:replace(str1, str2, str3),将字符串str1中的str2替换成str3;

数学函数:
round() 四舍五入
举例: round(1.65)结果为2,round(1.65,1)这个是小数点后面保持两位
ceil() 向上取整
floor()向下取整
truncate() 截断
例如: turncate(1.69,1) 意思是保留一位小数
mod() 取余

日期函数:
now()返回系统当前的日期加时间
curdate() 返回当前的日期,不包括时间
curtime() 返回当前的时间,不包括日期

select year(now())可以只获得年
select year(‘1998-1-5’)也可以只获得年
如果需要显示是英文名字,则可以用 year_name()来实现

流程控制函数:
if(expr1, expr2, expr3), 如果expr1成立,则值为expr2, 否则为expr3(类似于三元运算符)

case:
用法1: case 加上需要判断的变量或者表达式

when 常量1 then 要显示的值1或语句1;
	when 常量2 then 要显示的值2或语句2;
	...
	else 要显示的值n或语句n;
	end

用法2:case

when 条件1 then 要显示的值
	when 条件2 then 要显示的值
	...
	else 要显示的值或者语句
end

猜你喜欢

转载自blog.csdn.net/weixin_44895666/article/details/108310386