MySQL学到的操作语法格式集合

语法集合

          • 1 查看所有数据库/数据表
          • 2 查看想要看的数据库/数据表信息
          • 3 删除数据表/数据库
          • 4 选择进行操作的数据库
          • 5 创建数据库
          • 6 创建数据表(同时也是创建数据表的时候创建索引)
          • 7 修改数据表名
          • 8 修改字段名
          • 9 修改字段的数据类型
          • 10 添加字段
          • 11 删除字段
          • 12 修改字段的排列位置
          • 13 使用create index语句在已经存在的表上创建索引
          • 14 使用alter table语句在已经存在的表上创建索引
          • 15 添加数据--可全部添加也可部分添加
          • 16 为表中所有字段添加数据insert语句中不指定字段名
          • 17 额外学到的一种添加方式
          • 18 同时添加多条记录
          • 19 更新数据
          • 20 delete删除数据
          • 21 truncate删除数据
          • 22 查询语句
          • 23 为表取别名
          • 24 为字段取别名
          • 25 添加外键约束
          • 26 删除外键约束
          • 27 交叉连接
          • 28 内连接
          • 29 外连接
          • 30 事务开启/提交/回滚
          • 31 设置事务的隔离级别
          • 32 创建存储过程
          • 33 在存储过程中定义变量
          • 34 定义条件
          • 35 定义处理程序
          • 36 光标的使用
          • 37 流程控制语句
          • 38 储存过程的使用
          • 39 修改存储过程
          • 40 修改存储过程
          • 41 创建视图
          • 42 查看视图定义信息
          • 43 修改视图
          • 44 更新视图
          • 45 删除视图
          • 46 数据备份

本来是不想弄这个目录的,因为太多了,但是又不想翻,所以还是弄了个。

1 查看所有数据库/数据表
show databases/tables;
##查看数据表前当前要选择数据库
2 查看想要看的数据库/数据表信息
show create database/table 数据库名/数据表名 [\G];
#\G可选,改变显示的格式
#另一种查看数据表的语句:
describe 表名;
#或者简写如下:
desc 表名;
3 删除数据表/数据库
drop database/table 数据库名/表名;
4 选择进行操作的数据库
use 数据库名;
5 创建数据库
create database 数据库名;
6 创建数据表(同时也是创建数据表的时候创建索引)
create table 表名
(
	字段名1,数据类型[完整性约束条件],
	字段名2,数据类型[完整性约束条件],
	...
	字段名n,数据类型[完整性约束条件],
	[unique][fulltext][spatial] index|key [别名](字段1 [(长度)] [asc|desc])
)[这里可改变引擎 比如 engine = MyISAM];

7 修改数据表名
alter table 旧表名 rename [to] 新表名;
8 修改字段名
alter table 表名 change 旧字段名 新字段名 新数据类型;

9 修改字段的数据类型
alter table 表名 modify 字段名 数据类型;

