好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Mysql

Mysql命令启停

net start mysql;

net stop mysql;

Mysql命令行命令

退出:exit 显示密码登录mysql:mysql -uroot -proot 隐藏密码登录mysql:mysql -uroot -p 查看数据库:show databases; 使用数据库:use test; 查看表:show tables; 查看表结构:desc 表名; 查看版本号:select version(); 查看当前使用的数据库:select database(); \c 终止一条sql语句命令输入

SQL基本

起别名:as(省略也可以,用个空格代替),若遇上别名有空格,则用单引号解决

SQL语句分类

DQL 查询语言(select) DML 数据操作 insert:创建 update:修改 delete:删除 DDL 表操作 create:创建 drop:删除 alter:修改 TCL 事务提交:commit 事务回滚:rollback 事务开始:begin DCL 数据库控制语言:例如grant授权、revoke撤销授权

导入数据

use 数据库 source 路径 (路径不能有中文)

条件查询

between ... and ... 两个值之间,包含两个值 注意:必须遵循左小右大原则 <> 或 != :不等于 is null, is not null and,or in like :模糊查询 % :匹配任意个字符 _ :匹配一个字符 (\_转义)

函数

单行处理函数

一个输入,一个输出:处理完一行后,再处理下一行。

lower:转小写 upper:转大写 substr:截取字符串(被截取的字符串,起始下标,截取长度) 下标从1开始,没有0 length:取字符串长度 concat:字符串拼接 trim:去前后空格 str_to_date:字符串转日期 date_format:格式化日期 format:设置千分位 round:四舍五入 round(123.123,0) 保留0位小数, 注意:正数是小数,负数对应了十百千万... -2是百位 rand:随机数 case ... when ... then ... when ... then ... end: select name,job,sal as oldsalary,(case job when ‘MANAGER‘ then sal 1.1 when ‘SALEMAN‘ then sal 1.5 end) as newsalary ifnull:将null值转为一个具体的值 ifnull(数据,被当做那个值) distinct:只能出现在所有字段的最前方

分组函数(多行处理函数)

多个输入,一个输出。

sum count avg max min

注意:

? 1.分组函数在使用的时候必须先进行分组,然后才能调用。若没分组,则整张表默认为1组。

? 2.分组函数自动忽略null,不需要提前对null进行处理

? 3.分组函数中 count(*) 和 count(字段) 有什么区别?

? count(具体字段) :统计所有不为null的行数

? count(*) :统计所有行数

查询语句执行顺序

from where group by having select order by

为什么分组函数不能直接使用在where后面?

因为分组函数在使用的时候必须先分组。where执行的时候还没有分组。

分组查询

group by 之后可以跟多个字段 参与分组的字段可以select, 分组函数可以select,

having

having和group by必须联合使用 能使用where的优先使用where(优化策略) where只适合使用表里面已知的字段

连接查询

内连接

等值连接:表之间有字段值相等 非等值连接:表连接有字段值不相等 例如:员工表[emp](name,salary)和工资登记表[sal_gra](salary_grade,low_grade,upper_grade) select e.name,e.salary,sg.salary_grade from emp e inner join sal_gra sg on e.salary between sg.low_grade and sg.upper_grade; 自连接:一张表看做事两张表

外连接

左连接 右连接

Mysql

标签:join   分组   cat   databases   ifnull   右连接   取字符串   忽略   现在   

查看更多关于Mysql的详细内容...

  阅读:23次