[TOC]
注意点
注释:
"-- 注释" 需要加空格
反引号、单引号、双引号
-- 使用关键字作为字段名、表名时,需要用反引号 create table desc -- 报错 create table `desc` -- 成功 -- 使用字符串需要用 单引号 或者 双引号 select `way` -- 报错 select 'way', "way" -- 成功
大小写
SELECT 'a' = 'A' -- 默认不区分大小写 SELECT BINARY 'a' = 'A' -- 区分大小写
存储引擎
-- 查看引擎说明
show engines
名称 | 适用说明 |
---|---|
InnoDB | 默认引擎,支持事务 |
MyISAM | 不支持事务,大数据量 |
MEMORY | 存在内存,常做临时表,用完记得删除 |
Archive | 适合作为日志 |
blackhole | 可以用来备份表结构,备份,主从库之间缓冲 |
数据文件
类型 | 级别 | 说明 |
---|---|---|
ibdata1 | 服务器级别 | InnoDB 数据文件 |
ib_logfile0 | 服务器级别 | InnoDB 日志文件 |
ib_logfile1 | 服务器级别 | InnoDB 日志文件 |
.opt | 数据库级别 | 指定默认字符集和排序规则,在该库建表时的缺省定义值 |
.frm | 表级别 | 存储表定义 |
.ibd | 表级别 | InnoDB单独一个表的数据及索引内容 |
.MYD | 表级别 | MyISAM数据文件 |
.MYI | 表级别 | MyISAM索引文件 |
常用函数
函数 | 说明 |
---|---|
LENGTH | 字符串长度 |
CHAR_LENGTH | 字符串字符个数 |
concat('a','b','c') | 合并字符串(遇到null,结果变成null) |
concat_ws('-','a','b','c') | 使用分隔符,合并字符串(遇到null,无视) |
insert('haha',1,2,'t') | 替换字符串 |
replace('haha','a','t') | 替换字符串 |
repeat('ha',3) | 重复生成相同字符串 |
space(n) | 重复n个空格组成的字符串 |
mid('abhdg',2,3) | 截取字符串 |
SUBSTRING('abhdg',2,3) | 截取字符串 |
locate(str1,str) | 字符串开始位置 |
position(str1 IN str) | 字符串开始位置 |
instr(str,str1) | 字符串开始位置 |
CURDATE(),CURRENT_DATE(),CURDATE()+0 | 获取当前日期 |
CURTIME(),CURRENT_TIME(),CURTIME()+0 | 获取当前时间 |
CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE() | 获取当前日期时间 |
PASSWORD(明文) | 系统用户加密 |
MD5(明文) | md5加密 |
ENCODE(明文, 盐) | 加密 |
DECODE(密文, 盐) | 解密 |
INET_ATON('192.168.100.45') | IP地址转数字 |
INET_NTOA(3232261165) | 数字转IP地址 |
常用命令
-- 自增列:auto_increment PRIMARY KEY(必须作为主键的一部分) 相当于 SQLSERVER 的 IDENTITY(1,1)
--查看表结构
DESC TableName
-- 修改表名
alter table 旧表名 rename 新表名
-- 修改字段数据类型
alter table 表名 modify 字段名 数据类型
-- 修改字段名
alter table 表名 change 旧字段名 新字段名 数据类型
-- 添加字段,语法同SQLserver
alter table 表名 add 字段名 数据类型【约束】
-- 删除字段:语法同SQLserver
alter table 表名 drop column 字段名
-- 添加字段(指定位置)
alter table 表名 add 字段名 数据类型【约束】 First ; -- 在表的第一列添加字段
alter table 表名 add 字段名 数据类型【约束】 After AA ; -- 在表的AA列后面字段
-- 修改字段位置:
alter table 表名 modify DD 数据类型 First ; -- 把DD移到表的第一列
alter table 表名 modify DD 数据类型 After AA ; -- 把DD移到AA列后面
-- 修改表的存储引擎
alter table 表名 ENGINE = MyISAM
--删除表(表不存在,不报错,会有警告 show warnings)
drop table if exists aa,aa1...
-- 删除表: 语法同SQLserver
drop table aa,aa1...
-- 正则表达式
select '45' REGEXP '[0-9]', '45' REGEXP '\d'
建表 demo
CREATE TABLE `weibo_get` (
`ID` int(11) auto_increment PRIMARY KEY, -- ID自增列
`WeiboName` varchar(50) DEFAULT NULL, -- 微博号昵称
`Title` varchar(300) DEFAULT NULL, -- 微博内容
`ShortUrl` varchar(300) DEFAULT NULL, -- 优惠券短链
`TextApi` varchar(300) DEFAULT NULL, -- 微博内容api链接(短时有效,内容会覆盖,仅供测试检查)
`CommentApi` varchar(300) DEFAULT NULL, -- 评论内容api链接(短时有效,内容会覆盖,仅供测试检查)
`AddTime` datetime DEFAULT NOW() -- 添加时间
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
运维命令
# 备份数据库
mysqldump -uroot -h 127.0.0.1 -p izone > izone.sql
# 还原数据库
mysql -uroot -pPASSWORD izone < izone.sql
索引、存储过程、事件
1.存储过程
修改mysql结束符(默认;):DELIMITED // (在CMD命令行有效,navicat无效)
MySQL还不提供对已存在的存储过程的代码修改,只能先删除再新建
2.调用过程
call TEST(10) 相当于SQLSERVER exec TEST 10
3.索引(和SQLSERVER有较大区别,没有聚集/非聚集的区分)
普通索引和唯一索引
单列索引和组合索引
全文索引和空间索引(只支持MYISAM存储引擎)
4.符号问题
反引号一般在Esc键的下方,和~在一起。
它是为了区分MySQL的保留字与普通字符而引入的符号。
create table desc 报错
create table `desc` 成功
一般我们建表时都会将表名、字段名、索引名、库名都加上反引号来保证语句的执行度。
字符串使用的是单引号。
5.触发器
OLD/NEW 和 SQLSERVER中的 INSERTED 和 DELETED 类似
可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。
另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。(看起来触发器,比SQLSERVER强大)
6.事件
类似 SQLSERVER 的作业调度