首页 > 代码库 > Mysql
Mysql
DDL语句:操作表的语句;
DML语句:操作表的数据和字段的语句;
DCL语句:是数据库控制功能,是设置或更改数据库用户或角色权限的语句;
mysql是一个关系型数据库;
特点:体积小,成本低,开放源码,
安装:yum安装,rpm安装,源码安装;
存储引擎:InnoDB,myISAM,Memory
InnoDB是mysql的一种存储引擎,给mysql提供了事务、回滚、崩溃修复能力、多版本并发控制的事务安全。特点:支持事务和外键
修改存储引擎:alter table 表名 engine=存储引擎名
连接登录:mysql -h 主机名或ip -P 端口号 -u user -p密码 ---->-p与密码之间没有空格
数据库授权:为用户授权 grant 权限 on 数据库对象 to 用户
取消用户权限:revoke 权限 on 数据库类型 from 用户
用户设置密码:set password ---set password for 用户=password("密码");
修改密码:update user set password=password("新密码") where user=‘用户‘;
删除密码:delete from user where user =‘用户‘;
数据类型:
数字型:一般int
浮点型:float double
日期与时间类型:date 日期 yyyy-mm-dd;time 时间 hh:ii:ss;year 年份;
datetime timestamp都是日期与时间混合类型;
datetime的取值范围大于timestamp
字符串类型:char() 定长;varchar()
二进制类型
显示所有数据库:show databases
选择默认数据库:use dbname
显示所有表:show tables
创建数据库:create database 数据库名
删除数据库:drop database 数据库名
主键:primary key ====not null + unique
唯一标示一条记录;不能重复;不允许为空;主键只能有一个;
作用:保证数据的完整性;
外键:foreign key
表的外键是另外一张表的主键(主外键关联),外键可以有重复,可以为空,一个表可以有多个外键;
作用:与其他表建立联系用的;
约束:unique 唯一;auto_increment 整数列自增长;unsigned 无序号整数;default 默认值 /cur_timestamp创建新记录时默认保存当前时间 默认约束;
创建表:create table 表名 (
列名 列类型 列约束,
列名 列类型 列约束,
......
) ----->每列之间用逗号隔开,最后一列什么都不用
查看表结构:desc 表名;show create table 表名;
修改表名:alter table 旧表名 rename [to] 新表名;
修改字段数据类型:alter table 表名 modify 属性名 数据类型
alter table 表名 change 旧属性名 新属性名 新数据类型;
增加字段:alter table 表名 add 列名 数据类型 [完整性约束条件] [first|after 列名2] ----first和after是修改字段的排列位置
增加外键:alter table 表名 add constraint 外键别名 foreign key(外键的字段名) references 主表(字段名)
删除外键:alter table 表名 drop foreign key 外键别名 ----->主外键关联后先删除外键才能删除主键;
删除字段:alter table 表名 drop 字段名;
删除:truncate 表名/delete from 表名 ----清空数据
drop table 表名 ----删除表
插入数据:insert into ... values(......); ---插入一条数据
insert into ... values(......),(......),(......),(......),.....; ----插入多条数据
insert into 表名2 select * from 表名1; ----查询出数据插入另一个表,表2要已存在
replace:1.replace into 表名 [(字段列表)] values (.....); ----插入一条数据
2.replace [into] 表名2 select * from 表1; ----查询出数据插入另一个表,表2要已存在
3.replace [into] 表名 set 列名1=值1,列名2=值2
insert 与replace的区别:replace将delete和insert合二为一了。当使用replace时,如果新数据的主键值或者唯一约束的字段值已有相同的值时,会删除已存在的数据,然后再插入新的数据。
更新数据:update 表名 set 列名1=值1,......,列名n=值n where ........;
查询:select ....... from ....... where ......
多表:select ..... from 表1,表2 where 表1字段=表2字段
inner join 内连 -----显示两张表所有数据
left join 左连 -----显示左表全部+右表符合条件的
right join 右连 -----与左连相反
in/not in (多个结果);
起别名:as 或者直接 空格输入表名 ----->列名 as 别名;列名 别名
表达式:or 可同时使用多个or 多着满足其一就行
and 可同时使用多个and 要全部满足
between ... and ... 在这个范围内
like 模糊查询 _一个字符 %任意字符
null/not null/‘‘ 为空或不为空
order by 排序 放最后 asc升序 desc降序 默认升序
group by 分组 与聚合函数和having一起使用 having放group by 后面
去重:distinct 放列名之前
限制查询条数:limit 数字 放最后 ----->select * from user limit 5/10,20;
聚合函数:count();sum();avg();max();min();
合并结果集:select 语句 union select 语句 ----会自动去重
union all ----不自动去重 但是效率高于union
子查询:=;in/not in; exist/not exist
数据库备份:
mysqldump 先查出需要备份的表结构,再在文本文件中生成一个create语句,将表中所有记录转换成一条insert语句,然后还原。
mysqldump -u用户名 -p密码 -A/-n/-t/-d>表名 ----A全部表/只导出数据,不添加create database/只导出数据,不添加create table语句/只导出表结构
恢复备份:mysql -u用户名 -p密码 [数据库]<表名
索引:
特殊数据库结构,快速查询数据,提高数据库性能的重要方式;
普通索引:create index 索引名 no 表名(列);
alter table 表名 add index 索引名(列);
唯一索引:create unique index ......
alter table 表名 ......
多个列用逗号隔开;
删除索引:drop index 索引名 on 表名;
存储过程:
delimiter $$; -----修改结束符
create procedure 存储过程名(参数,参数2...) ---参数in/out/inout 在参数之前
begin
declare ......
set .......
sql语句块;
end
$$;
delimiter;
set ......
call 存储过程名(); ---调用存储过程
if循环
if 条件 then
语句
elseif 条件 then
语句
else
语句
end if;
case语句
case value
where 条件 then
语句
when 条件 then
语句
else
语句
end case;
while循环 ---多用于造数据
while 条件 do
语句
end while;
repeat循环 ---至少会执行一次
repeat
语句
until 条件
end repeat;
Mysql