insert
第一种
insert into tablename 列名 values(列值);
第二种
insert into tablename set columnname=value,columnname=value;
第三种
insert into tablename (columnname1,columnname2) values(value1,value2);
- 数字类型的值不需要用单引号引起来
- 字符和日期类型苏剧需要用当年引号引起来
- 输入值的顺序必须于在表中定义的顺序活着在表中后列出的顺序相同
update
更新表中的数据
update table name set column_name1=value1,column_name2=value2 where 子句
delete
delete from table [where子句]
- 不加where语句,删除所有记录
- 加上where,删除带条件的语句
truncate
truncate table tablename;
和delete的区别
delete维护自增长的值,truncate另一个归零
delete可跟查询条件,truncate不可以
delete执行速度不快,truncate执行很快
select
select 字段名(*)
from tablename
where (条件)子句
group by group_column
having condition_expression
order by sort_columns
where 子句中不可以使用别名作为查询条件
查询所有字段
select * from 表名
查询指定字段
select 列名 from 表名
查询不明确信息的字段
select 别名1,别名2 别名1*别名2 as 别名3 from 表名
用distinct关键字去重结果中的重复行查询字段
select distinct 列名 from 表名
#一般跟一个字段 复杂查询可以设置子集作为结果集查询
select查询原理**
根据列名取出字段放到缓存里边显示继续执行下一行,把相对应的数据查询出来。
单条件查询
select 列名 from 表名 where 列名=表名 or 列名<>表名
多条件查询(或者 or 并且 and)
select 列名 from 表名 where 列名=表名
sql中的通配符
%(百分号) 0个或0个以上的字符
_(下划线) 代表的是1个字符
以字符串条件开头 的模糊查询(like)
select * from where like ''字符串%'
在条件语句之间的查询(between…and…)
select 字段名 from 表名 where 字段名 between 条件1 and 条件
查询条件为空的条件
select 字段名 from 表名 where 列名 is null
now函数**
用于得到当前系统的时间
year函数
用来显示日期的年份
**concat 字符串连接
select 订单编号,产品编号,单价*(1-折扣)*数量 as 实际销售额 from 订单明细
简单函数(case…when…then)
case 列名
when 值 then 结果
when 值 then 结果
else default
end as 别名
搜索函数
case 列名
when 条件范围 then 结果
when 条件范围 then 结果
and 条件范围 结果
else 结果
end as 别名
from 表名
用order by对表中信息进行排序
asc升序 desc降序
order by 列名 排序关键字
可以对多个字段进行排序
order by 可以使用别名进行排序
可以使用索引
limit找出前几个
select * from 订货明细 order by 单价*(1-折扣)*数量 as 订单金额 desc limit 1
limit两个参数 跳过多少取多少
select * from 表名 limit (page-1)*pagesize,pagesize;
聚合函数
- sum 求和
- average 平均值
- max 最大值
- min 最小值
- count 计数
分组函数 group by**
having 过滤
select 性别,部门 count(*) from 员工 group by 部门 having 性别 ='女'
cast函数 类型转换**
多表连接查询
select 字段列表 from 表1 inner||left right join 表2 on 表1.字段=表2.字段
select 字段列名 from 表1,表2 where 表1.字段=表2.字段
内连接查询
select 字段列名 from 表1,表2 where 表1.字段=表2.字段(可用)
外连接查询
select 字段列表 from 表1 inner||left right join 表2 on 表1.字段=表2.字段(必用)
带any的子查询
select 类名 from 表名 where a>any(... or ...);
带all的子查询
select 类名 from 表名 where a>all(... and ...)
带some 的子查询
select 类名 from 表名 where a> some(... or ...)
union (过滤重复值)
union all(傻瓜拼接)
[sql语句1]
union
[sql语句2]
[sql语句1]
union all
[sql语句2]
行列转换
select 列名1 from 表名
union select 列名2 from 表名
union select 列名 from 表名
group by 列名;
使用正则表达式查询
字段名 regexp '匹配方式'
其中,“属性名”表示需要查询的字段名称;“匹配方式”表示以哪种方式来匹配查询。“匹配方式”中有很多的模式匹配字符,它们分别表示不同的意思。下表列出了 REGEXP 操作符中常用的匹配方式。
** 字符^
用来匹配以特定字符或字符串开头的记录。**
select 列名 from 表名 where 类名 regexp '^j';
**字符$
用来匹配以特定字符或字符串结尾的记录。 **
select 列名 from 表名 where 类名 regexp 'y$';
字符.
用来替代字符串中的任意一个字符。
select 列名 from 表名 where 类名 regexp 'a.y';
字符*
和+
都可以匹配多个该符号之前的字符。不同的是,+
表示至少一个字符,而*
可以表示 0 个字符。
select 列名 from 表名 where 类名 regexp '^Th*';
正则表达式可以匹配字符串。当表中的记录包含这个字符串时,就可以将该记录查询出来。指定多个字符串时,需要用|
隔开。只要匹配这些字符串中的任意一个即可。
select 列名 from 表名 where 类名 regexp 'an'
使用方括号`[ ]`可以将需要查询的字符组成一个字符集合。只要记录中包含方括号中的任意字符,该记录就会被查询出来。例如,通过“[abc]”可以查询包含 a、b 和 c 等 3 个字母中任意一个的记录。
```sql
select 列名 from 表名 where 类名 regexp '[io]';
```
`[^字符集合]`用来匹配不在指定集合中的任何字符。
```sql
select 列名 from 表名 where 类名 regexp '[a-t]'
```
`字符串{n,}`表示字符串连续出现 n 次;`字符串{n,m}`表示字符串连续出现至少 n 次,最多 m 次。
```sql
select 列名 from 表名 where 类名 regexp 'e(2,)'
```