mysql基本操作语句
⼀、数据库和表的基本操作
1、数据库基础知识
创建和查看数据库
创建:create database 数据库名称;
查询:show database;
show create database 数据库名称;
修改数据库
alter database 数据库名称 default character set 编码⽅式 collate 编码⽅式_bin;
删除数据库
drop database 数据库名称;
使⽤数据库
use 数据库名称;
2、数据表的基本操作
创建数据表
create table 表名(
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
switch函数使用...
)engine=InnoDB/MyISAM;
查看数据表
show tables;
show create table 表名;
describe 表名;
desc 表名;
修改数据表
修改表名:alter table 旧表名 rename [to] 新表名;
修改字段名:alter table 表名 change 旧字段名 新字段名 字段数据类型;
修改字段数据类型:alter table 表名 modify 字段名 数据类型;
添加字段:alter table 表名 add 字段名 字段类型 [约束条件] [first|after 已存在字段名];            删除字段:alter table 表名 drop 字段名;
修改字段的排列位置:alter table 表名 modify 字段名 数据类型 first/after 已存在字段名;        删除数据表
drop table 表名;
3、表的约束
主键约束(不能为空且不能重复)
单字段:字段名 数据类型 primary key
多字段:primary key(字段名1,字段名2...)
⾮空约束
字段名 数据类型 not null
唯⼀约束
字段名 数据类型 unique
默认约束
字段名 数据类型 default 默认值
4、设置表的字段值⾃动增加
字段名 数据类型 auto_increment
5、索引
索引概念:
普通索引
唯⼀索引:由unique定义
全⽂索引:由fulltext定义,作⽤于char、varchar、text类型的字段上,只有MyISAM储存引擎⽀持全⽂索引。
单列索引
多列索引
空间索引:由spatial定义,作⽤于geometry、point、linestring、polygon数据类型上,只能在储存引擎为MyISAM的表中。注:创建空间时,所在字段的值不可为空值。
索引作⽤:提⾼查询速度
创建索引
创建表的时候创建索引
create table 表名(
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
...
[unique/fulltext/spatial] index/key [别名] (字段名[长度] [asc/desc])
)engine=InnoDB/MyISAM;
使⽤create index
create [unique/fulltext/spatial] index 索引名 on 表名 (字段名[长度] [asc/desc]);
使⽤ alter table语句
alter table 表名 add [unique/fulltext/spatial] index 索引名 on 表名 (字段名[长度] [asc/desc]);
删除索引
drop index 索引名 on 表名;
alter table 表名 drop index 索引名;
⼆、添加、更新与删除数据
1、添加数据
为表中所有字段添加数据
insert into 表名 (字段名1,字段名2,字段名3....) values (值1,值2,值3...);
insert into 表名 values (值1,值2,值3...);
为表的指定字段添加数据
idea的音标怎么读
insert into 表名 (字段名2,字段名1,字段名3....) values (值2,值1,值3...);
insert into 表名 set 字段名1=值1,字段名2=值2,...;
同时添加多条记录
insert into 表名 (字段名1,字段名2,字段名3....) values (值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...)...;
mysql语句分类
2、更新数据
update 表名 set 字段名1=值1,字段名2=值2,... [];
3、删除数据
delete from 表名 [];
truncate [table] 表名;
三、单表查询
select [distinct] *|{字段名1,字段名2...}
from 表名
[where 条件表达式1(in (set),between and,is (not) null,and,or,like)]
[group by 字段名1,字段名2... [having条件表达式2]]
[order by 字段名1,字段名2... [asc|desc]]
[limit [offset,]记录数]
% _通配符
聚合函数:count(),sum(),max(),min(),avg();
函数(列表):concat(),if(expr,v1,v2)
为表和字段取别名:[as]
四、多表操作
1、外键(表必须为Inodbx型,外键名不能加引号)
添加外键:
(1)foreign key(字段名) references 外表表名(外表字段名);
(2)alter table 表名 add constraint FK_ID foreign key(外键字段名) references 外表名(外表字段名);
[on delete cascade|set null|no action|restrict];
[on update cascade|set null|no action|restrict];
删除外键:
alter table 表名 foreign key 外键名;
2、连接查询
交叉连接:select * from 表名1 cross join 表名2;
select * from 表名1,表名2;
内连接:select 字段名1,字段名2... from 表名1 [inner] join 表名2 on 表名1.字段1=表名2.字段2;
外连接:select 字段名1,字段名2... from 表名1 left|right [outer] join 表名2 on表名1.字段1=表名2.字段2 where 条件;
3、⼦查询
select 字段名1,字段名2... from 表名1 where 字段名n in|);
select 字段名1,字段名2... from 表名1 where 字段名n>|<all|);(exists关键字⽐in关键字运⾏效率⾼)
五、事务与储存过程
1、事务管理
开启、提交、回滚事务:start transaction;
commit;
rollback;
事务的四种隔离级别:read uncommited、read commited(⼤多数据库默认的事务隔离级别,如:oracle)、repeated read(mysql默认)、serializable;
修改事务隔离级别:set session transaction isolation level ...
查看事务隔离级别:select @@tx_isolation;
dirty read、non-repeatable read、phantom read
2、储存过程的创建
创建过程:create procedure procedure_name(proc_parameter);
[characteristics]routine_body(略)
设置结束符:delimiter(delimiter 和结束符之间必须要有⼀个空格)
变量
变量定义:declare var_name[,varname]...date_type[default value];(如果没有⽤default,则默认值为null)
变量赋值:set name1=value1[,];
select 字段名1,字段名2...into 变量名1,变量名2...
定义条件和处理程序
网页设置滚动条定义条件:declare 条件名 condition for [condition_type];
condition_type:sqlstate_name,mysql_error_code
处理程序:declare handler_name hanlder for condtion_value[,...]sp_statement;
hanlder_type:
[continue|exit|undo](mysql不⽀持undo)
condition_value:
java正则表达式技巧
|sqlstate[value]
|condition_name
|sqlwarning
|not found
|sqlexception
|mysql_error_code
光标(游标)的使⽤
声明:declare cursor_name cursor for select_statement;(必须声明在声明变量、条件之前,处理程序之后)
打开:open cursor_name;
使⽤:fetch cursor_name into var_name1[];
关闭:close cursor_name;(如果没有明确地关闭光标,他会在其声明的复合语句的末尾被关闭)
关闭:close cursor_name;(如果没有明确地关闭光标,他会在其声明的复合语句的末尾被关闭)
怎么学英文流程的使⽤
if语句:(判断变量是否为空 var_name is null)(mysql中海油⼀个if()函数,与这个不同)
if expr_condition then statement_list;
elseif expr_conditon then statement_list;
else statement_list;
end if;
case语句:(不可以 else null)
case case_expr
when case_value then statement_list;
when case_value then statement_list;
[else statement_list];
end case;
case
when case_expr then statement_list;
when case_expr then statement_list;
[else statement_list]
end case;
loop循环:
[loop label:]loop
statement_list;
end loop[loop label];
leave语句:(通常与d,循环语句⼀起使⽤)
leave label
iterate语句:(只可以与loop、while、repeat语句⼀起⽤)
iterate label;
repeat语句:
[repeat_label:]repeat
statement_list;
until expr_condition;
end repeat[ repeat_label];
while语句:
[while_label:]while expr_condition
statement_list;
end while[ while_label];
3、储存过程的使⽤
调⽤:call sp_name(parameter[,...]);
查看
show procedure|function status[like'patten'];
show create procedure|function sp_name;
select * from utines(information数据库下的routines表中储存了所有定义的储存过程)            where routine_name='' and routine_type='procedure'\G;
修改:alter [procedure|function] sp_name []
删除:drop procudure|function [if exits]sp_name;
六、视图
1、视图创建:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。