MySQL单表查询基本操作回顾。第三集。fighting,GOGOGO!!!

看这篇文章的老铁们,点下赞,点下关注。
感恩点赞,感恩关注
2020年2月15日晚上,到2月16日,无事,整理啊

MySQL数据操作

添加记录

INSERT (INTO) tbl_name [(col_name...)] {VALUE|VALUES}(values...)
不指定字段名称 INSERT tbl_name VALUE(value。。。)
列出指定字段 insert tbl_name(字段名...) values(值...)
INSERT .. set 的形式 INSERT tbl_name SET 字段名称=值。。。;
INSERT...select 的形式,INSERT tbl_name[(字段名称。。。)] select 字段名称。。。 from tbl_name where 条件
一次插入多条记录 insert tbl_name [(字段名...)] values(值。。。),(值。。。),(值。。。)

修改记录

   UPDATE tbl_name SET 字段名称=值。。。 [where 条件]
   如果不添加条件,整个表中的记录都会被修改

删除记录

   delete from tbl_name [where 条件]
   如果不添加条件,表中所有记录都会被删除
   修改AUTO_INCREMENT的值,ALTER TABLE tbl_name AUTO_INCREMENT=值;
   delete 情况数据表时不会重置AUTO_INCREMENT的值,可以通过 ALTER语句将其重置
   彻底清空数据表, TRUNCATE[table] tbl_name;清除表中所有记录,
   并同时重置AUTO_INCREMENT的值

查询记录

select select_expr... 
FROM tbl_name
[where 条件]
group by col_name|position HAVING 二次筛选
order by col_name|position|expr ASC|DESC 
limit 限制结果集的显示条数
查询表中所有记录 select * from tbl_name; *所有字段
指定字段的信息 select 字段名称... from tbl_name;
库名.表名 select 字段名称  from db_name.tbl_name;
给字段起别名  select 字段名 AS 别名... from db_name.tbl_name;
给数据表起别名 select 字段名。。。 from 表名 as 别名
使用表名.字段名 select tbl_name.字段名 from 表名;
where条件
      会筛选出符合条件的记录
      比较运算符 > >= < <= != <> <=>
                 <=>用于检测null值
      is[not] null 检测值是否为空或非空值
      指定范围 [not] between...and...
      指定集合 [not] in(值)
      逻辑运算符 and逻辑与,or 逻辑或
      匹配字符[not]like
              % 任意长度的字符
	          _任意一个的字符
      GROUP BY 把值相同放到一个组中,最终查询出的结果只会显示组中的一条记录
                       分组配合GROUP_CONCAT() 查看组中某个字段的详细信息
	                   配合聚合函数使用  COUNT()统计记录总数,
	                   如果写的是count(字段名称),字段中的值为null,不计入统计。
	                   若是count(*)会统计null值
	                   sum()求和,max()求最大值,
	                   min()求最小值,AVG() 求平均值
                       配合 with rollup关键使用  
                                   会在记录末尾添加一条记录,是上面记录的总和
      HAVING子句对分组进行二次筛选
      ORDER BY排序  ORDER BY字段名称 asc|desc
     LIMIT 限制结果集显示条数, LIMIT 值 显示结果集的前几条记录
               LIMIT offset,row_count 从offset开始,显示几条记录,offset 从0 开始

测试代码

CREATE DATABASE IF NOT EXISTS king DEFAULT CHARACTER SET 'UTF8';
USE king ;
CREATE TABLE IF NOT EXISTS user(
id INT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
age TINYINT UNSIGNED DEFAULT 18 COMMENT '年龄',
email VARCHAR(50) NOT NULL DEFAULT '[email protected]' COMMENT '邮箱'

)ENGINE=INNODB CHARSET = UTF8;

--不指定字段名称
insert user value(1,'q',12,'[email protected]');
insert user values(null,'a',13,'[email protected]');
insert user values(default,'s',14,'[email protected]');
--列出指定字段的形式
insert user(username) values('q');
--一次插入3条记录
insert user values(null,'gg',default,default),(null,'ll',124,'[email protected]'),(null,'qr',55,'[email protected]');
--INSERT...SET的形式
INSERT user SET username='hfd',age=44,email='[email protected]';

--update 
update user set age=29 where id=1;

--测试delete
delete from user where username='a';
--删除整个表
delete from user;
--删除整个表,重置 AUTO—INCREMENT
delete from user;
alter table user AUTO_INCREMENT=1;

