mysql -u root -p :登录数据库
show databases 显示所有数据仓库
数据库:
create database 数据库名; : 创建数据库
create database 数据库名 character set 编码表名; :创建数据库使用指定编码表
drop database; :删除数据库
select database(); :查询正在使用的数据库
use 数据库名; :使用数据库
数据表结构:
创建数据表:creat table 表名(列名 类型(长度),列名 类型(长度)…);
varchar\char 字符串\字符
保存字节数据:BLOB
保存字符数据:TEXT
boolean–BIT
date 日期类型
show tables; 显示所有表
desc 表名; 查看表结构
查看编码集: show create table 表名
修改编码表:alter database 数据库名称 character set 编码表名;
单表创建约束:
格式: 列名 列类型 约束;
primary key auto_increment 主键 自动增长
unique 唯一约束 该字段不能重复
not null 不能为空
数据表结构的修改:(add、drop、modidy\change)
alter table 表名 增(add)\删(drop)\改(modify)、(change修改列名—旧列名) 列名 类型(长度) 约束;
修改表名:rename table 旧表名 to 新表名
修改表的编码集:alter table 表名 character 编码集;
删除数据表:drop table 表名;
数据表内容的修改:
create read update(修改) delete
插入数据:insert into 表名(列名,列名…..) values(值,值….);
简化版插入一条记录:insert into 表名 values(值,值….);
查询表中所有数据:select * from person;
修改记录:update 表名 set列名=值,列名=值…[where 条件语句];
删除记录:delete from 表名 [where 条件语句]; 表存在 保留主键记录 一条一条的删
truncate table 表名; 删除表并建立新表 (数据无法找回)
查询记录:
select*form 表名 where 列名 in(值1,值2….);
where name=‘张三’;
where name like‘%赵%’ ‘赵’; 模糊查询
where age is (或不是空的not) null; 查询为空的记录
select distinct age from 表名;查询去重
排序:
升序\降序输出 :select * from 表名 order by score asc\desc;
select * from 表名 order by age asc, score desc; 按年龄升序排,年龄相同按成绩降序排
select name from person order by id asc; 查询表中的姓名 按ID升序排序
起别名 : select age as 年龄,score as 分数 from 表名;as可省略
查询记录条数:
select count(*) from 表名 where age>80;
求和:
select sum(score) from 表名;
select sum(age,score) from 表名;
select sum(ifnull(age,0),score) from 表名;如果年龄为null 设置默认值
select truncate(sum(age,score),2)from 表名; 结果保留两位小数
求平均值:
select avg(age) from 表名; 不包含age为空记录
最大值:最小值:
select max(score),min(score) from 表名;
group by 分组函数:
格式:select 分组的列名,聚合函数(指sum、avg…) from 表名 group by 分组的列名
例:select name,sum(score) from 表名 group by name;求出每个学生的平均分
执行顺序:
from 1
where 2
group by 3
having 4
order by 5
select 6
聚合函数只能出现在345;
having 用于限制聚合函数
求平均分大于80的学生:
select name,avg(score) from 表名 group by name having avg(score)>80;
求平均分大于80的学生(保留两位小数):
select name ,truncate(avg(score),2)from student group by name having avg (score)>80;
数据库备份和恢复:dos窗口操作
备份:
mysqldump -u 用户名 -p 数据库名 > 磁盘绝对路径
恢复:
mysql -u 用户名 -p 导入的库名(必须先在mysql中新建库名) < 磁盘绝对路径
权限设置:
语法: grant 权限1,权限2 on 数据库名.表名(*.*表示所有数据库所有表) to 用户名@'ip地址';
给user10 用户授予 添加、修改、删除、选择、添加、修改、删除 day08库中emp表权限:
grant create,alter,drop,select,insert,update,delete on day08.emp to ‘user10’@’%’;
授予所有权限 访问day08的所有表 给user10这个用户
grant all on day08.* to ‘user10’@’%’;
撤销用户权限:
语法:revoke 权限1, 权限2….. on 数据库.表 from ‘用户名’@’IP地址’;
撤销用户zhangsan对 数据库day07的所有表的查询权限:
revoke select on day07.* frpm zhangsan@’localhost’;