1.主键:任意两行不会拥有相同的主键;主键的值不为空值;
2.查看命令
show databases; use [databasename]; show [tablename]; show columns from [tablename]; = describe [tablename];
show create database [database]; show create table [table]; //查看创建
3.sql中语句中的空格将被忽略,且不区分大小写;
4.查询语句
//不打括号 select [col1],[col2] from [table]; select * from [table];
//不返回重复的值 select distinct [col1] from [table];
//返回前num行 select [col1] from [table] limit [num]; //返回从num_1开始的num_2行 select [col1] from [table] limit [num_1],[num_2];
//按顺序,可以采用非选择的列 select [col1],[col2],[col3] from [table] order by [col4],[col5];
//降序 DESC 只作用于直接位于其前面的一个列名 select [col1],[col2] from [table] order by [col3] DESC,[col4] DESC;
//限定条件 where select [col1] from [table] where [col2] [op] [value]; select [col1] from [table] where [col2] between [value_1] and [value_2]; select [col1] from [table] where [col2] is null;
5.AND操作符的优先级高于OR优先级;
6.
select * from [table] where [col1] in ([value_1],[value_2]) select * from [table] where [col1] not in ([value_1],[value_2])7.% -> 匹配0-多个任意字符;
_ -> 匹配单个字符;
8.正则表达式
//binary区分大小写 select * from [table] where [col] regexp binary [re];
9.为了匹配特殊字符,需要用\\作为前导,\\.表示查找;
10.预定义了部分字符集,可以直接用于匹配 P71;
* | 0或多个匹配 |
+ | 1或多个匹配 |
? | 0或1个匹配 |
{n} | 指定数目n的匹配 |
{n,} | 至少n次的匹配 |
{n,m} | 匹配数目的范围 |
12.位置定位符
^ | 文本的开始 |
$ | 文本的结束 |
13.拼接字段concat ; 去掉空格trim;不影响原本的列;
select concat([col1],string,[col2]) from [table];
select RTrim([col1]) from [table]14.别名
// as 需要写在 from 前面 select [col1] as [name_1] from [table]
15.获取当前时间
select Now();
16.分组及过滤
//按[col1]统计Count(*)>2的 select [col1] ,Count(*) as Orders from [table1] group by [co1] having Count(*) > 2;
17.外键
外键为某个表中的一列,包含另一个表的主键值,定义了两个表之间的关系;
18.联结
select [col1_table1],[col2_table2] from [table1],[table2] where [table1.col3] = [table2.col3];
select [col1_table1] ,[col1_table2] from [table1] inner join [table2] on [table1.col2] = [table2.col2];
19.表别名只在查询中使用,不返回到客户机。
20.外联接:需要包含没有关联行的时候使用;
select [table1.col1],[table2.col1] from [table1] LEFT OUT JOIN [table2] ON [table1.col2] = [table2.col2];
21.UNION:给出多条SELECT语句,将其结果合成单个结果集;
UNION ALL : 不取消重复的行;
22.全文本搜索:不区分大小写,结果按优先程度返回;不具有词分隔符(中文)不能恰当的返回搜索结果
布尔文本搜素:不限定于FULLTEXT,返回结果不排序
select [col1] from [table1] where MATCH([col2]) AGIAINST(str);
//返回比较列 select [col1],MATCH([col1]) AGAINST([str]) AS [name] from [table1];
select [col1] from [table1] MATCH([col1]) AGAINST('+[str1] +[str2]'IN BOOLEAN MODE);
23.INSERT语句
insert into [table1] values ([val1],...,[valn]);
insert into [table1]([col1],..[coln]) values ([val1],...,[valn]);
24.降低语句优先级
INSERT LOW_PRIORITY INTO ...
25.更新语句UPDATE
update [table1] set [col1] = [value1] where [col2] = [value2];
//遇到错误依旧继续 update ignore ...
26.删除语句DELETE
delete from [table1] where [col1] = [value1];
//删除表中所有数据 truncate [table];
27.更改表
alter table [table] add [col1] [char(20)]; alter table [table] drop column [col1]; alter table [table] add constraint [col1_table] foreign key ([col1_table2] reference [table2]([col1_table2]);
28.视图:更新一个视图将更新其基表,一般视图用于检索
29.存储过程:为以后的使用而保存的一条或多条MYSQL语句的集合 ->简单,安全,高性能
DELIMITER //
CREATE PROCEDURE [name()] BEGIN ... END //
DELIMITER ;
CALL [name](@[para1],@[para2]..);
30.游标
create PROCEDURE pro() BEGIN DECLARE done BOOLEAN DEFAULT 0; DECLARE o INT; DECLARE ordernumbers CURSOR FOR SELECT id FROM people_test; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN ordernumbers; REPEAT FETCH ordernumbers INTO o; UNTIL done END REPEAT; CLOSE ordernumbers; END;
31.支持触发器的语句:DELETE,INSERT,UPDATE;只有表支持触发器
32.事物处理:用于管理必须成批执行的Mysql操作;用于DELETE,INSERT,UPDATE
33.校对:为规定字符如何比较的指令;
34.日志文件:
错误日志 | data/hostname.err 启动和关闭问题及任意关键错误的细节; |
查询日志 | data/hostname.log 记录所有MYSQL活动; |
二进制日志 | data/hostname-bin 更新过数据的所有语句; |
缓慢查询日志 | data/hostname-slow.log 记录执行缓慢的所有语句; |
35.查看当前设置:SHOW VARIABLES; SHOW STATUS;
查看所有的活动进程:SHOW PROCESSLIST;
查看某条语句如何执行:EXPLAIN [SENTENCE];