本文主要是介绍day62 创建新表 修改及删除表中数据 单表查询 where的运算符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
创建新表
根据现有表创建新表添加数据
create table 新表名
select 列名 from 现有表
删除表
drop table 表名
在创建新表时,仅保留原表结构,不保留数据
create table 新表名
select 列名 from 现有表
where 1=2;
吧现有表数据添加到已存在新表中
insert into 新表名(列名列表)
select 列名列表 from 新表
修改表中数据
update 表名 set 列名=新值,列名=新值 【where 条件】
where修改条件,仅修改满足条件的数据
where条件不写,表述修改所有条件
修改所有学生年龄+1
update student set stu_age =stu_age+1;
修改邮箱为为空的学生邮箱为‘mysql@136.com’
update student set email = 'mysql@136.com'
where email is null;
修改年龄在18-22的女同学年龄-1
update student set age = age -1
where age between 18 and 22 and sex =‘女’;
修改所有姓张的同学的年龄=18
update student set age = 18
where name like ‘张%’;
删除表中数据
delete from 表名 【where 条件】
删除表中所有年龄小于20的男同学
delete from student where age<20 and sex='男';
-- 2 删除表中电话为空的女同学
delete from student where stu_sex = '女' and stu_phone is null;
-- 3 删除年龄大于22的男同学
delete from student where stu_sex ='男'
and stu_age <20;
-- 4 删除所有姓'宋'的男同学
delete from student where stu_sex ='男'
and stu_name ='宋';
-- 5 删除所有同学
delete from student ;
截断表
truncate table 表名
问:delete from 表名 和 truncate table 表名区别?
共同点:都是删除表中所有的数据
不同点:
1) delete from 表名,删除后的数据可以回滚
truncate table 表名,删除后完全不存在
2)如果删除表中有自增字段,delete不影响
truncate时自增列初始化
3)truncate 不能删除主外键中的主表数据
delete能删除主外键关联中的主表数据(需要先删除外键引用表中的所有数据)
单表查询
select 列名列表 --列名之间使用,分隔
from 表名
【 where】 查询条件
【group by 】分组列
【 having 】分组后筛选
【order by】 排序列
注意事项:
1 查询结果不在数据库存储,查询结果为结果集,以表结构显示
2给列起别名
语法:
列名 【as】别名
查询所有含所有列的值
select * from emp;
查询部分列的值(投影查询)
查询员工的编号,姓名,职位,工资,年薪
select empno,ename,sal,sal*12 as yearSal from emp
查询员工的编号,姓名,职位
select empno ,ename,sal from emp
select empno as 部门编号,ename as 名字,sal as 薪水 from emo;
where子句
运算符
1)赋值语句 =
2)算术运算符 + - * / %
3)比较运算符 = != any all some
SOME修饰符:SOME修饰符与ANY修饰符具有相同的含义,因为它们可以互换使用。有些数据库系统中,SOME修饰符只是ANY的别名。
SELECT *
FROM employees
WHERE salary > ANY (SELECT salary FROM salaries WHERE job_title = 'Manager');
SELECT *
FROM employees
WHERE salary > ALL (SELECT salary FROM salaries WHERE job_title = 'Manager');
4)逻辑运算符 not and or
逻辑运算顺序的优先级依次往后 先识别not 然后and 最后 or
a and b or c 会把ab当作整体与c 取or
select empno,ename,job,sal,deptno from emp where deptno in (10,20) and sal >1000;select empno,ename,job,sal,deptno from emp where deptno = 10 or 20 and sal >1000;
sql语句2会把 20 和 sal>1000 当作整体 再 or deptno = 10
select empno,ename,job,sal,deptno from emp where job = 'SALESMAN' or 'CLERK';select empno,ename,job,sal,deptno from emp where job ='SALESMAN' or job = 'CLERK';
sql语句1会识别错误,得到只有salesman的结果集
5)sql运算符
in, not in:多者取其一
SELECT *FROM employeesWHERE employee_id NOT IN (SELECT employee_id FROM retired_employees);
between and:两者之间 用于数值或日期之间区间
not between and
is null , is not null
like , not like
order排序
order by asc || desc 降序排序;
常用函数
1数值函数
ceil()向上取整
floor()向下取整
round(x,y)四舍五入
truncate(x,y) 截断
2字符函数
concat(s1,s2,。。。)多个字符串
当任何一个值为null结果为null
select concat(empno,'-',ename) from emp
low(), upper()
insert(str,index,len,new str):
删除 和 替换
mysql下标从一开始
select ename,insert(ename,3,2,'') from emp
instr(str,s)
从str中查询s第一次出现的下标。无则返回0
select ename,instr(enmae,'a') from emp
substr,substring(str,index,len):从str的index处开始提取len个字符
select ename,substr(ename,index)from emp;
日期函数 日期的默认格式‘yyyy-MM-dd’
now()
select now(),curDate(),curTime()
查询员工入职日期为1981的员工
select empno,year(hiredate) from emp where year(hiredate) =1981;
添加员工信息
转换函数
%Y:年 四位 %y两位
%m:月
%d:日
%H:小时 24小时制 %h 12小时制
%S:秒
%i:分
str_to_date
insert into emp(ename,empno,hiredate)
values('天气',1,str_to_date('11-11-2023' ,'%m-%d-%y') ;
这篇关于day62 创建新表 修改及删除表中数据 单表查询 where的运算符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!