mysql语法备忘

基本sql语句

库相关

增:create database mydb charset uft8;
删: drop database mydb;
改: alter table mydb charset gbk;
查:show databases;
show create databases mydb;

表相关

切换数据库:use mydb;
增:create table t1(id int,name char(5) 约束);
约束类型:default …/ UNIQUE/NOT NULL/PRIMARY KEY
删:drop table mydb;
改:修改字段:alter table t1 add|modify|drop|change
add 跟 列名和类型
modify 跟 列名 和 类型
drop 跟列名
change 跟 旧列名 新列名 类型
改字符编码:alter table 表名 default character set gbk
改名称: alter table t1 to t2;
查:show tables;
show create talbe t1;(没啥用)
desc t1

记录相关

增:
insert into 表名称 values(值1,值2,…) 值的个数要与字段完全相同
insert into 表名称(字段1,字段2…) values(值1,值2,…)
删:delete from 表名 where 条件;
改:update 表名 set 字段1 = 值1,字段2 = 值2 where 条件
查:select id/* from 表名;
重建表,清空所有数据,留下框架:
truncate table t1;

表查询的完整语句

select distinct (* or 字段名 or 四则运算) from 表名 注:distict 去重
where 条件
group by 字段
having 条件
order by 排序
limit 控制显示几条

concat 用法:仅仅用于字符串的拼接,在字段的数据前加上字段名
select concat (‘姓名’,name),concat(‘英语’,english) from stu;

聚合函数的定义:
sum,count,avg,man,min等都是聚合函数

select dept from emp where avg(salary) > 5000;
error: Invalid use of group function
报错原理解析
where 条件中不允许使用分组函数 应该把where 改成having

group_concat函数 用于拼接组内记录的某个字段 拼接为一个字符串
select dept,group_concat(name) from emp group by dept;

多表查询

内链接查询:select *from dept,emp where dept.id=emp.dept_id;
优化版内链接查询:select *from dept join emp on dept.id=emp.dept_id;
左外连接查询: select *from dept left join emp on dept.id=emp.dept_id;
全外链接查询 :select *from dept left join emp on dept.id=emp.dept_id
union
select *from dept right join emp on dept.id=emp.dept_id;

子查询

当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询)
当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时,
例如:给出一个部门名称,需要获得该部门所有的员工信息
需要先确定部门的id,
然后才能通过id确定员工
内链接查询方式:
select emp.name from emp inner join dept on dept.id = emp.dept_id where dept .name = “财务”;
子查询方式:
第一步 需要知道财务部的id
select id from dept where name = “财务”;
第二步 用查询的到的id作为判断条件查询emp
select name from emp where dept_id = 3;
3不能写死 是上一个查询的结果 所以直接写在后面 加上括号就变成了子查询
select name from emp where dept_id =(最好把=改成in) (select id from dept where name = “财务”);

Mysql 用户管理

创建账号语句

create user 用户名@“ip地址” “identified” by 密码;
create user tom@“192.168.101” identified by “123”;

授权语句

grant all on . to tom@“localhost” identified by “123”;
#该语句中的all 增删改查所有权限 但是不包括grant权限
#. 表示任何数据库 任何表 存储在user表

grant all on db.* to tom@“localhost” identified by “123”
#db.* 该用户可以操作db数据库的任何表 存储在 db表

grant all on db.t1 to tom@“localhost” identified by “123”
#db.* 该用户可以操作db数据库的t1表 存储在 table_privi表

grant select(id) on db.t1 to tom@“localhost” identified by “123”
#精确到字段 和 操作级别
#该用户只能查询 db下的t1表

grant all on . to tom@“localhost” identified by “123” with grant option;
#with grant option 表示该账户可以将权限授予其他用户

REVOKE all privileges [column] on db.table from user@“host”;
#收回权限

drop user@“host”
#删除用户

flush privileges;
#刷新权限表 一些时候权限信息可能会有所延迟 可以执行该语句立即刷新权限信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值