数据库操作
创建数据库
create database 库名 character set 编码
删除数据库
drop database 库名
数据表操作
创建表
create table 表名(
字段1 数据类型,
字段2 数据类型,
...
)
向表中添加数据(方法1)
insert into 表名(字段1,字段2) values(值1,值2)
向表中添加数据(方法2,适合全数据)
insert into 表名 values(值1,值2)
向表中添加数据(方法3,适合单个数据)
insert into 表名 set 字段1=值1,字段2=值2
向表中插入多条数据
insert into 表名 values()
删除数据
delete from 表名 where 条件 -- 删除某种数据
delete from 表名 -- 全部删除,记录状态自动增加
truncate table 表名 -- 全部删除,自动增加从新计数
数据表修改
update 表名 set 字段1=值1,字段2=值2 where 条件
DQL查询
查看某个数据库详细信息
show create database 库名
查看mysql服务器下所有的库
show databases
查看当前用户链接的是哪种数据库
select database()
查看指定的数据库下边有哪些表
show tables
DDL增删改查
查表结构
desc 表名
打印某张表sql创建信息
show create table 表名字
对已经存在的表进行重命名
rename table 旧表名 to 新表名
向已经存在的表中添加字段
alter table 表名 add 字段名 数据类型
对表中的字段进行重命名
alter table 表名 change 旧字段名 新字段名 数据类型
删除一个表中的字段
alter table 表名 drop 被删除的字段名
备份还原
备份
mysqldump -uroot -p123456 需要备份的数据库名称>备份后的sql脚本名称
恢复
-- 进入mysql环境,创建一个库,在库下边还原数据
source 备份的数据库脚本
数据库类型的属性
常见的数据类型:varchar float int date datetime text(65535)
默认值:default '默认值'
非空:not null
自动增长:auto_increment
主键:primary key -- 主键数据不能重复 一张表只能有一个主键
unique -- 字段内容不能重复
逻辑运算符
and --与
or -- 或
not -- 非
xor -- 异或
查询约束
分组查询
group by
查询字段是否包含某个内容
having 字段=xx值
分页查询
limit x,y -- x:开始下标 y:个数
排序
order by 字段 升序/降序
-- 降序(DESC)
-- 升序(ASC)
聚合函数
-- 最大值
max()
-- 最小值
min()
-- 平均值
avg()
-- 求和
sum()
-- 统计个数
count()
多表查询
select * from 表1,表2 where 条件
合并集合
union
union all
内连接
inner join
外连接
left join -- 左外连接
right join -- 右外连接
模糊查询
like '%XX' -- 搜索结尾为XX的
like '%XX%' -- 搜索包含XX的
视图
创建视图
create view 视图名 as 查询语句
-- eg:
create view view_all
as select * from dept d inner join emp e
on d.id = e.deptId
删除视图
drop view 视图名
查询视图中的数据
select * from 视图名 where 条件
查看视图
show full tables
查看结构
show create procedure 存储名;
删除视图中的某一条数据(多表不能删)
delete from 视图名 where 条件
向视图中添加数据
insert into 视图名 set 字段 = 值
视图中修改数据
update 视图名 set 字段 = 值 where 条件
事务
多组操作要么全部成功要么全部失败
开启事务:start transaction
回滚事务:(如果事务提交后,不能够回滚) rollback
提交事务:commit
事务的4大特性:
- 原子性:同一个事务中多组操作不能够分割,必须是一个整体
- 一致性:事务操作前与事务操作后总量保持一致
- 隔离性:多个事务之间互不干扰
- 脏读
- 虚读和幻读
- 不可重复读
- 持久性:数据一旦进入到库中,表中,就永久存在
存储过程
存储
DELIMITER //
--in参数 out返回
CREATE PROCEDURE 存储过程名(in/out 参数1 数据类型1,in/out 参数2 数据类型2)
BEGIN
代码块;
END
//
DELIMITER ;
调用
call 存储过程名(参数名1,参数2)
-- 有返回值的
call 存储过程名(参数名1,参数2,@res)
select @res
代码块结构
-- if条件
if XXX then
XXX;
elseif
XXX;
else
XXX;
end if;
-- case选择分支
case i
when XX then
XXX;
when XX then
XXX;
else
XXX;
end case;
查看存储过程表
select name from mysql.proc -- 可以加where
删除
drop procedure 表名;