MYSQL
表:定义数据在表中如何存储,存储怎样的数据,数据如何分解,各部分如何命名等等;
模式:描述表的这组信息就是模式;
DBMS分为两类:基于共享文件的DBMS和基于客户机-服务器的DBMS。
MYSQL语法:
distinct:去重,必须在所有列的前面,并且不能多个去重,否则无效;
select distinct name, id from table
limit: 限制返回所匹配的行,limit 5 则返回5行,limit 5,5 == limit 5 offset 5,从第五行开始返回五行(第一行为0);
语法
select name from table limit 5;
select name from table limit 3,5;
order by:按顺序排序(默认升序 Ascend)(降序Descend);
语法:
按姓名升序
select name,id from table order by name;
先然姓名再按 id;
select name,id from table roder by id, name;
先按id降序,再按姓名升序;
select name , id from table order id desc, name;
null值:不管匹配某个值与不匹配某个值都不会返回null,除非判断是否为null时;
And和Or:
select name , id from table where id == 3
and where name = 'dc';
select name , id from table where id == 3
or where name = 'dc';
- MYSQl中与众语言一样,AND的优先级更高;
此语句-> 选择name为'dc' 并且 id = 1003 的 或者 id = 1002的所有;
select name , id from table where id = 1002 or where id = 1003 and where name = 'dc';
- 如果看到这,你问我怎么解决?我只能告诉你 ---- ();
IN( ) 括号内的项等同于 OR 但通常用IN代替长串的OR,不仅代码简短,效率更高;
NOT:对于某种命令取反,例如 NOT IN ()或者 NOT BETWEEN;
通配符
% : %表示任何字符出现的任意次数;此时应用LIKE;
选择所有以d开头的名字
select name from table where name like 'd%'
即便使用%也不能匹配出null;
select name from table where name like '%'
_ :匹配一个;
不要过度使用通配符,虽然很方便但是慢;
正则表达式
关键字REGEXP:
此时肯定会返回'dc'
select name from table where name regexp 'c'
此时不会返回'dc' like一般要搭配通配符使用 % or _;
select name from table where name like 'c'
快捷用法:
- 正则表达式中的OR 用 |;
返回匹配c或者d的 select name from table where name regexp &