1.安装,请参考我以前写的文章:Linux-MySQL安装说明。
2.SQL语句
2.1:DDL(数据库定义语言)
创建数据库:create database 库名;
删除数据库:drop database 库名;
创建表:create table 表名(column_name_1 column_type_1 约束条件, column_name_2 column_type_2 约束条件, ...);
删除表:drop table 表名;
修改表:
alter table 表名 modify[column] column_definition[first|after col_name] -- 修改字段,e.g:alter table emp modify ename varchar(20);
alter table 表名 add[column] column_definition[first|after col_name] -- 添加字段,e.g:alter table emp add column age int(3);
alter table 表名 drop[column] col_name -- 删除字段,e.g:alter table emp drop column age;
alter table 表名 change[column] old_col_name column_definition [first|after| col_name] -- 字段改名,e.g:alter table emp change age age1 int(4);
2.2:DML(数据库操纵语言)
插入:insert into 表名(field1, field2,...) values(value1, value2,...);
更新:update 表名 set field1 = value1, field2 = value2,... [where ...]
删除:delete from 表名 [where ...]
查询:select * from 表名[where ...]
2.3:DCL(数据控制语句):grant select, insert on 库名.* to 'lomis'@'localhost' identified by '123';
3.数据类型:数值、日期时间、字符串、枚举和set。
4.运算符
4.1:算术=> +,-,×,/,%。
4.2:比较
运算符 | 作用描述 |
---|---|
= | 等于 |
<>或!= | 不等于 |
<=> | NULL安全的等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
between...and | 存在于指定范围 |
in | 存在于指定集合中 |
is null | 为NULL |
is not null | 不为NULL |
like | 通配符匹配 |
regexp 或rlike | 正则表达式匹配,e.g:select 'abcdef' regexp 'ab', 'abcdefg' regexp 'k'。-- 当abcdef中包含ab则返回1,否则返回0,后面同理。 |
4.3:逻辑运算=> not(!),and(&&),or(||),xor。
4.4:位运算=> &, |, ^, ~, >>, <<。
5.常用函数
5.1:字符串
函数 | 功能描述 |
---|---|
concat(s1, s2, ..., sn) | 连接s1, s2, ..., sn |
insert(str, x, y, instr) | 将str从x的位置起,y个长度的字符串替换为instr |
lower(str) | 将str变为小写 |
upper(str) | 将str变为大写 |
left(str, x) | 返回str最左边的x个字符 |
right(str, x) | 返回str最右边的x个字符 |
lpad(str, n, pad) | 用pad对str最左边进行填充,直到成都为n |
rpad(str, n, pad) | 用pad对str最右边进行填充,直到长度为n |
ltrim(str) | 去掉str行头的空格 |
rtrim(str) | 去掉str行尾的空格 |
repeat(str, x) | 返回str重复x次的结果 |
replace(str, a, b) | 用b替换str中的a |
strcmp(s1, s2) | 比较s1和s2 |
trim(str) | 去掉str头尾的空格 |
substring(str, x, y) | 返回从str的x位置起y个长度的字符 |
5.2:数值
abx(x):返回x的绝对值。
ceil(x):返回大于x的最小整数。
floor(x):返回小于x的最小整数。
mod(x, y):返回x/y的模。
rand():返回0~1内的随机数。
round(x, y):返回x的四舍五入有y位小数的值。
truncate(x, y):返回数字x阶段为y位小数的结果。
5.3:日期
curdate():当前日期。
curtime():当前时间。
now():当前日期和时间。
unix_timestamp(date):date的unix时间戳。
from_unixtime:返回unix时间戳的日期。
week(date):date为一年中的第几周。
year(date):date的年份。
hour(time):time的小时值。
minute(time):time的分钟值。
monthname(date):date的月份值。
date_format(date, fmt):返回字符串fmt格式化日期date值。
date_add(date, interval expr type):一个日期或时间加上一个时间间隔的时间值。
datediff(expr1, expr2):开始时间expr1和结束时间expr2之间的天数。
5.4:流程
if(value, t f):value真返回t,假返回f。
ifnull(value1, value2):value为空返回value2,不为空返回value1。
case when [value1] then [result] ... else [default] end:如果value1真返回result,否则返回default。
case [expr] when [value1] then [result] ... else [default] end:expr等于value1返回result,否则返回default。
5.5:其他
database():数据库名;version():数据库版本;user():登录的用户名;inet_aton(ip):ip的数字表示;inet_ntoa(num):数字转为ip。
6.存储引擎
MyISAM:不支持事务和外键;访问速速快,对事务完整性没要求。
InnoDB:支持事务;支持自增ID和外键约束。有共享表空间存储和多表空间存储两种方式。
MEMORY:使用内存中的内容创建表。每个表对应一个磁盘文件。访问快,默认使用HASH索引,但关闭后,表中数据会丢失。
MERGE:一组MyISAM表的组合,一组表结构必须完全相同。
TokuDB:第三方开源引擎。使用Fractal树索引保证高效插入性能;压缩比InnoDB高近10倍,提供了主从延迟消除技术。
7.索引
创建:create[unique|fulltext|spatial] index index_name[using index_type] on tbl_name(index_col_name, ...), e.g:create index cityname on city(city(10))。
删除:drop index Index_name on tbl_name。e.g:drop index cityname on city。
8.视图
创建:create or replace view demo_view as select * from demo [where ...];
删除:drop view view_name;
9.存储过程
创建:create procedure sp_name(参数[也可以为空参数])
删除:drop procedure sp_name;
10.触发器
创建:create trigger trigger_name trigger_time trigger_event on tbl_name fro each row trigger_stmt;
删除:drop trigger trigger_name;