MySQL常用语句,增删查改,安装配置mysql服务
#新手博客,应届生,谢谢支持哟
记得点赞关注哟
-----sql常见命令:--------
安装服务:mysqld --install
初始化:mysqld --initialize --consol
启动服务:net start mysql
关闭服务:net stop mysql
登录服务器:mysql -h 地址 -P 端口 -u 用户名 -p 密码 或者 mysql -u root -p
查看进程:show processlist
查看系统变量:show variables
查看当前使用的数据库:select database()
查看系统时间,用户,版本:select now(),user(),version()
查看表:show create table; decs table
**
DDL 数据库定义语言:用来创建数据库,表,列等等
DML 数据库操作语言:用来操作数据库中的记录
DQL 数据库查询语言:用来查询数据库
DCL 数据库控制语言:用来定义数据库访问权限和安全级别**
DDL语言:
创建数据库:create database 数据库名 character set utf8
使用某个数据库:use 数据库名
列出所有数据库:drop database 数据库名
列出所有表:show tables
查看你表结构:desc 表名
删除表:drop table 表名
创建表:create table 表名(id BIGINT PRIMARY KEY auto_increment,name varchar(20),age int)
改表名:rename table 原始表名 to 新表名
改表的字符集:arter table 表名 chararcter set 要改成的字符集
改表的字段:arter table 表名 change 原字段 新字段 数据类型
添加表字段:arter table 表名 add 字段名 数据类型
修改字段的数据类型:arter table 表名 modify 字段名 数据类型
删除某个字段:arter table 表名 drop 字段名
DML语言:
插入值:insert into 表名(字段1,字段2)values(值1,值2)
更新值:update 表名 set 字段1=新值,字段2=新值 where 条件
删除一行:delete from table 表名 where 字段=值
清空表内容:truncate table 表名
DQL语言:
1.条件查询where
条件:= != > < >= <=
2.bewteen; 例如:字段名 bewteen 值1 and 值2
3.in; 例如:字段名 in (条件1,条件2,条件3)
4.is null 为空;is not null 不为空;性能比较差,一般用isnull(参数1,参数2)函数代替,
为空,则返回参数1,不为空,则返回参数2
5.and 与; or 或; not 非
6.算术运算符:+(加) -(减) *(乘) /(除) %(模除)
7.like 模糊查询
可接通配符:% 代表0-n个字母; _ 代表任意一个字母
例如:SELECT * FROM user where age LIKE 's%' ; SELECT * FROM user where age LIKE '_s'
字段控制查询:
1.去重:SELECT DISTINCT 列名 FROM 表名
2.把查询的字段结果进行运算,值必须是数值型
例如: SELECT *,字段1+字段2 FROM 表名
3.当查询结果为null时,可以用IFNULL处理:
例如:SELECT *,字段1+IFNULL(字段2,0) FROM 表名
4.对查询结果起别名:关键字:AS
例: SELECT *,字段1+字段2 AS 别名 FROM 表名
注释:(1)as可以省略(2)不能加引号
排序:
1.关键字:ORDER BY;
(1) 升序:ASC
(2)降序:DESC
例:select * from 表名 order by 列名1 asc,列名2 desc;
聚合函数:
1)COUNT():统计记录行数;
select count(*/列名),count() from 表名;
count(列名)不统计空行, count()和count(*)统计包括空行
2)MAX():计算最大值,如果是字符串,则使用字符串排序运算;
3)MIN():计算最小值,如果是字符串,则使用字符串排序运算;
4)SUM():计算和,如果不是数值类型,则为0;//select sum(列名) from 表名;
5)AVG():计算平均数,如果不是数值类型,则为0;
//结果是一个可能不存在的数据,因此无法和表中的数据进行比对;
//聚合函数是对记录的一个压缩的过程,得到的是一个数值;
分组查询:
1)关键字:GROUP BY;
例:select 列名1 from 表名 group by 列名1;
2)显示组内集合:group_concat();
`例:select 列名1,group_concat(列名2) from 表名 group by 列名1;`
3)group by+聚合函数;
4)分组后条件查询:group by +having;
例:select 列名1,group_concat(列名2),sum(列名2) from test GROUP BY 列名1 having sum(列名2)>12;
书写顺序:select from where group by having order by limit
执行顺序:from where group by having select order by limit
分页查询LIMIT:
1)LIMIT参数1,参数2;
参数1:从哪一行开始;
参数2:一共查几行;
2)角标从0开始;
3)分页思路:
int curPage=1;//当前页
int pageSize=3;//每页数据;
–当前页为1第一页从0开始(1-1)*3=0;
–当前页为2第一页从3开始(2-1)*3=3;
–当前页为3第一页从6开始(3-1)*3=6;
select * from 表名 limit (curPage-1)*pageSize,pageSize;
多表查询:
1.合并结果集:
(1)方式:1)UNION去除重复记录;2)UNION ALL不去除;
(2)格式:1)select * from 表1 UNION select * from 表2;2)select * from 表1 UNION ALL select * from 表2;
2.笛卡尔积:select * from 表1,表2;
两表查询:select * from 表1,表2 where 表1.id=表2.id;
三表查询:select * from 表1,表2,表3 where 表1.id=表2.id and 表2.id=表3.id;
连接查询:
1.内连接(查左右相等):select * from 表1 as 别名 INNER JOIN 表2 as 别名 ON 表1.id=表2.id;112
三表查询:select * from 表1 join 表2 on 表1.id=表2.id join 表3 on 表2.id=表3.id;
//jion 和 inner join 是一样的
2.外连接:
(1)左外连接(查左右相等,加左表数据):left outer jion;左连接:left jion
(2)右外连接(查左右相等,加右表数据):right outer jion;//很少用;有连接 right outer jion;//很少用;
3.非等值连接:在等值连接的基础上,用运算符;
4.自然连接:natural join;
注释:
(1)使用自然连接必须有列名一致,否则产生笛卡尔集;
(2)两行列名一样,则两列数据都相等才会被查出;
5.自连接:如果需要查同一个表两次,可以给表起别名两次来查询
例如:SELECT a.Num,a.Stop,b.Stop FROM Route a,Route b WHERE a.NUM=b.NUM;
**子查询:**把一个select语句的结果,当作另一个select的条件值或者表(where或者from后面)
1.在WHERE子句中进行使用查询
SELECT *
FROM EMP
WHERE SAL < (SELECT AVG(SAL) FROM EMP);
2.HAVING子句是对分组统计函数进行过滤的子句,也可以在HAVING子句中使用子查询
SELECT JOB,AVG(SAL)
FROM EMP
GROUP BY JOB
HAVING AVG(SAL) = (SELECT MAX(AVG(SAL)) FROM EMP GROUP BY JOB);
3.FROM子查询就是将一个查询结构(一般多行多列)作为主查询的数据源
SELECT JOB,AVG(SAL)
FROM (SELECT JOB,AVG(SAL) AS AVGSAL FROM EMP GROUP BY JOB)TEMP
WHERE TEMP.AVGSAL>2000;
4.SELECT子查询在SELECT子句中使用查询的结果(一般会和dual空表一起使用)
SELECT (SELECT COUNT(*) FROM EMP WHERE JOB = 'SALESMAN')/(SELECT COUNT(*) FROM EMP)
FROM DUAL;
5.将主查询的数据带到子查询中验证,如果成功则返回true,否则发水false。主查询接收true是就会显示这条数据,flase就不会显示。
`SELECT` *
FROM EMP E
WHERE EXISIT (
SELECT *
FROM DEPT D
WHERE E.DEPTNO = D.DEPTNO);