增删改在语句上都很简单,但是单单查询却这么复杂,为什么呢?那我们简要分析一下哈,关键就是你所存储的信息与你想要的信息不一致,导致查询过于复杂,同样效率也是原因之一,由于网站的反应时间一定要可接受范围內,但数据库又十分庞大,导致查询语句变得十分重要,不能任性。
有时我们也可调用器内置函数来实现想要的功能,例如count(用来计数)、sum(用来求和)、max(求最大值)、min(求最小值)、avg(求平均数)。
数据类型char(20)表示20个字符大小的字符串,如果再创建表格的时候在后面加上charset=gbk\charset=utf8这样就可以支持中文了。
而且MySQL默认是不区分大小写的。
基本查询格式
select 列1,列2.....列n from 表名 其他条件;
select 列名1 as 重命名1,列名2 as 重命名2 .....列名n as 重命名n from表名 其他语句;//也可以使用中文的重命名
select now(); //输出当前时间
distinct //关键字可以起到去重的作用
select disinct 列名 from 表名;
where 语句有几种运算符的接法,第一种就是比较运算符,神马等于=、小于<、小于等于<=、不等于<>\!=、<=>表示两者要么等于要么都为null。第二种between.....and表示选择一个范围的数据。第三种就是in表示一些离散的数据,数据用小括号括起来,使用in的时候可以使用not取反。第四种就是 is null 查找为null的字段也可以使用上文提到的<=>符号来查找那些为null的字段值。第五种就是like表示字符串是否与指定的字符创相匹配,可以结合%和_一起使用,%表示零个或多个字符_表示代表单个字符,同样like也可结合not使用。第六种就是regexp相当于正则表达式的一种东西,和python和perl中的类似,同样regexp与rlike是等价的。
select * from 表名 where id>9;
select * from 表名 where id between 3 and 7;
select * from 表名 where id in (1,2,3,4);
select * from 表名 where id not in (1,2,3,4);
select * from 表名 where 列名 is null;
select * from 表名 where 列名 <=> null;
select * from 表名 where name like ‘%京东%’;
select * from 表名 where name not like ‘%京东%’;
select * from 表名 where name regexp ‘京东’;