How to mySQL

本文收录mysql基本操作语句,以供查阅。

数据库操作

/* 创建数据库 */
create database [if no exists] `mydatabase`
	[character set somecharset]
	[collate somecollate];
/* 查看数据库定义 */
show create database `mydatabase`;
/* 修改数据库 */
alter database [`mydatabase`] [character set somecharset] [collate somecollate];
/* 删除数据库 */
drop database [if exists] `mydatabase`,...;
/* 查看所有数据库 */
show databases;
/* 切换数据库 */
use `mydatabase`;

创建数据表

/* 创建表 */
create [temporary] table [if no exists] `mytable`(
	-- 字段类型
	`int_like` tinyint(len)|smallint(len)|mediumint(len)|int(len)|bigint(len) [unsigned],
	`float_like` float|double|decimal precision(len,dec) [unsigned],
	`bool_like` bit|bool|boolean,
	`date_like` datetime|date|time|timestamp|year,
	`char_like` char(len)|varchar(len),
	`text_like` tinytext|text|mediumtext|longtext,
	`binary_like` tinyblob|blob|mediumblob|longblob,
	`enum_like` enum(var1,var2,...)|set(var1,var2,...),
	
	-- 字段可选项
	-- 非空约束
	`myfiled` fieldtype [not null | null],
	-- 默认值
	`myfiled` fieldtype [default var|null],
	-- 自增
	`intfiled` intfiletype [auto_increment],
	-- 创建时候自动生成时间
	`myfield` datefieldtype [default current_timestamp],
	-- 插入时候自动修改时间
	`myfield` datefieldtype [on update current_timestamp],
	-- 注释
	`myfield` fieldtype [comment commentstatement],
	
	-- 实体完整性约束
	primary key(`myfield1`,...),
	-- 索引
	index|unique|fulltext|spatial `mykey`(`myfield`,...),
	-- 引用完整性约束
	[constraint `myconstraint`]
	foreign key(`myfield`,...) references on `myothertable`(`myfield`,...) 
		[on delete cascade|no action|restrict|set null] 
		[on update cascade|no action|restrict|set null],
	-- 域完整性约束
	[constraint `myconstraint`] check(boolexpr)
)[engine=someengine] [default charset=somecharset] [collate=somecollate] 
[partition by partitionstatement];
-- 从现有数据创建
create table [if no exists] `mytable`[(tablestatement)]
	select selectstatement;
-- 从现有表格结构创建
create table [if no exists] `mytable` like `myothertable`;
/* 查看数据表定义 */
show create table `mytable`;
/* 重命名表 */
alter table `myoldtable` rename to `mynewtable`;
rename table `myoldtable` to `mynewtable`,...;
/* 删除表 */
drop [temporary] table [if exists] `mytable`,...;
/* 查看所有表 */
show tables [from `mydatabase'];

变更数据表结构

/* 增加字段 */
alter table `mytable` add [column] `mynewfield` filedstatement [first | after `myfield`],...;
/* 删除字段 */
alter table `mytable` drop [column] `myfield`,...;
/* 修改字段 */
alter table `mytable` modify [column] `myfield` fieldstatement [first | after `myotherfield`],...; 
/* 删除并增加字段 */
alter table `mytable` change [column] `myoldfield` `mynewfield` fieldstatement [first | after `myfield`],...;

/* 创建主键 */
alter table `mytable` add primary key (`myfield`,..);

/* 创建索引 */
create index|unique|fulltext|spatial `myindex` on `mytable'('myfield`,...),...;
alter table `mytable` add index|unique|fulltext|spatial `myindex`(`myfield`,...),...;
/* 删除索引 */
drop index `myindex` on `mytable`,...;
alter table `mytable` drop index `myindex`,...;

/* 创建外键 */
alter table `mytable` add foreign key `myconstraint`(`myfield`) referencestatement,...;
/* 删除外键 */
alter table `mytable` drop foreign key `myconstraint`;

/* 修改存储引擎 */
alter table `mytable` set engine=someengine;

/* 修改分区 */
alter table `mytable` reorganize partition `mypartition` into partitionstatement;

变更数据

/* 插入多条数据 */
insert [ignore] into `mytable`[(`myfield`,...)] values(var1,...),...;
/* 从现有表导入数据 */
insert [ignore] into `mytable`[(`myfield`,...)] select selectstatement;
/* 从文件批量导入数据 */
load data local infile "myfile.dump" into table `mytable`;

/* 更新数据 */
update `mytable` set `myfield`=var,... [where wherestatement];

/* 删除数据 */
delete from `mytable` [where wherestatement];
/* 多表删除 */
delete `mytable`,... from `mytable` joinstatement [where wherestatement];
delete from `mytable`,... using `mytable` joinstatement [where wherestatement];

检索数据

/* 检索数据 */
select [distinct] `myfield1` [as `mynewname`],...
	from `mytable` [inner|left|right join `myothertable`
		on `mytable`.`myfield` = `myothertable`.`myfield`],...
	where wherestatement
	group by groupstatement
	having havingstatement
	order by `myfield` [asc|desc],...
	limit [offset,] n|-1;

事务

/* 事务处理 */
start transaction | begin
	savepoint `mysavepoint`;
	statement;
	rollback to `mysavepoint`;
commit|rollback;

视图

/* 创建视图 */
create [algorithm=merge|temptable|undefined]
	[definer=`user`@`host`]
	[sql security definer|invoker]
view `myview`[(`myfield`,...)]
	as select selectstatement
	[with check option];
/* 删除视图 */
drop view `myview`,...;

存储过程

/* 创建存储过程 */
create [definer=`user`@`host`]
	[sql security definer|invoker]
procedure `myprocedure`([in|out|inout `myarg1` fieldtype,...])
begin
	-- 声明变量
	declare `myvar` fieldtype [default initvar];
	-- 赋值变量
	set `myvar` = var;
	-- 流程控制
	-- if
	if expr then
		statement;
	elseif expr then
		statement;
	else 
		statement;
	end if;
	-- switch
	case expr
		when var1 then
			statement;
		when var2 then
			statement;
		else 
			statement;
	end case;
	-- while
	while boolexpr
		statement;
	end while;
	-- do...while
	repeat
		statement;
	until boolexpr end repeat;
end
/* 调用存储过程 */
call myprocedure([myarg1, @myarg2,...]);
/* 删除存储过程 */
drop procedure `myprocedure`,...;

存储函数

/* 创建存储函数 */
create [definer=`user`@`host`]
	[sql security definer|invoker]
function `myfunction`([`myarg1` fieldtype,...])
returns fieldtype
begin
	-- 游标
	declare mycursor cursor for select selectstatement;
	open mycursor;
	fetch mycursor into var1,...;
	statement;
	return var;
end
/* 调用存储函数 */
select myfunction([myarg1,...]);
/* 删除存储函数 */
drop function `myfunction`,...;

触发器

/* 创建触发器 */
create trigger `mytrigger` 
    before|after insert|delete|update
    on `mytable` 
    for each row
begin
    select old.myfield, new.myfield;
    statement;
end
/* 删除触发器 */
drop trigger `mytrigger`,...;

定时器

/* 创建事件 */
create event `myevent`
	on schedule at sometime | every timeinterval 
	[starts sometime] [ends sometime]
do
	statement;
/* 启动事件 */
alter event `myevent` enable;
/* 禁用事件 */
alter event `myevent` disable;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值