学习大数据的第34天——mysql增删改查(alter、insert、update、select、delete)以及常用的函数和操作
MYSQL第二天
alter
修改的作用 修改库 修改表 修改字段
修改库的编码集
alter database shujia character set utf8
修改表的编码集
alter table students character set utf8
修改表名
alter table student rename to students
修改字段:change(字段一旦包含数据:类型的变化)
能修改字段的所有内容:可以修改成新的 也可以在原字段上修改
# 修改成一个新的字段
alter table students change age agenew int 属性;
# 修改原字段的属性
alter table students change age age int 属性;
修改字段:modify(字段一旦包含数据:类型的变化)
只能在原字段上进行修改,不能修改名称
# 修改age的类型 从int>varchar
alter table students modify age varchar(255) 属性;
添加字段
alter table studnets add 字段名 字段类型 字段属性;
alter table studnets add clazz varchar(255) 属性;
删除字段
alter table studnets drop clazz;
insert
添加数据
格式:insert into 表明(字段名1,字段名2…字段名n) values(‘值1’,‘值2’,…‘值n’),(),…();
注意事项:
1.值一定要加’’ 方便与其他的语言的使用
2.字段和值之间的数量要一一对应
3.字段和值之间的位置一一对应
4.字段可以不按照顺序给
insert into student(id,name,age,sex)values('1001','test','18','0');
insert into student(age,name,id,sex)values('1001','test','18','0');# 1001添加到了age
insert into student(id,name,age,sex)values('1001','test','18','0'),('1002','test','18','0');
update
格式:update 表名 set 字段1=‘值1’,字段2=‘值2’…字段n=‘值n’
默认修改所有数据
update students set name='show';
update students set age='22';
update students set name='show',age='22';
Select
查询
格式:select 字段1,字段2…字段n from 表名
如果显示的时候 显示另外的格式选择
as
select * from students;# *表示所有字段
select id,name,age,sex from students;
select id,age,sex,name from students;
select id as '学号',name as '姓名', age '年龄' , sex '性别' from students;
where子句
用于做操作的筛选
格式:操作 where 判断条件
> < <= >= = <> 大于、小于、大于(小于)等于、不等于 between …and… 显示在某一区间的值 in(set) 显示在in列表中的值,例:in(100,200) like ‘张_’ 模糊查询 使用% (匹配所有)和 _(匹配一个所有) Is null 判断是否为空
select * from student where age>=18;
select * from student where age between 18 and 22;# 查询age在18-22的
select * from student where age in(18,22); # 查询age等于18和22
select * from student where name like 'z%'; # 查询z开头的
select * from student where name like 'z_'; # 查询z开头两个字的
select * from student where name is null;
and 多个条件同时成立 or 多个条件任一成立 not 不成立,例:where not(expection>10000); 如果not和is一起使用 写法为:
is not null
select * from students where age>=18 and age<=22;
select * from students where name='zs' or name='ls';
delete
删除
格式:delete from 表 [where 子句]
表示清空所有数据
delete from stduents;# 默认清空所有数
delete from students where sex='0';# 删除sex=0的数据
delete from students where name like 'z%';#删除name等于z开头的
常用函数和操作
DISTINCT (去重)
格式:DISTINCT 字段1,字段2…字段n
注意:
1.有DISTINCT的SQL语句只能做去重使用
2.DISTINCT会根据之后的字段一起做去重
select DISTINCT name from students; # 对name去重
select DISTINCT name,age from students; # 对name和age一起去重
字段进行算数运算
字段运算符字段
注意:varchar类型的问题
数值类型的varchar可以进行算数运算
select price+sum from goods;
字段的拼接
concat
字段和字段之间如果有拼接符 需要手动加上
格式: concat(值1,值2…值n)
select concat(name,age) from students;
select concat(name,'-',age,'-',sex) from students;
concat_WS
字段和字段之间如果有拼接符 需要只当拼接符 自动去加
格式:concat_WS(拼接符,值1,值2…值n)
select concar_WS('-',name,age) from students # 结果会在name和age之间自动加上-
聚合函数
count()
格式:count(列)
注意:求一个列 不会计算null
avg()
格式:avg(列)
sum()
格式:sum(列)
min()
格式:min(列)
max()
格式:max(列)
select count(age) from students; # 求age这一列有多少条记录
select count(*) from students; # 求总共有多少条记录
select avg(age) from students;
select sum(age) from students;
select min(age) from students;
select max(age) from students;
# 可以获取varchar的最大值 和最小值
select min(name) from students;
select max(name) from students;
浮点数的计算
floor():向下取整
ceil() :向上取整
round(X,D): D表示保留几位小数 四舍五入 针对于D+1位
round(X):四舍五入 不保留小数 只针对对于第一位小数
rand();随机产生0-1之间的小数
select floor(10.5);# 10
select ceil(10.2); # 11
select round(10.2);#10
select round(10.4555,2);#10.46
实操代码
mysql01:
-- alter insert update select delete
-- alter 修改库的编码集
alter database shujia character set utf8mb4;
-- 修改表的编码集
alter table students character set gbk;
-- 修改表名
alter table student rename to students;
-- 修改字段change
alter table students change age agenew int DEFAULT 18;
alter table students change agenew agenew int;
-- 修改字段:modify(字段一旦包含数据:类型的变化)
-- 只能在原字段上修改
-- 字符串和int 可以相互转换
alter table students modify agenew int DEFAULT 18;
-- 添加字段
alter table students add city enum('北京','合肥','杭州');
alter table students add clazz varchar(255);
alter table students add sex enum('1','0','未知') DEFAULT '未知';
-- 删除字段
-- 注意:后面只能跟一个字段
alter table students drop clazz;
alter table students drop city;
alter table students drop sex;
-- 添加数据insert
-- 格式:insert into 表名(字段名1,字段名2,字段名3,..) values('值1','值2','值3',...);
-- 注意事项:
-- 1.值一定要加'' 方便与其他的语言的使用
-- 2.字段和值之间的数量要一一对应
-- 3.字段和值之间的位置一一对应
-- 4.字段可以不按照顺序给
insert into students(id,name,agenew,sex) values('1001','test','19','1');
insert into students(agenew,name,id,sex) values('1001','test','19','1');
insert into students(id,name,age,sex)values('1002','test','18','0'),('1003','test','18','0');
-- update
-- 格式:update 表名 set 字段1='值1',字段2='值2'.... where ...
update students set name='show';
update students set agenew='22';
update students set name='show',agenew='22';
-- 重新 建表
create table worker(
id int AUTO_INCREMENT,
name varchar(255),
age int,
sex enum('1','0','未知') DEFAULT '未知',
PRIMARY KEY(id)
)
-- 插入数据
insert into worker(name,age,sex)VALUES("李四",19,"1");
insert into worker(name,age,sex)VALUES("王五",20,"1");
insert into worker(name,age,sex)VALUES("赵六",21,"1");
insert into worker(name,age,sex)VALUES("钱琪",22,"1");
insert into worker(name,age,sex)VALUES("杨幂",18,"0");
insert into worker(name,age,sex)VALUES("丽丽",19,"0");
insert into worker(name,age,sex)VALUES("莎莎",20,"0");
insert into worker(name,age,sex)VALUES("慧慧",22,"0");
insert into worker(name,age,sex)VALUES("翠翠",23,"0");
insert into worker(name,age,sex)VALUES(null,23,"0");
-- select 查询 geshi :select 字段1,字段2,... from 表名
-- 如果显示的时候,显示另外的格式选择 as
-- 查询所有数据
select * from worker;
-- 也可以省略 as
select id as '学号',name as '姓名',age as '年龄',sex as '性别' from worker;
select * from worker where age >=18;
select *from worker where age BETWEEN 18 and 22; -- 查询18 到22年龄的数据
select *from worker where name like '李%'; -- 查询李开头的名字
select *from worker where name like '赵_'; -- 查询赵开头两个字的
select *from worker where name is null; -- 查询名字为空的信息
select *from worker where name is not null; -- 查询名字不为空的信息
-- and 和 or的区别
select *from worker where age>=18 and age <=22;
select * from worker where name='杨幂' or name='丽丽';
-- delete 删除
-- 格式:delete from 表 where 条件
-- 如果后面不接where 条件, 则表示清空所有数据
DELETE from worker;
DELETE from worker where sex='0';
DELETE from worker where name like '李%'
mysql2:
-- 常用的函数和操作
-- 去重操作
-- 输出的就是名字这一行
select DISTINCT name '姓名' from worker;
-- 如果后面接两个,则是将两个属性拼接一起去重
select DISTINCT name,age from worker;
-- 字段进行算数运算
-- 注意:varchar类型的问题
-- 数值类型的varchar可以进行算数运算
select id+age from worker;
-- 字段的拼接
-- concat
-- 字段和字段之间 如果有拼接符,需要手动加上
-- 格式: concat(值1,值2,值n)
select concat(name,age) from worker;
-- 如果中间需要加上拼接符号,在每个字段之间添加
select concat(name,'-',age) from worker;
-- concat_WS
select CONCAT_WS('-',name,age) from worker; #结果会在name和age之间自动加上-
-- 聚合函数
-- count()
-- 格式:count(列)
select count(age) from worker; #输出11
select count(name) from worker; #输出10
-- 注意:求一个列 不会计算null,说明单输出一个字段,有时会导致输出的结果不一样,所以我们一般都用 count(*)
select count(*) '信息的条数' from worker;
-- avg(列) sum(列) min(列) max(列)
-- 求平均数 求和 最小 最大
select avg(age) '平均值' from worker;
select sum(age)/count(*) '平均值' from worker;
select sum(age) '年龄总和' from worker;
select min(age) '最小年龄' from worker;
select max(age) '最大年龄' from worker;
# 可以获取varchar的最大值 和最小值
# 用首字母的大小进行排序
select min(name) from worker;
select max(name) from worker;
-- 浮点数的计算
-- floor():向下取整
--
-- ceil() :向上取整
--
-- round(X,D): D表示保留几位小数 四舍五入 针对于D+1位
--
-- round(X):四舍五入 不保留小数 只针对对于第一位小数
--
-- rand();随机产生0-1之间的小数
select floor(10.5);# 10
select ceil(10.2); # 11
select round(10.2);#10
select round(10.4555,2);#10.46
# 随机取到0-10 之间的数
select ROUND(rand(),1)*10;