10 添加字段
alter table 表名 add 新字段名 数据类型 [约束条件][first|after 已经存在字段名]
#first是可选参数,用于将新添加的字段设置为表的第一个字段,after也是可选参数,用于将新添加的字段添加到指定的“已经存在的字段名”的后面
11 删除字段
alter table 表名 drop 字段名;
12 修改字段的排列位置
alter table 表名 modify 字段名1 数据类型 first|after 字段名2;
#字段名1是要修改位置的字段,数据类型是字段1的数据类型,first和after作用和上面提到的一样。
13 使用create index语句在已经存在的表上创建索引
create [unique|fulltext|spatial] index 索引名 on 表名 (字段名[(长度)] [asc|desc])
14 使用alter table语句在已经存在的表上创建索引
alter table 表名 add [unique|fulltext|spatial] index 索引名 (字段名 [(长度)] [asc|desc])
15 添加数据–可全部添加也可部分添加
insert into 表名(字段1,字段2,···) values(1,2,···);
#字段可选择不全部写上,不全写就是添加部分值了,值要一一对应字段
16 为表中所有字段添加数据insert语句中不指定字段名
insert into 表名 values(1,2,···)
#值的顺序要和字段在表创建时的顺序一样。
17 额外学到的一种添加方式
insert into 表名 set 字段名1 =1[,字段名2 =2,···]
18 同时添加多条记录
insert into 表名 [(字段1,字段2,···,字段n)] values(1,2,···),(1,2,···),···,(1,2,···);
#字段名可选,后面的值的顺序要对应
19 更新数据
update 表名 set 字段1 =1[,字段名2 =2,···] [where 条件表达式];
#很容易理解吧,where的话是可选的,用于指定更新数据需要满足的条件
#更新全部的数据就不用where就把全部的数据全改了
20 delete删除数据
delete from 表名 [where 条件表达式];
#删除全部数据不选where就行了
21 truncate删除数据
truncate [table] 表名;
#只能全部删除,要注意和delete的区别
22 查询语句
# 1
select [distinct] * |字段名1,字段名2,字段名3,··· from 表名
[where 条件表达式1] 
[group by 字段名 [having 条件表达式2]] 
[order by 字段名 [asc|desc]]
[limit [offset,] 记录数];
# select [distinct] * |字段名1,字段名2,字段名3,··· -> 从表中查询指定字段
# * -> 通配符,表示所有字段,二者选一
# distinct-> 可选参数,剔除查询结果中重复的数据
# from 表名 -> 从指定的表中查询数据
# where 条件表达式1 -> 可选参数,指定查询条件
# group by 字段名 [having 条件表达式2] -> group by可选参数,将查询结果按指定字段分组,having也是可选参数,用于对分组后的结果进行过滤
# order by 字段名 [asc|desc] -> order by可选参数,将查询结果按照指定字段排序,排序方式由asc或desc控制,不指定参数默认为升序排序
# limit [offset] 记录数 -> limit可选参数,限制查询结果的数量,offest可选,表示偏移量,默认为0,从第一个数据开始,记录数表示返回查询记录的条数
# 2
select [distinct] * |字段名1,字段名2,字段名3,··· from 表名
where 字段名 [not] in(元素1,元素2,···);
#in关键字用于判断某个字段的值是否在指定集合中,若在则被查询出来
# 3
select [distinct] * |字段名1,字段名2,字段名3,··· from 表名
where 字段名 [not] between1 and2;
#不难理解,通常情况下值1小于值2,否则查不出结果
# 4
select [distinct] * |字段名1,字段名2,字段名3,··· from 表名
where 字段名 is [not] null;
# 5 
select [distinct] * |字段名1,字段名2,字段名3,··· from 表名
where 字段名 [not] like '匹配字符串';
# 6 
select [distinct] * |字段名1,字段名2,字段名3,··· from 表名
where 条件表达式1 and/or 条件表达式2 [··· and 条件表达式n]; 
# 7
select count(*) from 表名;
select sum(字段名) from 表名;
select avg(字段名) from 表名;
select max(字段名) from 表名;
select min(字段名) from 表名;
23 为表取别名
select * from 表名 [as] 别名;#as用于指定表的别名,可以不写
24 为字段取别名
select 字段名 [as] 别名 [,字段名 [as] 别名, ···] from 表名;
25 添加外键约束
alter table 表名 add constraint fk_id foreign key(外键字段名) references 外表表名(主键字段名)
[on default {
    cascade|set null|no action|restrict}]#添加外键约束参数说明
[on update {
    cascade|set null|no action|restrict}]#添加外键约束参数说明
#cascade:删除包含与已删除键值有参照关系的所有记录
#set null:修改包含与已删除键值有参照关系的所有记录,使用null值替换(不能用于已标记为not null 的字段)
#no action:不进行任何操作
#restrict:拒绝主表删除或修改外键关联列(在不定义on delete和on update子句时,这是默认设置,也是最安全的设置)
26 删除外键约束
alter table 表名 drop foreign key 外键名;
27 交叉连接
select * from1 cross join2;
28 内连接
select 查询字段 from1 [inner] join2 on1.关系字段 =2.关系字段
#inner join用于连接两个表,on指定连接条件,inner可以省略
29 外连接
select 所查字段 from1 left|right [outer] join2 on1.关系字段 =2.关系字段 where 条件;
30 事务开启/提交/回滚
start transaction;
commit;
rollback;
31 设置事务的隔离级别
set session transaction isolation level read uncommitted|read committed|repeatable read|serializable;
32 创建存储过程
create procedure sp_name([proc_parameter]) [characteristics···] begin routine_body end;
# create procedure 用来创建存储过程的关键字
# sp_name 为存储过程的名称
# proc_parameter 为指定存储过程的参数列表,该参数列表的形式如下
	[in|out|inout]param_name type
	# in表示输出参数,out表示输出参数,inout表示既可以输入也可以输出,param_name表示参数名称,type表示参数的类型,它可以是MySQL数据库中任意类型
