前言
本文主要是汇总记录,我自己在工作中经常使用的,MySQL数据库的SQL语句,而不是这些SQL语句的说明详解。如果需要快速了解常用MySQL操作,可以查看其他的网友的教程,如:21分钟 MySQL 入门教程
本文第一部分是单独的SQL语句整理,第二部分为组合这些SQL语句的存储过程写法的介绍。
MySQL常用的语句
登陆数据库系统
- 本地: mysql -u [username] -p [password]
- 远程: mysql -h [ip] -P [port] -u [username] -p [password]
库的操作
- 创建数据库: create database [databasename]
- 显示数据库: show databases
- 进入数据库: use [databasename]
- 删除数据库: drop database if exists [databasename]
表的操作
- 创建表:create table [databasename] (col1 bigint not null,col2 varchar(15),col3 double precision,col4 bigint,primary key (col1)) ENGINE=InnoDB
- 显示表: show tables
- 删除表: drop table [tablename] if exists ORDERS
- 获取列信息: desc [columnname]
- 清空表: truncate table [tablename];
- 复制表的结构到新表: create [newtable] like [oldtable]
- 复制表的数据到新表: insert into [table1] (col1, col2, …) select col1, col2, … from [table2] where [condition]
- 插入数据时覆盖已有数据: replace into [table1] (col1, col2, …) select col1, col2, … from [table2] where [condition]
- 插入数据时忽略已有数据: insert ignore into [table1] (col1, col2, …) where [condition]
- 重命名表: alter table [tablename] rename [newtablename]
- 增加一列: alter table [tablename] add column [columnname] [type] default [default]
- 修改列名: alter table [tablename] change [oldlolname] [newcolname] [type]
- 删除一列: alter table [tablename] drop [colname]
主键操作
- 设置主键: alter table [tablename] add primary key([colname])
- 删除主键: alter table [tablename] drop primary key
- 设置自增字段(前提是该列为一个key): alter table tb change [colname] [colname] int(10) not null auto_increment=1
- 删除自增字段: alter table [tablename] change [colname] [colname] int(10)
记录
- 插入记录: insert [table1] (col1,col2…) [table2] (val1,val2…)
- 删除记录: delete from [tablename] where [condition]
- 查找记录: select [columnname] from [tablename] where [condition]
- 修改字段值: update [tablename] set [col]=[val],… where [condition]
用户的操作
- 添加用户: insert into mysql.user(Host,User,Password) values(“localhost”,”test”,password(“1234”));
- 删除用户: delete from user where User=’test’ and Host=’localhost’
- 分配所有权限: grant all privileges on testDB.* to test@localhost identified by ‘1234’
- 刷新权限: flush privileges
- 修改密码: mysqladmin -u root -p password [newpassword]
参数与状态
- 查看配置参数(以wait_timeout为例): show variables like ‘%wait_timeout%’
- 查看状态: show status
- 设置参数: set [paraName] = [value]
- 设置全局参数(重启后仍然会失效): set global [paraName] = [value]
存储过程
引用系统变量
- 全局变量: @@global.[varname]
- 局部变量: @@session.[varname] 或者 @@local.[var_name]
如果在变量前面没有级别限定,则优先会话级别的变量。
声明或定义变量
变量的作用域只能在begin…end块中,不区分大小写
1
declare [val] [type];
创建存储
注意begin和end后无分号,不能有return
1
2
3
4
5
6
7
8
9
10create procedure [procedurname]
(
[param] [type],[param] [int],.....
)
begin
...;
...;
...;
end
}调用存储过程
1
call [procedurname]([param,...])
删除存储过程
1
drop procedure if exists [proceduename]
实例
delimiter $$命令就是将语句的结束符从分号修改成其他符号,这里指的是$$为结尾
1
2
3
4
5
6
7
8
9
10
11
12
13delimiter $$
drop procedure if exists wk;
create procedure wk()
begin
declare i bigint;
set i = 17011210000;
while i < 17011213999 do
insert ignore into mini_s(pn) values(i);
set i = i+1;
end while;
end $$
call wk();