标签:幻读 table myisam handler 数据库 最快 替换 一个 排它
information_schema
: 数据库的所有信息,表,数据库名称,类型等等performance_schema
: 收集数据库服务器性能参数sys
: 把performance_schema
的复杂度降低mysql
:核心数据库,用户,权限,关键字等net start mysql
net stop mysql
mysql -u 用户名 -p 密码
show databases
use 数据库名称
show tables
select * from 表名
exit;quit;
create database 数据库名称
drop database 数据库名称
innodb
(mysql默认的存储引擎):myisam
:memory
:merge
:archive
:federated
:blackhole
:show engines;
show variables like ‘%storage_engine%‘
set default_storage_engine=<存储引擎名称>
create table 表名(字段 类型 长度)
drop table 表名
alter table old表名 rename new表名
alter table 表名 change old字段名称 new字段名称 数据类型
alter table 表名 add 新字段名称 数据类型....
alter table 表名 drop 字段名称
desc 表名|describe 表名|explain 表名|show columns form 表名
insert into 表名(列名....) value|values(值...),(值......)
update 表名 set 列=value ,列2 = value2 where.....
delete from 表名 where ....
truncate table 表名
√DROP
,TRUNCATA
,DELETE
区别
delete
删除数据,保留表结构,可以回滚,如果数据量大,很慢truncate
删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对很快drop
删除数据和表结构,删除速度最快sql语句定界符,一般默认的定界符是分号: √
\g
: ;
\G
:将查到的结构旋转90度变成纵向int
,float
,double
,decimal
date
,time
,year
,datetime
,timestamp
char
,varchar
,blob
,text
enum
set
not null
unique key
primary key
foreign key
check
auto_increment
alter table 表名 add constrain 唯一约束名称 unique (<列名>)
constraint <外键名> foreign key 列名 references 主表名称 主键列
select 字段1,字段2.... from 表名
where
:过滤条件distinct
:排重between and
:在...和...之间in
:list比较like
:模糊匹配,%
,_
is null
:为空order by
:排序limit
:分页group by
:分组having
:分组条件过滤>
,>=
,=
,<
,<=
)and
,or
,not
,!
)union
:连接两个查询结果。数量相同,类型相似,且自动去掉重复字段。如果要全部显示,则使用all
select * from a,b|select * from a class join b
笛卡尔积inner join
,取都满足条件的数据left join
,展示左表所有数据right join
,展示右表所有数据any
,some
:满足其中任何一个all
:满足所有in
:多个匹配相等exists
:如果有返回值,继续查询。否则没有查询结果regexp
:正则表达式,^
$
concat
: 链接字符串lower
: 小写upper
: 大写length
: 长度char_length
: 字符长度trim
: 去掉空格repeat
: 重复的次数replace
: 替换substring
: 截取substr
: 截取rand
:随机数curdate
: 当前日期curtime
:当前时间now
:当前日期和时间week
: 周year
: 年date_format
: 格式化data_add
: 添加时间datediff
: 时间差if(a,b,c)
: 如果a成立,返回b,否则返回cifnull(a,b)
: 如果a为null返回b,否则返回acase
表达式case 表达式
when value1 then result1
when value2 then result2
....
else result1
end:表达式和那个value相等,返回对应的result
md5
:加密count
:个数avg
:平均数sum
:总和max
:最大min
:最小优点:
设计原则:
自动创建索引:主键
手动创建索引:
index 索引名称
alter table 表名 add index 索引名称(属性名称 长度 asc|desc)
create index 索引名称 on 表 (属性名 长度 排序,....)
删除索引:
alter table 表名 drop index 索引名称
drop index索引名称 on 表名
索引分类:
普通索引、唯一索引、主键索引、单索引、组合索引、全文索引、空间索引
create view 视图名称 as select语句
select * from 试图名称
alter view 视图名称 as select语句
drop view 视图名称
CREATE
[DEFINER = user]
TRIGGER trigger_name
`trigger_time` `trigger_event`
ON tbl_name FOR EACH ROW
[`trigger_order`]
trigger_body
`trigger_time`: { BEFORE | AFTER }
`trigger_event`: { INSERT | UPDATE | DELETE }
`trigger_order` { FOLLOWS | PRECEDES } other_trigger_name
create trigger `触发器名称` `time` `事件`
on `表名` for each row
trigger_sql
`time`:before|after
`事件`:insert|delete|update
`trigger_sql`:
begin
...
end
删除触发器:drop trigger if exists 触发器名称
修改结尾符号:
delimiter
语法:
create 用户定义 procedure 存储过程名称(参数)
特性 存储过程sql
参数:in、out、inout
存储过程sql:begin end
-- CREATE PROCEDURE and CREATE FUNCTION Syntax
CREATE
[DEFINER = user]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT ‘string‘
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
调用存储过程:call 存储过程名称
语法:
create function 函数名称(参数)
returns type 特性 函数sql
参数:只有in,可以忽略不写
type:mysql任意类型
调用:select 函数名称(参数)
声明:
declare 变量名称 type [default value]
(只能在begin
和end
之间定义局部变量)set @[变量名称] = value
赋值:set 变量名称 = 值
使用:select 表达式 into 变量名称 from 表名
declare 条件名称 condition for [type]
type:字符串错误码,数值型错误码
declare [action] handler for [type] begin ... end
action:continue,exit
type:字符串错误码
数值型错误码
条件名称:SQLWARNING,NOT FOUND,SQL EXCEPTION
declare 游标名称 cursor for select语句
open 游标名称
fetch 游标名称 into 变量名称
close 游标名称
select
语句返回个数和变量个数相同fetch
就会报错1329
-- if:
if 条件表达式 then sql1
elseif 条件表达式2 then sql2
else sql3
endif;
-- case:
case 表达式
when value1 then 语句块1
when value2 then 语句块2
.....
else 语句块n
end case;
-- repeat:
repeat
循环体
until 条件表达式
end repeat
-- while:
while 条件表达式 do
循环体
end while
-- loop:
loop
循环体
leave;
end loop
-- `leave`:跳出当前循环体
-- `iterate`:结束本次循环,进入下一次循环
commit
rollback
begin
,start transaction
autocommit
savepoint [保存点名称];
release savepoint [保存点名称];
rollback to savepoint [保存点名称];
表级锁
lock table 表名 read
lock table 表名 write
行级锁:
select * ...lock in share mode
select * ...for update
insert
、delete
、update
连表查询
存储引擎
主外键
like
where
having
commit
标签:幻读 table myisam handler 数据库 最快 替换 一个 排它
原文地址:https://www.cnblogs.com/holm/p/12890620.html