insert into 表名(字段名1,字段名2,字段名3…) values(值1,值2,值3);注意:字段名和值要一一对应。什么是一一对应?数量要对应。数据类型要对应。 //注意:除了数字,其他都要加单引号
insert 插入多条数据
语法:insert into 表名(字段名1,字段名2) values(),(),(),();
update修改数据
update修改数据
update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3… where 条件;注意:没有条件限制会导致所有数据全部更新。
delete删除数据
delete删除数据
delete from 表名 where 条件;注意:没有条件,整张表的数据会全部删除!
快速删除表中的数据
truncate table 表名;
指定存储引擎
在建表的时候可以在最后小括号的")"的右边使用
ENGINE来指定存储引擎;CHARSET来指定这张表的字符编码方式。
约束相关命令
非空约束
not null
唯一性约束
unique
主键约束
primary key (简称PK)
外键约束
foreign key(简称FK)
单行处理函数相关命令
单行处理函数
使用方法 也可以用在where条件里面
lower 转换成小写
select lower(字段名) from 表名;
upper 转换成大写
select upper(字段名) from 表名;
substr 取子串
select substr(被截取的字符串 ,起始下标,截取长度) from 表名 ;//注意:起始下标从1开始。
concat 字符串拼接
select concat(字段名,字段名) from 表名;
length 获取长度
select length(字段名) from 表名;
format 设置千分位
format(数字, ‘格式’) 例如:select ename,format(sal, ‘$999,999’) as sal from emp;
round 四舍五入
ect round(字段名,0) from 表名; //可以不写字段名写数字,那么它就对这个数字进行四舍五入,而且还是借助表名的结构输出。后面是0表示保留一位小数,2表示保留两位小数,-1表示保留到十位,-2保留到百位依次后推。
rand 生成随机数
select round() from 表名; //生成随机数
100以内的随机数
select round(rand()*100,0);
ifnull() 将null转为具体的值。只要有null参与的数学运算,结果一定是null
ifnull(数据,被当做哪个值) 如果数据为null,把这个数据当做哪个值。
多行处理函数(分组函数)相关命令
多行处理函数(分组函数)
也就是说一列数据 输出一个值。
sun 求和
select sun(字段) from 表名; //输出这个字段的和
max 最大值
select max(字段) from 表名; //输出这个字段的最大值
min 最小值
select min(字段) from 表名; //输出这个字段的最小值
avg 平均值
select avg(字段) from 表名; //输出这个字段的平均值
count 计数
select count(字段) from 表名; //输出这个字段的数据(也就是有多少行)的数量
分组查询等相关命令
分组查询
select 字段… from 表名 group by 要分组的字段; //在一条select语句当中,如果有group by语句的话,select后面只能跟:参加分组的字段,以及分组函数。其它的一律不能跟。
联合分组查询
select 字段… from 表名 group by 要分组的字段1,字段2; //两个字段联合成1个字段看。(两个字段联合分组)
having 分组后再过滤
使用having可以对分完组之后的数据进一步过滤。having不能单独使用,having不能代替where,having必须和group by联合使用。优化策略:where和having,优先选择where,where实在完成不了了,再选择having。having 是跟 group by后面用的,可以用分组函数。where后面可不能用。例如:select deptno,avg(sal) from emp group by deptno having avg(sal) > 2500;
distinct去重
distinct只能出现在所有字段的最前方distinct出现在job,deptno两个字段之前,表示两个字段联合起来去重。例如:select distinct job from emp;select distinct job,deptno from emp;错误写法: select ename,distinct job from emp; distinct只能出现在所有字段的最前方
连接查询,多表联查等相关命令
连接查询 内连接
select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno; //join连接的意思 ,on是连接条件
连接查询 外连接
select e.ename,d.dname from dept d left join emp e on e.deptno = d.deptno; //left 是join左边的表是主表。right代表什么:表示将join关键字右边的这张表看成主表,主要是为了将这张表的数据全部查询出来,捎带着关联查询左边的表。在外连接当中,两张表连接,产生了主次关系。
多表联查
语法:select … from a join b on a和b的连接条件 join c on a和c的连接条件 right join d on a和d的连接条件;//一条SQL中内连接和外连接可以混合。都可以出现!
union合并查询结果集
例如:select ename,job from emp where job = ‘MANAGER’ union select ename,job from emp where job = ‘SALESMAN’; //要求:结果集合并时列和列的数据类型也要一致。
limit取出部分数据
完整用法:limit startIndex, length; // startIndex是起始下标,length是长度。起始下标从0开始。缺省用法:limit 5; 这是取前5。例如:select ename,sal from emp order by sal desc limit 2, 3;