information_schema: 数据库的所有信息,表,数据库名称,类型等等performance_schema: 收集数据库服务器性能参数sys: 把performance_schema的复杂度降低mysql:核心数据库,用户,权限,关键字等net start mysqlnet stop mysqlmysql -u 用户名 -p 密码show databasesuse 数据库名称show tablesselect * 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,decimaldate,time,year,datetime,timestampchar,varchar,blob,textenumsetnot nullunique keyprimary keyforeign keycheckauto_incrementalter 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:连接两个查询结果。数量相同,类型相似,且自动去掉重复字段。如果要全部显示,则使用allselect * 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 result1end:表达式和那个value相等,返回对应的resultmd5:加密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_namecreate 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_bodyCREATE [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 EXCEPTIONdeclare 游标名称 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`:结束本次循环,进入下一次循环commitrollbackbegin,start transactionautocommit savepoint [保存点名称]; release savepoint [保存点名称]; rollback to savepoint [保存点名称];表级锁
lock table 表名 readlock table 表名 write行级锁:
select * ...lock in share modeselect * ...for updateinsert、delete、update连表查询
存储引擎
主外键
like
where
having
commit