## 超详细MySQL常用语句,增删查改

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)格式:1select * from1 UNION select * from22select * from1 UNION ALL select * from2

2.笛卡尔积:select * from 表1,表2;

两表查询:select * from1,表2 where1.id=2.id;
三表查询:select * from1,表2,表3 where1.id=2.id and2.id=3.id;

连接查询:

1.内连接(查左右相等):select * from1 as 别名 INNER JOIN2 as 别名 ON1.id=2.id;112
三表查询:select * from1 join2 on1.id=2.id join3 on2.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);
  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值