SQL不区分大小写 ? ? ?建议关键字大写 DB数据库 DBMS数据库管理系统(下载的软件) ? ? ? ? ? ? ? 数据库是通过DBMS创建的操作的容器 SQL ? ?结构化查询语言 ? ?专门用来和数据库通信的语言 port=3306 ?? ?win+R ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? select --version ?? ?net start/stop mysql ? ? ? ? ? ? ? ? ? ? select version();查看版本 ?? ?musql ?-h ?localhost(主机名) -P3306(端口号) ?-u root(用户名) ?-p(密码)
show database; 查看所有数据库 use 库名; ? ? ? ? ? ?打开指定库 show tables;from 库名(把所有表列示) 查看所在库 ?select database(); create table 表( ?? ? ? ? ? ?id int, ? ? ? ? ? ? ? ? ? ? ? ? name varchar(20) ?);
desc 表;查看表结构? select * from 表;查看全部数据 insert into 表 (id,name) values(2,'小红');插入 注释 # ?? ? ? ? ?-- (-后有一空格) ? ? ? ?/* ? ? ? ? ? ? ? ? ? */
select distinct 列(只能去重一个) from 表;查找不重复的内容? ? ? select concat(' a', ',' ,'b ' ? ? ? ?ifnull(b,0) ? ? ?) as 别名 from 表; ? ? 如果拼接的a为null ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?select ifnull (列,0) as 别名 ,列(形成对比) ?from ?表;
条件查询; select 列 from 表 where 筛选条件; <> ? ? <= ? ? >= ? ?> ? < ? ?=! ?条件运算符 and ? ?or ? not ?逻辑运算符 ?模糊查询like ? ? ? ? ? ? ? ?between ?and ? ? ? ? ? ? ? ?in ? ? ? ? ? ? ? ?is null/is not null select *from 表 where ?查找的成绩>120; ?? ?查询员工名字中包含a的员工信息 ? ? ?? ?select * from 员工表 where 员工名 like '%a%'; ? ?? 通配符(? ? ? ? ? ? ?%任意多个字符 包含0个字符 ? ? ? ? ? ?_单个字符 ? ? ? ? ? ?) 查询员工名中第三个字符为e 第五个字符为a 的员工名和工资 select 员工名,工资 from 员工表 where 员工名 ?like '__e_a%';? 转义\_ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?like '_a%' escape '%';表明%是一个正常字符
between and 查询员工编号在100-120之间的员工信息(包含临界值) select*from 表 where 员工编号 between 100 and 120; ? ? ? ? ?必须从小到大 ?? 查询员工的工种编号是 a,b,c中的一个 ? ? ? 的员工名和工种编号 select 工种名,工种编号 ?from 员工表 ? where 工种编号 in ('a','b','c'); ? ? ?? ?? ??? ??? ??? ?判断是否是in列表中的某一项 ?? ??? ??? ??? ?in列表的值类型必须同一 ?? ??? ??? ??? ?不支持通配符 查询没有奖金的员工名和奖金率 ? ? ? ?is null select 员工名,奖金率 from 员工表 where 奖金率 is null;------------<=>null? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<> 和= null(错误 ? ?=运算符判断不了null) ?? ??? ??? ??? ? ? ? ? ? is not null;有奖金 还可以判断 是否是null ?如果是返回1 否则返回0
日期值和字符型必须用' '括起来
排序查询? select 查询列表 from 表 [where 筛选条件] order by 排序列表 asc升(默认)\desc降
按姓名长度显示员工的姓名和工资 select length(姓名) as 别名,还显示的内容 ?from 员工表 oeder by length(姓名) desc; ? 年薪 ? ?salary(工资)*12*(1+ifnull(commission_pct,0))
函数 select 函数名()[form 表] 单行函数 ?concat length ifnull ?做处理 有返回值 分组函数 做统计使 用
select length('张三丰hahaha') 显示出字节个数15 ? ? ? 一个汉字三个字节 select concat (UPPER(姓),'_',名)from 员工表; ? ? ? ? ? ? ? ? ? ? ? 把姓变大写 ? ? ? ? Lower变小写
?? ?substr/substring截取字符串 ? select substr('一二三四五六七',4) ; ?返回 四五六七 索引从1开始 select substr('一二三四五六七',1,3) ; ?返回一二三 返回指定索引处指定长度的 ?? ?instr 返回子串第一次出现的索引 找不到返回0; select instr ('一二三四五六七','二三四') ; 返回2 ?? ?trim 去掉规定的 前后的 select length(trim(' ? ? ? ? 一二三 ? ? ? ? '));去掉空格之后的长度 select trim('-' from '----------一---------二三----')); ?? ?lpad 用指定的字符填充左 ? ? ? ? rpad右填充 select lpad('一二三',10,'*'); ?? ?replace替换 select lpad('一二三一二三','一二','二二'); 一二换成二二
数学函数 round 四舍五入 ceil 向上取整 floor向下取整 truncate 截断 ?select truncate(1.66666,1); mod 取余 ? ? select truncate(10,3); ? ? ? MOD(a,b) ?:a-a/(除以)b*b
日期函数 now 当前系统日期+时间 curdate 返回当前日期 curtime 返回当前时间 select XXX(now( )) ? ? ? ? ? year? ? ? ? ? ? month str_to_data将字符通过指定的 格式转换成日期 select str_to_data('2003-4-6','%Y-%c-%d'); data_format 将日期转化成字符
流程控制 if ?
?
|