ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 常用命令 ## 数据库 ``` // 使用数据库 show databases; ``` ``` // 使用数据库 use 数据库名 ``` ``` // 创建数据库 create database 数据库名 ``` ``` //查看表结构 desc 表名 ``` ## 表 行:记录 列:字段 ``` // 使用表 use tables; ``` ## 查询 ### 一个字段 ``` select 字段名 from 表名; ``` ### 多个字段 ``` select 字段名1,字段名2 from 表名; ``` ### 所有字段 ``` select * from 表名; ``` ### 起别名 ~~~ select set_time,value as valuesss from sys_config; ~~~ ## 条件查询 ~~~ select 字段 from 表名 where 条件; ~~~ ### 常见运算符: >,=,(!=) ~~~ruby select * from employee where age<>23; ~~~ ### and 且 / or 或 ### between...and...查询一个区间 ### in和 not in 用于筛选“在”或“不在”某个范围内的结果 ~~~ruby mysql> select * from employee where in_dpt not in('dpt1','dpt3'); ---查询不在dpt1或者dpt3的员工的信息 +----+------+------+--------+--------+--------+ | id | name | age | salary | phone | in_dpt | +----+------+------+--------+--------+--------+ | 1 | Tom | 26 | 2500 | 119119 | dpt4 | | 2 | Jack | 24 | 2500 | 120120 | dpt2 | | 5 | Mary | 21 | 3000 | 100101 | dpt2 | | 9 | Joe | 31 | 3600 | 110129 | dpt2 | | 10 | Mike | 23 | 3400 | 110110 | dpt4 | | 11 | Jobs | NULL | 3600 | 19283 | dpt2 | +----+------+------+--------+--------+--------+ 6 rows in set (0.00 sec) ~~~ ### IS NULL 为空,IS NOT NULL非空 mysql中不能用=null,判断为空,要用is null ### LIKE 模糊查询 和 LIKE 联用的通常还有通配符,代表未知字符。 SQL中的通配符是 \_ 和 % 。其中 \_ 代表单个任意字符,% 0或者多个任意字符。 ## 排序 ~~~ // 默认升序 order by 字段名1,字段名2; // 指定升序 order by 字段名 asc; // 指定降序 order by 字段名 desc; // 根据字段位置排序 order by 2; ~~~ ## 处理函数 ### 单行处理函数 Lower 转换小写 upper 转换大写 substr 取子串(substr(被截取的字符串,起始下标,截取的长度)) length 取长度 trim 去空格 str_to_date 将字符串转换成日期 date_format 格式化日期 format 设置千分位 round 四舍五入 rand() 生成随机数 Ifnull 可以将null转换成一个具体值 ### 多行处理函数 分组函数又名聚合函数、多行处理函数。特点是输入多行,最终输出的结果是1行。 | 表达式 | 含义 | | --- | --- | | count | 取得记录数 | | sum | 求和 | | avg | 取平均 | | max | 取最大的数 | | min | 取最小的数 | ~~~ select ename,sal from emp where sal > (select avg(sal) from emp); select count(comm) from emp; ~~~ ## 分组查询 select 语句中,如果有group by ,select后面只能跟参加分组的字段和分组函数 GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前 where 和 having,优先选择 where ~~~ select ... from ... group by ~~~ where 不能使用 分组函数 ~~~ select deptno, avg(sal) from xxx group by deptno having avg(sal)> 2500 ~~~ ## distinck 去除重复 ``` select distinck job from emp; // 2个字段联合去重 select distinck job,no from emp; ``` ## 连接查询 ### 内连接 ~~~ // 等值连接 // sql99 select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno; // 非等值连接 select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal; ~~~ # sql语句分类 DQL:数据查询语言 * slect DML:数据操作语言 * delete * update * insert DDL:数据定义语言,操作表的结构,不是操作表的数据 * create:创建 * drop:删除 * alter:修改 TCL:事务控制语言 * commit:事务提交 * rollback:事务回滚 DCL:数据控制语言 * grank:授权 * revoke:撤销授权