查询
1.基本查询语法
(1)所有字段
select * from 表名
注意:*表示所有字段。除非需要表中所有字段的数据,否则不要使用通配符*,它会降低查询效率
(2)指定字段
select 字段名1,字段名2,......字段名n from 表名
(3)条件字段
关系运算符:>,<,=,!=和<>都表示不等于......
select 字段名1,字段名2,......字段名n from 表名 where 关系表达式
注意:如果字符串类型是字符串关系运算符按照字符串进行比较
(4)带IN关键字查询(Mysql特有)(包含 or也可实现)
select *|字段1,字段2...字段n from 表名 where 字段名 [not] in(元素1,元素2,元素3......)
(5)带between和and的关键字查询(表范围 in或and也可实现)
select *{字段名1,字段名2......字段名n} from where 字段名 [not] between 值1 and 值2;
(6)空值查询
select *{字段名1,字段名2......字段名n} from where 字段名 is [not] null 值1;
(7)带distincs关键字的查询(去重)
select distinct 字段名 from 表名
select distinct 字段名1,字段名2...字段名n from 表名
(8)带like关键字的查询(模糊查询)
select *|字段1,字段2...字段n from 表名 where 字段名 [not] like ‘匹配字符串’;
(9)匹配符:%/下换线_
%:1>可以匹配任意长度的字符串,包括空字符串
2>可以匹配任意位置:蒙A%2
3>匹配包含中间部分的字符串 :%...%
_:1>匹配单个字符,用法同%
2>可以和%组合使用
如果要查询%或_需要用/转义字符来实现‘/%’、‘/_’
(10)带and关键字多条件查询
例:select * from 表名 on 字段名 and like ‘匹配字符串’
(11)带or关键字的多条件查询
满足一个条件就都可以查询到
(12)or和and关键字一起使用:and优先级高于or
2.高级查询
(1).聚合函数count():统计记录的条数
语法:select count(*) form 表名;
select count(*|单个指定字段名)as [别名] form [where 条件表达式];
(2).求和函数sum():用来求出某个字段所有值的和
语法:select sum(字段)as [别名] 表名 {where 条件表达式}
select 字段名1 as [别名] ,字段名2 as [别名]...字段名n [as 别名] from 表名;---例:select as 编号 ,gname as 名称,s1 as 数量,dj as 单价,s1*dj as 总计 from goods;
(3).平均函数avg()
求某个字段平均值
语法:同sum()
(4).最大值max()
(5).最小值min()
(6).查询结果的排序 order dy
select *|字段1,字段2,...字段n from 表名 [where 条件不等式] [order by 字段1[asc|desc],...字段n[asc}desc]];
asc:升序;desc降序
排序置顶(top关键字)(sqlServer使用,Mysql无效)
例:select top 3 from goods order by s1 desc limit 3;
(7).使用limit限制查询数量(Mysql特有):可以指定查询记录从哪一条开始及一共查询多少条
语法:select 字段名1,字段名2,...from 表名 [limit [offset,count] 记录数]
offset跳过的记录数(我的理解:开始位置索引,从0开始),count几条记录,记录数:输出多少条记录
(8).函数(列表):加密
1)MD5:字符串密码
ENCODE(str pwd str):加密
DECODE(str,pwd,str):解密
2)时间日期
3.连接查询(多表)
(1)内连接(inner join)
称为简单连接或自然连接,是一种常见的连接查询
关系运算符
语法: select 查询字段 from 表1 [inner] join 表2 on 表1.关系字段
(2)外连接:待更新
4.为表和字段取别名
(1)表 as
使用场景,查询书表名太长,可以通过给表起别名来简化操作
select * from 表名1 as 别名,表名2 as 别名...;
(2)字段
可以和表别名组合组合使用
select * from 字段名[ as ]别名,字段名 [as] 别名...;
4.外键:是指引用另一个表中的一列或多列,被引用的表应该具有主键约束或唯一性约束
(1)作用:用于建立和加强俩个表之间的数据连接
(2)为表添加外键约束语法:
alter table 表名 add constraint FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键字段名)
(3)外键约束是为了保证数据的完整性和统一性,但主表中数据删除,就会造成从表中数据成为垃圾。
以下是避免主表中数据删除从表中数据成为垃圾的解决
语法:alter table 表名 add constraint FK_ID foreign key(外键字段名) REFERENCES 外表表名(主键字段名)
[on delete {cascade|set null|no action|restinct}]
[on update {cascade|set null|no action|restinct}]