SQL数据库的使用:增删改查
一、向数据库插入 修改 删除数据(DML)
语法:insert into 表名称(字段1,字段2,... 字段n) values(值1,值2,... 值n);
特殊插入方式,如果插入全部值有精简的写法(注意:如果是全字段插入的话 字段名可以省略)
插入数据的时候只要字段没有设置no null属性就可以不插入
如果有默认约束的字段不插入的时候 显示默认值 如果插入是null 就是null
二、修改数据
例:insert into user(id,username,password,gender,age,email,salary,state,dept,registTime)values(1,'张三','123','男',28,'zhangsan@163.com',5000,1,'技术部','2015-12-12 12:12:12');//自增长的主键在插入的时候值可以为null
特殊插入方式,如果插入全部值有精简的写法(注意:如果是全字段插入的话 字段名可以省略)
语法:insert into 表名称 values(值1,值2,值3........值n);
insert into user values(null,'王五','123','男',28,'wangwyu@163.com',5000,1,'技术部','2015-12-12 12:12:12');
插入数据的时候只要字段没有设置no null属性就可以不插入
如果有默认约束的字段不插入的时候 显示默认值 如果插入是null 就是null
语法:update 表名称 set 字段=值,字段=值..... [where 条件]
在执行修改语句的时候一定要加上修改条件(where=?)否则就会进行全数据库内容的修改
三、删除数据
语法:delete from 表名称 [where 条件]
注意:如果不写where条件 表中的数据会全部删除掉
问题:drop table user;与delete from user;的区别?
前者将表的数据和结构都删除掉 后者只删除表的数据表的结构还在
问题:delete from user; 与 truncate user;的区别?
前者是逐条删除表中的数据的 并且受事务的控制 ,后者先将表摧毁,然后在重建表的结构,并且不受事务的控制。
四、什么是事物:一个过程中存在n个动作(事件) 要不这些动作同时成功 要不同时失败
五、查询数据(DQL)
- 查询全部:select * from user; //* 代表所有的字段
- 查询部分字段:select 字段1,字段2 from 表;
- 去重查询: select distinct 字段 from user;
select distinct 字段1,字段2from 表;
注意:上面的语句代表dept和username都重复才算是一条重复数据 - 运算查询:select 字段1,字段2+1000 from 表;
注意:null+任何数值都是null,运算查询只能是int类型运算,字符串相加结果为0
ifnull函数
起一个别名 as 别名 as可以省略 - 聚合查询(聚合函数):注意:聚合函数忽略null值
- count(字段) 计数函数:语法:select count(字段) from 表;
- sum() 求和函数:语法:select sum(字段) from 表;
注意:聚合函数聚合的某一个字段下的所有值 - avg() 平均数:
- max() 求最大值:
语法:select max(字段) from 表; - min() 求最小值:
语法:select min(字段) from 表;
注意:聚合值不要轻易与某个字段进行搭配,比如这种:select username,sum(salary) from user - 排序查询 :order by 字段,语法:select *from 表 order by 字段1 参数,字段2 参数;
- 条件查询
- 单条件查询
语法:select * from 表 where 字段>值;
注意:涉及的符号> < != ....... - 多条件查询
and 条件。语法:select * from 表 where 字段<值 and 字段=值;
or条件:语法:select * from 表 where 字段<值 or 字段>值;
注意:and优先级大于or - 范围查询 between and
- 第一种方式:select * from 表 where 字段>值1 and 字段 <值2;
- 第二种方式:select * from 表 here 字段 between 值1 and 值2;(包含值1和值2)
- 枚举查询:语法:select * from 表 where id 字段(值1,值2,值3);
- 空查询:语法:select * from 表 where 字段 is null;
非空查询:语法:select * from 表 where 字段 is not null; - 模糊查询:语法:select * from 表 where 字段 like '%(某个内容)%'; %代表任意0个或多个字符
查询指定模糊:语法:select * from 表 where 字段 like '(某个内容)_'; 注意:_代表任意一个字符 - 分组查询:需求:求各个部门每个月的薪资支出总和
语法:select 字段,sum(字段) from 字段 group by 字段;
例子:select dept,sum(salary) from user group by dept;
having:代表对分组后的数据进行筛选
例子:select dept,sum(salary) from user group by dept having sum(salary)>15000; - 分页查询:limit
语法:select * from 表 limit 0,5; (第0个开始,向下5个)
例子:select * from user limit 2,2;