-- 测试查询操作
CREATE TABLE user1(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE COMMENT '编号',
age TINYINT UNSIGNED NOT NULL DEFAULT 18  COMMENT '年龄',
sex ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别',
addr VARCHAR(20) NOT NULL DEFAULT 'beijing',
married TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0代表未结婚,1代表已婚',
salary FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
)ENGINE=INNODB CHARSET=UTF8;
INSERT user1 VALUES(1,'king',23,'男','北京',1,50000);
INSERT user1(username,age,sex,addr,married,salary) VALUES('queen',27,'女','上海',0,25000);
INSERT user1 SET username='imooc',age=31,sex='女',addr='北京',salary=40000;
INSERT user1 VALUES(NULL,'张三',38,'男','上海',0,15000),
(NULL,'张三风',38,'男','上海',0,15000),
(NULL,'张子怡',39,'女','北京',1,85000),
(NULL,'汪峰',42,'男','深圳',1,95000),
(NULL,'刘德华',58,'男','广州',0,115000),
(NULL,'吴亦凡',28,'男','北京',0,75000),
(NULL,'奶茶妹',18,'女','北京',1,65000),
(NULL,'刘嘉玲',36,'女','广州',0,15000);
--查询表中所有记录
select * from user1;
--username,age
select username,age from user1;
--查询其他数据库下的表的所有记录
select * from imooc.user--别名test
select id as '编号' ,age as '年龄' from user1;
--给表起别名
select u.username,u.sex  from user1 as u;
--测试where条件的比较运算符
--查询id,username,age id=5的用户
select id,username,age 
from user1
where id=5;
--添加userDesc字段
ALTER TABLE user1
ADD userDesc varchar(100);
--更新id<=9的用户 userDesc=‘asdasd’
update user1 set userDesc='asdasd'
where id<=9;

--userDesc为 NULL的用户
select * from user1 where userDesc<=> null;
--is [not] null 检测null值
select * from user1 where userDesc is null;
select * from user1 where userDesc is not null;

--测试范围between...and...
select username from user1 where age between 18 and 30;

--查询编号为1,3,5,7,9
select id,username
from user1
where id in (1,3,5,7,9);

select id,username
from user1
where username in ('king','queen','lsiy');

--测试逻辑运算符
select id,username
from user1
where sex='男' and age>=20;

--测试薪水范围在6万-10万且性别为男 地点在北京的
select id,username,salary,addr
from user1
where sex='男' and salary between 60000 and 100000 and addr='北京';

--查询id=1或者用户名为queen的
select * from user1 
where id=1 or username='queen';


--test模糊查询
select * 
from user1
where username like '%三%';
--用户名长度为3位的用户
select * 
from user1
where username like '___';
select * 
from user1
where username like '张_';

--test分组
select id,username ,sex
from user1
group by sex;

select id,group_concat(username ),sex
from user1
group by sex ;

--测试count
select count(id) from user1;

--按照sex分组,得到用户详情,并且分别统计组中的总人数
select group_concat(username),addr,count(username)
from user1
GROUP BY sex;

--按照addr分组,得到用户名的详情,总人数,得到组中年龄的总和,年龄的最大值,最小值,平均值
select addr,GROUP_CONCAT(username),count(*),sum(age),MAX(age),MIN(age),AVG(age)
from user1
group by addr;

select group_concat(username),addr,count(username)
from user1
GROUP BY sex
with ROllUP;

--对于分组结果进行二次筛选
select group_concat(username),addr,count(username)
from user1
GROUP BY addr
having count(*)>=3;

--测试排序
--按照id降序排列
select id ,username
from user1
order by id desc;

select id ,username ,age
from user1
order by age desc;

--按照多字段排序

select id ,username,age
from user1
order by age desc,id asc;


--实现随机记录
select id,username,age
from user1
order by rand();

--测试limit语句
select *
from user1
limit 5;

select *
from user1
limit 1,5;
select *
from user1
limit 0,3;
select *
from user1
limit 3,3;


--测试完整的select单表查询的形式
select addr,
GROUP_CONCAT(username) as userDetail,
count(*) AS totalUsers,
Sum(age) as sum_age,
MAX(age) as max_age,
Min(age) as min_age,
avg(age) as avg_age
from user1
where id>=2
group by addr;


select addr,
GROUP_CONCAT(username) as userDetail,
count(*) AS totalUsers,
Sum(age) as sum_age,
MAX(age) as max_age,
Min(age) as min_age,
avg(age) as avg_age
from user1
where id>=2
group by addr
Having totalUsers>=2;


select addr,
GROUP_CONCAT(username) as userDetail,
count(*) AS totalUsers,
Sum(age) as sum_age,
MAX(age) as max_age,
Min(age) as min_age,
avg(age) as avg_age
from user1
where id>=2
group by addr
Having totalUsers>=2
order by totalUsers asc;


select addr,
GROUP_CONCAT(username) as userDetail,
count(*) AS totalUsers,
Sum(age) as sum_age,
MAX(age) as max_age,
Min(age) as min_age,
avg(age) as avg_age
from user1
where id>=2
group by addr
Having totalUsers>=2
order by totalUsers asc
limit 0, 2;

最后宣传下我个人的微信公众号,微信搜索:可及的小屋,有志向整副业,娱乐的程序员们,欢迎您的到来。谢谢。
100G程序员资料,自取哦!!
可及的小屋

发布了48 篇原创文章 · 获赞 9 · 访问量 2405

猜你喜欢

转载自blog.csdn.net/jjy19971023/article/details/104337209