# characteristics 用于指定存储过程的特性,它的取值说明具体如下:
	1)language sql #说明routine_body部分是由SQL语句组成的,当前系统支持的语言为SQL,SQL是language的唯一值
	2)[not]deterministic #指明存储过程执行的结果是否确定
	# deterministic表示结果是确定的。每次执行存储过程时,相同的输入会得到相同的输出,
	# not deterministic表示结果是不确定的,相同的输入可能得到不同的输出。
	# 默认为not deterministic
	3){
    contains sql|no sql|reads sql data|modifies sql data} #指明子程序使用sql语句的限制。
	# contains sql 表明子程序包含sql语句,但是不包含读写数据的语句
	# no sql 表明子程序不包含sql
	# reads sql data 说明子程序包含读写数据的语句
	# modifies sql data 表明子程序包含写数据的语句
	# 默认为 contains sql
	4) sql security{
    definer|invoker} 指明谁有权限来执行。
	# definer 表示只有定义者才能执行
	# invoker 表示拥有权限的调用者可以执行
	# 默认情况下系统指定为definer
	5) comment'string' 注释信息,可以用来描述存储过程
# routine_body 是sql代码的内容,可以用begin···end来表示sql代码的开始和结束
33 在存储过程中定义变量
declare var_name[,varname]···date_type[default value];
# var_name 为局部变量的名称
# default value子句给变量提供一个默认值,该值除了可以被声明为一个常数之外,还可以被指定为一个表达式
# 如果没有default子句,变量初始值为null
# 定义了之后可以改变变量的默认值 如下语法:
set var_name = expr[,var_name = expr]···;
# 还可以用select···into为一个或多个变量赋值,下面的语句可以吧选定的列直接存储到对应位置的变量:
select col_name[···] into var_name[···] table_expr;
# col_name 是字段的名字 var_name是定义的变量的名字 table_expr是查询条件表达式,包括名称和where子句
34 定义条件
declare condition_name condition for [condition_type];
# condition_type 两种形式: sqlstate[value] sqlstate_value|mysql_error_code
# condition_name 是所定义的条件的名称
# condition_type 是条件类型
# sqlstate_value和mysql_error_code都可以表示MySQL的错误,sqlstate_value是长度为5的字符串类型错误代码,mysql_error_code为数值类型的错误代码
35 定义处理程序
declare handler_type handler for condition_value[,···] sp_statement
handle_type: continue|exit|undo
condition_value: sqlstate[value]|condition_name|sqlwarning|not found|sqlexception|mysql_error_code
# handler_type 为错误处理方式,参数值取三个值:continue、exit和undo
# continue 表示遇到错误不处理,继续执行
# exit 表示遇到错误马上退出
# undo 表示遇到错误后撤回之前的操作,MySQL暂时不支持这种操作
# sp_statement 参数为程序语句段,表示在遇到定义的错误时,需要执行的存储过程
# condition_value 表示错误的类型,可以有以下取值
	1) sqlstate[value] sqlstate_value #包含五个字符的字符串错误值
	2) condition_name #表示declare condition定义的错误条件名称
	3) sqlwarning #匹配所有以01开头的sqlstate错误代码
	4) not found #匹配所有以02开头的sqlstat错误代码
	5) sqlexception #匹配所有没有被sqlwarning或not found捕获的sqlstate错误代码
	6) mysql_error_code #匹配数值类型错误代码
36 光标的使用
declare cursor_name cursor for select_statement;
# cursor_name 是光标名称
# select_statement 表示select语句的内容,返回一个用于创建光标的结果集
# 打开光标和使用光标↓
open cursor_name
fetch cursor_name into var_name[,var_name]···
# cursor_name 表示参数的名称
# var_name 表示将光标中的select语句查询出来的信息存入该参数中,var_name必须要声明光标之前就定义好
# 关闭光标↓
close cursor_name
37 流程控制语句
# if 语句
if expr_condition then statement_list
	[elseif expr_condition then statement_list;]
	[else statement_list;]
end if;
# expr_comdition 是判断条件 statement_list 是sql语句列表
# case 语句一
case case_expr
	when when_value then statement_list;
	[when when_value then statement_list;]···
	[else statement_list;]
end case;
# case_expr 是条件判断表达式 when_value 表示表达式可能的值
# case 语句二
case
	when expr_condition then statement_list;
	[when expr_condition then statement_list;]
	[else statement_list;]
end case;
# loop 和 leave语句
[loop_label:]loop
	statement_list[leave loop_label];
