mysql day02

update语句

用于修改表中的数据

修改某个字段的所有数据

update goods set 序号 = 1; 将所有goods表中序号字段都修改为 1

修改某个字段指定的某个数据

update goods set 序号 = 2 where goods_name = '苹果手机' 将goods_name 为 "苹果手机" 的数据 的 序号 修改为 2

在原有的数据基础上尽心修改

update goods set 序号 = 序号 + 2 where goods_name = '三星手机'; 将goods_name 为 “三星手机” 的数据的 序号

 在原来序号基础上 + 2

也可以同时修改一个数据中的多个字段

update goods set 序号 = 4, price = 2500 where goods_name = '三星手机';

delete语句

delete from goods where 序号 = 4; 删除 goods表中 序号 列值为 4 的数据

1:如果不适用 where 句子,将会删除 表中所有数据 但是列的类型依旧存在

drop table goods; 删除整个表

2:delete 语句 不能删除某一列的值 可使用 update 设为 null 或者 ''

selece语句

先从创建一个表

create table student(
 id int not null default 1,
 name varchar(20) not null default '',
 chinese float not null default 0.0,
 english float not null default 0.0,
 math float not null default 0.0
);

insert into student(id,name,chinese,english,math) values(1,'刘备',89,78,90);
insert into student(id,name,chinese,english,math) values(2,'张飞',67,98,56);
insert into student(id,name,chinese,english,math) values(3,'宋江',87,78,77);
insert into student(id,name,chinese,english,math) values(4,'关羽',88,98,90);
insert into student(id,name,chinese,english,math) values(5,'赵云',82,84,67);
insert into student(id,name,chinese,english,math) values(6,'欧阳锋',55,85,45);
insert into student(id,name,chinese,english,math) values(7,'黄蓉',75,65,30);

查询表中所有数据

select * from student;

查找指定列

select name,math from student;

查找指定列 并且指定某个列的数据为。。。

select name,math from student where id = 2;

distinct 去重

select distinct english from student;

此时去重需要以每一行为准 如果改行所有列的数据都相同才会去除重复

可以对数据进行操作 也可以修改别名

select name as 姓名, chinese+english+math as 总分 from students;

配合运算符使用

select * from student where chinese + math > 150 and chinese > english and name like '刘%'; 查询 语文加数学大于150 并且 语文大于英语 而且名字以 刘 开头的人的数据

升序排列

select * from student order by math;

降序排列

select name, chinese + math as 语文数学总分 from student order by 语文数学总分 desc;

select name, chinese + math + english as total_score from student where name like '刘%' order by total_score desc;

统计函数

count

sum

avg

max

min

分组统计

#创建表EMP雇员
CREATE TABLE emp
(empno  MEDIUMINT UNSIGNED  NOT NULL  DEFAULT 0, /*编号*/
ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/
mgr MEDIUMINT UNSIGNED ,/*上级编号*/
hiredate DATE NOT NULL,/*入职时间*/
sal DECIMAL(7,2)  NOT NULL,/*薪水*/
comm DECIMAL(7,2) ,/*红利*/
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/
);

 INSERT INTO emp VALUES(7369, 'SMITH', 'CLERK', 7902, '1990-12-17', 800.00,NULL , 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1991-2-20', 1600.00, 300.00, 30), 
(7521, 'WARD', 'SALESMAN', 7698, '1991-2-22', 1250.00, 500.00, 30), 
(7566, 'JONES', 'MANAGER', 7839, '1991-4-2', 2975.00,NULL,20), 
(7654, 'MARTIN', 'SALESMAN', 7698, '1991-9-28',1250.00,1400.00,30), 
(7698, 'BLAKE','MANAGER', 7839,'1991-5-1', 2850.00,NULL,30), 
(7782, 'CLARK','MANAGER', 7839, '1991-6-9',2450.00,NULL,10), 
(7788, 'SCOTT','ANALYST',7566, '1997-4-19',3000.00,NULL,20), 
(7839, 'KING','PRESIDENT',NULL,'1991-11-17',5000.00,NULL,10), 
(7844, 'TURNER', 'SALESMAN',7698, '1991-9-8', 1500.00, NULL,30), 
(7900, 'JAMES','CLERK',7698, '1991-12-3',950.00,NULL,30), 
(7902, 'FORD', 'ANALYST',7566,'1991-12-3',3000.00, NULL,20), 
(7934,'MILLER','CLERK',7782,'1992-1-23', 1300.00, NULL,10);

select avg(sal), min(sal), deptno, job from emp group by deptno, job; 显示每个部门的每种岗位的平均工资和最低工资

select avg(sal) as avg_sal, deptno from emp group by deptno having avg_sal < 2000;显示平均工资低于2000的部门号和它的平均工资

字符串相关函数

select charset(ename) from emp; 返回字符串的字符集

 select concat(ename, ' 的工作是 ', job) from emp; 连接字符串,将多个字串拼接到一起

select instr('zhouhongliang','hong') from dual; 返回后方字符串在前方字符串的位置 没有则返回零

dual 亚元表, 系统表 可以作为测试表使用

select ucase(ename) from emp; 转换成大写

select lcase(ename) from emp; 转换成小写

select right(ename,2) from emp;  从ename右边起取2个字符

select left(ename,3) from emp; 从ename左边起取3个字符

select length(ename) from emp; 返回字符串的长度

select ename, replace(job,'MANAGER','经理') from emp; 将表中的job字段的 MANAGER 替换为 经理 然后输出

select strcmp('zhl','zhi') from dual; 返回1

select strcmp('zhl','zhL') from dual; 返回0(字符集不区分大小写时)

select strcmp('zhl','zhq') from dual; 返回-1

select substring(ename,1,2) from emp; 从第一个字符开始取 取两个字符 没有第0个字符 该条语句表示取前两个字符

select ltrim('   张三') from dual; 去除左边的空格

select rtrim('张三     ') from dual; 去除右边的空格

select trim('   张三      ') from dual; 去除左右两端的空格

select length(ltrim('   张三')) from dual;

select length(rtrim('张三     ')) from dual;

select length(trim('   张三      ')) from dual;

select length('   张三') from dual;

select length('张三     ') from dual;

select length('   张三      ') from dual;

函数之间可以嵌套使用

  • 38
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值