MySQL常用语句
一、DDL语句
show databases 查看数据库实例
create database biglettodata 创建名为biglettodata的数据库实例
use biglettodata 选择数据库biglettodata
show tables 查看数据库biglettodata中所有表
create user 'Hark' identified by 'Hark123' 创建名为Hark密码为Hark123的用户
rename user 'Hark' to 'Hark1' 修改用户名称
set password for 'Hark' = password('@Hark123') 修改Hark的密码
create table emp(ename varchar(10),hiredate date,sal devimal(10,2),deptno int(2)) 创建表
desc emp 查看emp表定义
show create table emp \G 查看更详细的emp表定义
alter table emp modify ename varchar(20) 将emp表的ename字段改成varchar(20)
alter table emp add column age int(3) 给emp表增加age字段
alter table emp drop column age 删除emp表age字段
alter table emp change age age1 int(4) 将emp表中的age字段改为age1,类型为int(4)
alter table emp add birth date after ename 在emp表的ename字段后面添加birth字段
alter table emp modify age int(3) first 将emp表中的age字段放在最前面
alter table emp rename emp1 修改emp表名为emp1
alter table emp add primary key (ename) 给emp表添加主键
drop table emp 删除表emp
drop database biglettodata 删除数据库biglettodata
二、DML语句
insert into emp (ename,hiredate,sal,deptno) values('zzx1','2000-01-01','2000',1); 向emp表插入一条数据
insert into emp values('lisa','2003-02-01','3000',2); 向emp表插入一条数据
insert into emp (ename,sal) values('dony',1000); 向emp表插入一条数据
insert into dept values(5,'dept5'),(6,'dept6'); 向dept表插入两条数据
update emp set sal=4000 where ename='lisa' 将emp表中ename叫lisa的sal的值改为4000
update emp a,dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno; 将emp和dept表中deptno相同的数据,emp表sal字段的值改成用它自身乘deptno的值,dept表deptname改成emp表中的ename
delete from emp where ename='dony'; 删除ename为dony的数据
delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3; 删除emp和dept表中deptno字段相同且deptno为3的数据
select * from emp; 查询emp表所有数据
select ename,hiredate,sal,deptno from emp; 查询emp表ename,hiredate,sal,deptno字段的值
select distinct deptno from emp; 查询emp表中deptno字段不重复数据
select * from emp where deptno=1; 查询emp表中deptno字段为1的所有数据
select * from emp where deptno=1 and sal<3000; 查询emp表中deptno为1,sal字段的值小于3000的所有数据
select * from emp order by sal; 查询emp表中的所有数据并根据sal字段升序排列
select * from emp order by deptno,sal desc; 对于 deptno 相同的前两条记录,如果要按照工资由高到低排序
select * from emp order by sal limit 3; 显示 emp 表中按照 sal 排序后的前 3 条记录
select * from emp order by sal limit 1,3; emp 表中按照 sal 排序后从第二条记录开始,显示 3 条记录
select count(1) from emp; 要 emp 表中统计公司的总人数
select deptno,count(1) from emp group by deptno; 要统计各个部门的人数
select deptno,count(1) from emp group by deptno with rollup; 既要统计各部门人数,又要统计总人数
select deptno,count(1) from emp group by deptno having count(1)>1; 人数大于 1 人的部门
select sum(sal),max(sal),min(sal) from emp; 公司所有员工的薪水总额、最高和最低薪水
select ename,deptname from emp left join dept on emp.deptno=dept.deptno; 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
select ename,deptname from dept right join emp on dept.deptno=emp.deptno; 右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
select * from emp where deptno in(select deptno from dept); 从 emp 表中查询出所有部门在 dept 表中的所有记录
select * from emp where deptno = (select deptno from dept limit 1); 如果子查询记录数唯一,还可以用=代替 in
select emp.* from emp ,dept where emp.deptno=dept.deptno; 某些情况下,子查询可以转化为表连接
select deptno from emp union all select deptno from dept; 将查询结果拼接起来
select deptno from emp union select deptno from dept; 将查询结果拼接起来后去重的结果
三、DCL语句
show grants for 'Hark' 查看Hark用户所有权限
revoke all privileges on * from 'Hark'@'%' 取消Hark所有权限。
grant to select,insert,update,create on * to 'Hark'@'%' 给Hark授予增改查表的权限