end loop [loop_label];
# loop_label 表示loop语句的标注名称,可省略
# leval 语句用来退出任何被标注的流程控制构造
# iterate 语句
iterate label;
# 意思是再次循环,用于将执行顺序转到语句段的开头处。
# repeat 语句
[repeat_label:] repeat
	statement_list;
until expr_conditionend repeat[repeat_label];
# repeat_label 为repeat语句标注名称
# while 语句
[while_label:]while expr_condition do
	statement_list;
end while[while_label];
38 储存过程的使用
# 调用存储过程
call sp_name([parameter[,···]])
# sp_name 存储的过程名称 parameter 是存储过程的参数
# 查看存储过程一--存储状态
show {
    procedure|function} status [like 'pattern'];
# 返回子程序的特征,如数据库、名字、类型、创建者以及创建、修改日期。
# procedure和function分别表示查看存储过程和函数,like语句表示匹配的名称
# 查看存储过程二--存储状态
show create {
    procedure|function} sp_name;
# 返回一个可用来重新创建已经命名子程序的确切字符串
# 查看存储过程--存储信息
select * from information_schema.Routines
where routine_name = '存储过程名' and routine_type = 'procedure'\G;
# MySQL中存储过程和函数的信息存储在information_schema数据库下的Routines表中
39 修改存储过程
alter {
    procedure|function} sp_name [characteristic···];
# sp_name 存储过程名称或函数名称 characteristic表示要修改存储过程的那个部分,具体如下:
	# {contains sql|no sql|reads sql data|modifies sql data} 
		# contains sql 表明子程序包含sql语句,但是不包含读写数据的语句
		# no sql 表明子程序不包含sql
		# reads sql data 说明子程序包含读写数据的语句
		# modifies sql data 表明子程序包含写数据的语句
		# 默认为 contains sql
	# sql security{definer|invoker} 指明谁有权限来执行。
		# definer 表示只有定义者才能执行
		# invoker 表示拥有权限的调用者可以执行
		# 默认情况下系统指定为definer
	# comment'string' 注释信息,可以用来描述存储过程
40 修改存储过程
drop {
    procedure|function} [if exists] sp_name;
# sp_name 存储过程名称  if exists 表示如果出现不存在它可以避免发生错误,产生一个警告
41 创建视图
create [or replace] [algorithm = {
    undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with [cascaded|local] check option]
# create 创建视图的关键字
# or replace 如果给定此子句,表示该语句能够替换已有的视图
# algorithm 可选,表示视图的选择算法:
	# undefined 表示MySQL将自动选择要使用的算法
	# merge 表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分
	# temptable 表示将视图的结果存入临时表,然后使用临时表执行语句
# view_name 创建的视图名称
# column_list 可选,表示属性清单。指定了视图中各个属性的名,默认情况下,与select语句中查询的属性相同
# as 表示指定视图要执行的操作
# select_statement 是一个完整的查询语句,表示从某个表或视图中查出某些满足条件的记录,将这些记录导入视图中
# with with option 可选,表示创建视图时,需要满足跟该视图有关的所有相关视图和表的条件,该参数为默认值
	# cascaded 可选,表示创建视图时要保证在该视图的权限范围之内
	# local 可选,表示创建视图时,只需要满足该视图本身定义的条件即可
42 查看视图定义信息
describe|desc 视图名;
# 或者
show table status like '视图名';
# 或者
show create view 视图名;
43 修改视图
# ①
create or replace [algorithm = {
    undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with [cascaded|local] with option]
# 使用 create or replace view 语句修改视图时,如果修改的视图存在,那么将用修改语句对视图进行修改,如果视图不存在,将创建一个视图
# ②
alter [algorithm = {
    undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with [cascaded|local] check option]
44 更新视图
# ① 会把视图和视图对应的基本表都修改
update 视图名 set 字段名=value[,字段名=value,···] where 条件;
# ② 向基本表中插入新的数据,那么对应的视图中也会插入新的数据
insert into 表名 values ···
# ③ 会把视图和视图对应的基本表中的对应数据都删除
delete from 视图名 where 条件;
45 删除视图
drop view[if exists]
view _name[,view_name1]···
[restrict|cascade];
46 数据备份
mysql -uusername -ppasswprd dbname [tbname1[tbname2···~]]>filename.sql
# -u 后面的username是用户名
# -p 后面的password是登录密码
# dbname是需要备份的数据库名称
# tbname是数据库中的表名
# filename.sql表示备份文件的名称,文件名前可以加加上绝对路径

你可能感兴趣的:(MySQL数据库学习笔记)