二、mysql用法****
SQL语句类型:
·DDL:数据定义语言,用于增删改数据库的对象,如库、表、索引等
·DML:数据操纵语言,用于对表中的数据进行增删改
·DQL:数据查询语言,用于数据查询
·DCL:数据控制语言
查看数据库支持字符类型 show charset;
查看数据库: show databases;
创建一个叫yun1的数据库,并指定字符类型 create database yun1 charset utf8mb4;(后面指定字符类型的可以不加)
查看某个库的详细情况 show create database yun2;
修改某个库的字符类型 alter database yun2 charset utf8mb4;
切换库操作(相当于Linux的cd命令) use yun1;
删除库 drop database yun2;
查看当前库的所有表的; show tables;
查看表结构 desc benet;
增加表结构 alter table benet add (telephone int(11),salary int(10));
修改表结构 alter table benet change salary xinzi int(10);
删除表结构 alter table benet drop telephone;
删除表 drop table test;
删除表内容不删除定义不释放空间 delete table test; 5.7不能用
删除内容不删除定义释放空间 truncate table test;
create table benet (id int primary key not null auto_increment,name char(10) default 'kong' comment '姓名',age int unsigned,sex enum ('man','woman','other') default 'other') engine innodb charset utf8mb4;
插入数值
不指定字段的时侯要把每个字段都要有值insert into benet values(2,'lisi',22,'男',200000);
给指定字段增加值 insert into benet (id,name,sex)values(3,'wangwu','man');
查看表的内容 select * from 表名
根据已有表创建一个相同结构的表 create table test like benet;
查看指定字段 select name,sex from benet;
修改某个字段的值 update benet set sex='man' where name='lisi';
删除某个字段(整行删) delete from benet where name='wangwu';
一次性录入多行
insert into benet (name,id,sex,xinzi,age)values('哪吒',5,'man',8888888,18),(' 红孩儿',6,'man',66666,6);
DQL语句
查询本实例端口select @@port;
查询当前的登录用户select user();
查看指定字段的指定行数:select name,id from benet limit 2;
通过where字段指定过滤条件:select name,xinzi from benet where age>18; (此处比较是可以识别大于小于等于)
在数据库中%相当于通配符的*表示任意的意思,通常可以和like配合使用进行模糊匹配
统计年龄,按名称分组
select name,count(age) from benet group by name;
select name,sum(xinzi) from benet group by name;
select name,count(name) from benet group by name;
配合where优先执行过滤
select name,xinzi from benet where xinzi=(select max(xinzi) from benet)
select name,xinzi from benet where xinzi>=(select avg(xinzi) from benet);
select name,xinzi from benet where xinzi<=(select avg(xinzi) from benet);
select max(xinzi) from benet;
max min avg sum count
多个表结合查询内容
select benet.bid,name,bname,xinzi from benet,bumen where benet.bid=bumen.bid;
select id,name,xinzi,bname,benet.bid from benet,bumen where benet.bid=bumen.bid;
select * from benet as a,bumen as b where a.bid=b.bid;
筛选排序(可以跟多个字段)
select * from benet order by age,xinzi; asc 正序
select * from benet order by age desc;
select * from benet order by age desc,xinzi desc; 倒序
模糊查询 select id,name from benet where name like '八%';
求薪资最高的人所在的部门名称
select benet.bid,bumen.bname from benet,bumen where benet.bid=bumen.bid and xinzi =(select max(xinzi) from benet);
查询各部门的平均薪资:
查询对应关系 select user,host,authentication_string from mysql.user;
创建用户 create user yun1@'%' identified by '123123';
用户授权命令 grant all on . to root@'192.168.159.141' identified by '666666';
让更改立即生效命令 flush privileges;
非交互式访问数据库 mysql -uroot -e "show processlist"
mysql 5.7版本的用户密码字段 authentication_string
创建用户 create user yun@'192.168.159.131' identified by '666666';
换密码 alter user yun3@'%' identified by '666666';
删除用户 drop user yun3@'%';
查看用户权限
show grants;
show grants for 'root'@'localhost';
给普通用户授予所有权,默认是没用授权权限的。如果想让普通用户拥有授权权限,授权时加上with grant option
grant all on . to yun@'%' identified by '123123'
grant all on . to yun@'%' identified by '123123' with grant option;
撤销权限 revoke insert on yun1.* from yun1@'%';