Linux学习--MySQL学习之查询语句
所有实现基于mysql8.0.26实现,事例代码
1:常用函数
- 字符函数
- 数学函数
- 日期函数
- 聚集函数
- 数学计算
- if函数
- case函数
函数:MySQL服务内置命令
语法:函数名(表头名)
select格式
SELECT 函数(表头名) FROM 库名.表名;
SELECT 函数(表头名) FROM 库名.表名 WHERE 条件;
1.字符函数(处理字符或字符类型的表头)
mysql> use tarena;
Database changed
mysql> select name from user where name='root';
+------+
| name |
+------+
| root |
+------+
1 row in set (0.00 sec)
#获取字符字节长度length
mysql> select name,length(name) as 字节个数 from user where name='root';
+------+--------------+
| name | 字节个数 |
+------+--------------+
| root | 4 |
+------+--------------+
1 row in set (0.00 sec)
mysql> select name,length(name) from employees where employee_id=3;
+-----------+--------------+
| name | length(name) |
+-----------+--------------+
| 李玉英 | 9 |
+-----------+--------------+
1 row in set (0.00 sec)
mysql> select name from employees where employee_id=3;
+-----------+
| name |
+-----------+
| 李玉英 |
+-----------+
1 row in set (0.00 sec)
#获取字符长度char_length
mysql> select name,char_length(name) from employees where employee_id=3;
+-----------+-------------------+
| name | char_length(name) |
+-----------+-------------------+
| 李玉英 | 3 |
+-----------+-------------------+
1 row in set (0.00 sec)mysql> select name from user where uid <=3;
+--------+
| name |
+--------+
| root |
| bin |
| daemon |
| adm |
+--------+
4 rows in set (0.00 sec)
#upper转大写
mysql> select upper(name) from user where uid <=3;
+-------------+
| upper(name) |
+-------------+
| ROOT |
| BIN |
| DAEMON |
| ADM |
+-------------+
4 rows in set (0.00 sec)mysql> select ucase(name) from user where uid <=3;
+-------------+
| ucase(name) |
+-------------+
| ROOT |
| BIN |
| DAEMON |
| ADM |
+-------------+
4 rows in set (0.00 sec)mysql> select lower("ABCD");
+---------------+
| lower("ABCD") |
+---------------+
| abcd |
+---------------+
1 row in set (0.00 sec)
#lcase将信息转换为小写
mysql> select lcase("ABCD");
+---------------+
| lcase("ABCD") |
+---------------+
| abcd |
+---------------+
1 row in set (0.00 sec)mysql> select name from employees where employee_id <=3;
+-----------+
| name |
+-----------+
| 梁伟 |
| 郭岩 |
| 李玉英 |
+-----------+
3 rows in set (0.00 sec)
//substr(s,start,end)从s的start位置开始取出end长度的子串
mysql> select substr(name,2,3) from employees where employee_id<=3;
+------------------+
| substr(name,2,3) |
+------------------+
| 伟 |
| 岩 |
| 玉英 |
+------------------+
3 rows in set (0.00 sec)
mysql> select instr(name,'a') from user where uid <=3;
+-----------------+
| instr(name,'a') |
+-----------------+
| 0 |
| 0 |
| 2 |
| 1 |
+-----------------+
4 rows in set (0.00 sec)
#instr(str,str1)返回str1参数,在str参数内的位置
mysql> select name,instr(name,"英") from employees;
+-----------+-------------------+
| name | instr(name,"英") |
+-----------+-------------------+
| 梁伟 | 0 |
| 郭岩 | 0 |
| 李玉英 | 3 |
| 张健 | 0 |
| 郑静 | 0 |
| 牛建军 | 0 |
| 刘斌 | 0 |
| 汪云 | 0 |
...
#去除字符串两边空格
mysql> select trim(" ABC ");
+-------------------+
| trim(" ABC ") |
+-------------------+
| ABC |
+-------------------+
1 row in set (0.00 sec)
#2.数学函数(处理数字或数值类型的表头)
//ABS(x) 返回x的绝对值
mysql> select abs(11);
+---------+
| abs(11) |
+---------+
| 11 |
+---------+
1 row in set (0.00 sec)
mysql> select abs(-11);
+----------+
| abs(-11) |
+----------+
| 11 |
+----------+
1 row in set (0.00 sec)
mysql>
//PI() 返回圆周率π,默认显示6位小数
mysql> select pi() ;
+----------+
| pi() |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)
//MOD(x,y) 返回x被y除后的余数
mysql> select mod(10,3);
+-----------+
| mod(10,3) |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)
//输出1-10之间的偶数uid号
mysql> select name , uid from tarena.user where uid between 1 and 10 and mod(uid,2) = 0 ;
+----------+------+
| name | uid |
+----------+------+
| daemon | 2 |
| lp | 4 |
| shutdown | 6 |
| mail | 8 |
+----------+------+
4 rows in set (0.00 sec)
//CEIL(x)、CEILING(x) 返回不小于x的最小整数 (x 是小数)
mysql> select ceil(9.23);
+------------+
| ceil(9.23) |
+------------+
| 10 |
+------------+
1 row in set (0.00 sec)
mysql> select ceiling(9.23);
+---------------+
| ceiling(9.23) |
+---------------+
| 10 |
+---------------+
1 row in set (0.00 sec)
mysql>
//FLOOR(x) 返回不大于x的最大整数 (x 是有小数的数字)
mysql> select floor(9.23);
+-------------+
| floor(9.23) |
+-------------+
| 9 |
+-------------+
1 row in set (0.00 sec)
#3.日期时间函数
![日期时间函数](https://img-blog.csdnimg.cn/cdda5eb7e0f34d9aaf432774b9b5ebbb.png)
mysql> select curtime(); //获取系统时间
+-----------+
| curtime() |
+-----------+
| 17:42:20 |
+-----------+
1 row in set (0.00 sec)
mysql> select curdate();//获取系统日期
+------------+
| curdate() |
+------------+
| 2023-05-24 |
+------------+
1 row in set (0.00 sec)
mysql> select now() ;//获取系统日期+时间
+---------------------+
| now() |
+---------------------+
| 2023-05-24 17:42:29 |
+---------------------+
1 row in set (0.00 sec)
mysql> select year(now()) ; //获取系统当前年
+-------------+
| year(now()) |
+-------------+
| 2023 |
+-------------+
1 row in set (0.00 sec)
mysql> select month(now()) ; //获取系统当前月
+--------------+
| month(now()) |
+--------------+
| 5 |
+--------------+
1 row in set (0.00 sec)
mysql> select day(now()) ; //获取系统当前日
+------------+
| day(now()) |
+------------+
| 24 |
+------------+
1 row in set (0.00 sec)
mysql> select hour(now()) ; //获取系统当前小时
+-------------+
| hour(now()) |
+-------------+
| 17 |
+-------------+
1 row in set (0.00 sec)
mysql> select minute(now()) ; //获取系统当分钟
+---------------+
| minute(now()) |
+---------------+
| 46 |
+---------------+
1 row in set (0.00 sec)
mysql> select second(now()) ; //获取系统当前秒
+---------------+
| second(now()) |
+---------------+
| 34 |
+---------------+
1 row in set (0.00 sec)
mysql> select time(now()) ;//获取当前系统时间
+-------------+
| time(now()) |
+-------------+
| 17:47:36 |
+-------------+
1 row in set (0.00 sec)
mysql> select date(now()) ; //获取当前系统日期
+-------------+
| date(now()) |
+-------------+
| 2023-05-24 |
+-------------+
1 row in set (0.00 sec)
mysql> select curdate();//获取当前系统日志
+------------+
| curdate() |
+------------+
| 2023-05-24 |
+------------+
1 row in set (0.00 sec)
mysql> select dayofmonth(curdate());//获取一个月的第几天
+-----------------------+
| dayofmonth(curdate()) |
+-----------------------+
| 24 |
+-----------------------+
1 row in set (0.00 sec)
mysql> select dayofyear(curdate());//获取一年中的第几天
+----------------------+
| dayofyear(curdate()) |
+----------------------+
| 144 |
+----------------------+
1 row in set (0.00 sec)
mysql>
mysql> select monthname(curdate());//获取月份名
+----------------------+
| monthname(curdate()) |
+----------------------+
| May |
+----------------------+
1 row in set (0.00 sec)
mysql> select dayname(curdate());//获取星期名
+--------------------+
| dayname(curdate()) |
+--------------------+
| Wednesday |
+--------------------+
1 row in set (0.00 sec)
mysql> select quarter(curdate());//获取一年中的第几季度
+--------------------+
| quarter(curdate()) |
+--------------------+
| 2 |
+--------------------+
1 row in set (0.00 sec)
mysql> select week(now());//一年中的第几周
+-------------+
| week(now()) |
+-------------+
| 21 |
+-------------+
1 row in set (0.00 sec)
mysql> select weekday(now());//一周中的周几
+----------------+
| weekday(now()) |
+----------------+
| 2 |
+----------------+
1 row in set (0.00 sec)
#4.聚合函数
#求和函数sum
mysql> select sum(basic) from salary where employee_id=3 and year(date)=2018;
+------------+
| sum(basic) |
+------------+
| 111595 |
+------------+
1 row in set (0.00 sec)
#avg(表头名) 计算平均值
mysql> select avg(basic) from salary where employee_id=3 and year(date)=2018;
+------------+
| avg(basic) |
+------------+
| 9299.5833 |
+------------+
1 row in set (0.00 sec)
#min(表头名) 获取最小值
mysql> select min(basic) from salary where employee_id=3 and year(date)=2018;
+------------+
| min(basic) |
+------------+
| 9261 |
+------------+
1 row in set (0.00 sec)
#max(表头名) 获取最大值
mysql> select max(basic) from salary where employee_id=3 and year(date)=2018;
+------------+
| max(basic) |
+------------+
| 9724 |
+------------+
1 row in set (0.00 sec)
#count(表头名) 统计表头值个数----统计3号员工2018年奖金小于3000的次数
mysql> select count(bonus) from salary where employee_id=3 and year(date)=2018 and bonus<3000;
+--------------+
| count(bonus) |
+--------------+
| 3 |
+--------------+
1 row in set (0.00 sec)
#5.数学计算
![数学计算](https://img-blog.csdnimg.cn/3f38703a72b14b3fa23de4c7dbdec92c.png)
#输出8号员工2019年1月10工资总和
mysql> select employee_id ,date , basic + bonus as 总工资 from salary
where employee_id = 8 and date=20190110;
+-------------+------------+----------------+
| employee_id | date | 总工资 |
+-------------+------------+----------------+
| 8 | 2019-01-10 | 24093 |
+-------------+------------+----------------+
#输出8号员工的名字和年龄
mysql> select name,year(now())-year(birth_date) as 年龄 from employees where employee_id=8;
+--------+--------+
| name | 年龄 |
+--------+--------+
| 汪云 | 30 |
+--------+--------+
1 row in set (0.00 sec)
#查看8号员工2019年1月10 基本工资翻3倍的值
mysql> select employee_id , basic , basic * 3 as 工资翻三倍 from salary
where employee_id=8 and date=20190110;
+-------------+-------+-----------------+
| employee_id | basic | 工资翻三倍 |
+-------------+-------+-----------------+
| 8 | 23093 | 69279 |
+-------------+-------+-----------------+
1 row in set (0.00 sec)
#输出员工编号1-10之间偶数员工编号及对应的员工名
mysql> select employee_id , name from tarena.employees
where employee_id between 1 and 10 and employee_id % 2 = 0 ;
+-------------+-----------+
| employee_id | name |
+-------------+-----------+
| 2 | 郭岩 |
| 4 | 张健 |
| 6 | 牛建军 |
| 8 | 汪云 |
| 10 | 郭娟 |
+-------------+-----------+
5 rows in set (0.00 sec)
#6.if函数
if(条件,v1,v2) 如果条件是TRUE则返回v1,否则返回v2
ifnull(v1,v2) 如果v1不为NULL,则返回v1,否则返回v2
mysql> select if(1 = 2 , "a","b");
+---------------------+
| if(1 = 2 , "a","b") |
+---------------------+
| b |
+---------------------+
1 row in set (0.00 sec)
mysql> select if( 1 = 1 , "a","b");
+---------------------+
| if(1 = 1 , "a","b") |
+---------------------+
| a |
+---------------------+
1 row in set (0.00 sec)mysql> select ifnull("abc","xxx");
+---------------------+
| ifnull("abc","xxx") |
+---------------------+
| abc |
+---------------------+
1 row in set (0.00 sec)
mysql> select ifnull(null,"xxx");
+--------------------+
| ifnull(null,"xxx") |
+--------------------+
| xxx |
+--------------------+
1 row in set (0.00 sec)
mysql> select name , uid ,
#cold_boldif(uid < 1000 , "系统用户","创建用户") as 用户类型 from tarena.user;
+-----------------+-------+--------------+
| name | uid | 用户类型 |
+-----------------+-------+--------------+
| root | 0 | 系统用户 |
| bin | 1 | 系统用户 |
| daemon | 2 | 系统用户 |
| adm | 3 | 系统用户 |
| lp | 4 | 系统用户 |
| sync | 5 | 系统用户 |
...
+-----------------+-------+--------------+
27 rows in set (0.00 sec)
mysql> select name , shell ,
#cold_boldif(shell = "/bin/bash" , "交互用户","非交户用户") as 用户类型 from tarena.user;
+-----------------+----------------+-----------------+
| name | shell | 用户类型 |
+-----------------+----------------+-----------------+
| root | /bin/bash | 交互用户 |
| bin | /sbin/nologin | 非交户用户 |
| daemon | /sbin/nologin | 非交户用户 |
| adm | /sbin/nologin | 非交户用户 |
| lp | /sbin/nologin | 非交户用户 |
| sync | /bin/sync | 非交户用户 |
| shutdown | /sbin/shutdown | 非交户用户 |
...
+-----------------+----------------+-----------------+
27 rows in set (0.00 sec)mysql> insert into user (name, homedir) values ("jerrya",null);
mysql> select name 姓名, ifnull(homedir,"NO home")as 家目录 from tarena.user;
+-----------------+--------------------+
| 姓名 | 家目录 |
+-----------------+--------------------+
| root | /root |
| bin | /bin |
| daemon | /sbin |
...
| apache | /usr/share/httpd |
| mysql | /var/lib/mysql |
| bob | NO home |
| jerrya | NO home |
+-----------------+--------------------+
28 rows in set (0.00 sec)
#7.case函数
命令格式
CASE 表头名
WHEN 值1 THEN 输出结果
WHEN 值2 THEN 输出结果
WHEN 值3 THEN 输出结果
ELSE 输出结果
END
或
CASE
WHEN 判断条件1 THEN 输出结果
WHEN 判断条件2 THEN 输出结果
WHEN 判断条件3 THEN 输出结果
ELSE 输出结果
END
mysql> select * from tarena.departments;
+---------+-----------+
| dept_id | dept_name |
+---------+-----------+
| 1 | 人事部 |
| 2 | 财务部 |
| 3 | 运维部 |
| 4 | 开发部 |
| 5 | 测试部 |
| 6 | 市场部 |
| 7 | 销售部 |
| 8 | 法务部 |
+---------+-----------+
8 rows in set (0.03 sec)
//输出部门类型
select dept_id, dept_name,
case dept_name
when '运维部' then '技术部门'
when '开发部' then '技术部门'
when '测试部' then '技术部门'
else '非技术部门'
end as 部门类型 from tarena.departments;
+---------+-----------+-----------------+
| dept_id | dept_name | 部门类型 |
+---------+-----------+-----------------+
| 1 | 人事部 | 非技术部门 |
| 2 | 财务部 | 非技术部门 |
| 3 | 运维部 | 技术部门 |
| 4 | 开发部 | 技术部门 |
| 5 | 测试部 | 技术部门 |
| 6 | 市场部 | 非技术部门 |
| 7 | 销售部 | 非技术部门 |
| 8 | 法务部 | 非技术部门 |
+---------+-----------+-----------------+
8 rows in set (0.00 sec)
或
mysql> select dept_id,dept_name,-> case-> when dept_name="运维部" then "技术部"-> when dept_name="开发部" then "技术部"-> when dept_name="测试部" then "技术部"-> else "非技术部"-> end as 部门类型 from tarena.departments;
+---------+-----------+--------------+
| dept_id | dept_name | 部门类型 |
+---------+-----------+--------------+
| 1 | 人事部 | 非技术部 |
| 2 | 财务部 | 非技术部 |
| 3 | 运维部 | 技术部 |
| 4 | 开发部 | 技术部 |
| 5 | 测试部 | 技术部 |
| 6 | 市场部 | 非技术部 |
| 7 | 销售部 | 非技术部 |
| 8 | 法务部 | 非技术部 |
+---------+-----------+--------------+
8 rows in set (0.00 sec)
或
mysql> select dept_id,dept_name,-> case-> when dept_name in ("运维部","开发部","测试部") then "技术部"-> else "非技术部"-> end as 部门类型 from tarena.departments;
+---------+-----------+--------------+
| dept_id | dept_name | 部门类型 |
+---------+-----------+--------------+
| 1 | 人事部 | 非技术部 |
| 2 | 财务部 | 非技术部 |
| 3 | 运维部 | 技术部 |
| 4 | 开发部 | 技术部 |
| 5 | 测试部 | 技术部 |
| 6 | 市场部 | 非技术部 |
| 7 | 销售部 | 非技术部 |
| 8 | 法务部 | 非技术部 |
+---------+-----------+--------------+
8 rows in set (0.00 sec)
2:查询结果处理
- 分组
- 排序
- 过滤
- 分页
语法格式
SELECT 表头名 FROM 库名.表名 [WHERE条件] 分组 | 排序 | 过滤 | 分页;
#1.分组练习
#输出符合条件的shell和name
mysql> select shell as 解释器,count(name) as 总人数 from user where shell in ("/bin/bash","/sbin/nologin") group by shell;
+---------------+-----------+
| 解释器 | 总人数 |
+---------------+-----------+
| /bin/bash | 2 |
| /sbin/nologin | 20 |
+---------------+-----------+
2 rows in set (0.00 sec)
#统计每个部门的总人数
mysql> select dept_name, emp.dept_id,count(name) from employees emp,departments dep where emp.dept_id=dep.dept_id group by emp.dept_id;
+-----------+---------+-------------+
| dept_name | dept_id | count(name) |
+-----------+---------+-------------+
| 人事部 | 1 | 8 |
| 财务部 | 2 | 5 |
| 运维部 | 3 | 6 |
| 开发部 | 4 | 55 |
| 测试部 | 5 | 12 |
| 市场部 | 6 | 9 |
| 销售部 | 7 | 35 |
| 法务部 | 8 | 3 |
+-----------+---------+-------------+
8 rows in set (0.00 sec)
#2.排序
#按uid升序排序
mysql> select name,uid from user where uid is not null and uid between 100 and 1000 order by uid;
+-----------------+------+
| name | uid |
+-----------------+------+
| haproxy | 188 |
| systemd-network | 192 |
| chrony | 998 |
| polkitd | 999 |
| plj | 1000 |
+-----------------+------+
5 rows in set (0.00 sec)
#按uid降序排序
mysql> select name,uid from user where uid is not null and uid between 100 and 1000 order by uid desc;
+-----------------+------+
| name | uid |
+-----------------+------+
| plj | 1000 |
| polkitd | 999 |
| chrony | 998 |
| systemd-network | 192 |
| haproxy | 188 |
+-----------------+------+
5 rows in set (0.00 sec)
#查看2015年1月10号员工编号小于10的工资总额
mysql> select *,basic+bonus as 工资总额 from salary where employee_id<10 and date='20150110';
+----+------------+-------------+-------+-------+--------------+
| id | date | employee_id | basic | bonus | 工资总额 |
+----+------------+-------------+-------+-------+--------------+
| 2 | 2015-01-10 | 2 | 17000 | 10000 | 27000 |
| 3 | 2015-01-10 | 3 | 8000 | 2000 | 10000 |
| 4 | 2015-01-10 | 4 | 14000 | 9000 | 23000 |
| 6 | 2015-01-10 | 6 | 14000 | 10000 | 24000 |
| 7 | 2015-01-10 | 7 | 19000 | 10000 | 29000 |
+----+------------+-------------+-------+-------+--------------+
5 rows in set (0.00 sec)
#以工资总额升序排,总额相同按员工编号升序排
mysql> select *,basic+bonus as total from salary where date=20150110 and employee_id<10 order by total,employee_id;
+----+------------+-------------+-------+-------+-------+
| id | date | employee_id | basic | bonus | total |
+----+------------+-------------+-------+-------+-------+
| 3 | 2015-01-10 | 3 | 8000 | 2000 | 10000 |
| 4 | 2015-01-10 | 4 | 14000 | 9000 | 23000 |
| 6 | 2015-01-10 | 6 | 14000 | 10000 | 24000 |
| 2 | 2015-01-10 | 2 | 17000 | 10000 | 27000 |
| 7 | 2015-01-10 | 7 | 19000 | 10000 | 29000 |
+----+------------+-------------+-------+-------+-------+
5 rows in set (0.00 sec)
#3.过滤
#查找到的数据里过滤符合条件的数据
select 表头名 from 库.表 where 筛选条件 having 筛选条件;
#查找部门总人数少于10人的部门名称及人数
mysql> select dept_id,count(name) as total from employees emp group by dept_id having total<10;
+---------+-------+
| dept_id | total |
+---------+-------+
| 1 | 8 |
| 2 | 5 |
| 3 | 6 |
| 6 | 9 |
| 8 | 3 |
+---------+-------+
5 rows in set (0.00 sec)
mysql> select dep.dept_name,count(name) as total from employees emp,departments dep where dep.dept_id = emp.dept_id group by dep.dept_id having total<10;
+-----------+-------+
| dept_name | total |
+-----------+-------+
| 人事部 | 8 |
| 财务部 | 5 |
| 运维部 | 6 |
| 市场部 | 9 |
| 法务部 | 3 |
+-----------+-------+
5 rows in set (0.00 sec)
#4.分页
#限制查询结果显示行数(默认显示全部查询结果)
#使用SELECT查询时,如果结果集数据量很大,比如1万行数据,放在一个页面显示的话数据量太大,可以分100次显示 每次只显示100行。
#语法
SELECT语句 LIMIT 数字; //显示查询结果前多少条记录
SELECT语句 LIMIT 数字1,数字2; //显示指定范围内的查询记录
数字1 表示起始行 (0表示第1行) 数字2表示总行数#只显示查询结果的第1行
mysql> select * from user where shell is not null limit 1;
+----+------+----------+------+------+---------+---------+-----------+
| id | name | password | uid | gid | comment | homedir | shell |
+----+------+----------+------+------+---------+---------+-----------+
| 1 | root | x | 0 | 0 | root | /root | /bin/bash |
+----+------+----------+------+------+---------+---------+-----------+
1 row in set (0.00 sec)
#只显示查询结果的前3行
mysql> select * from user where shell is not null limit 3;
+----+--------+----------+------+------+---------+---------+---------------+
| id | name | password | uid | gid | comment | homedir | shell |
+----+--------+----------+------+------+---------+---------+---------------+
| 1 | root | x | 0 | 0 | root | /root | /bin/bash |
| 2 | bin | x | 1 | 1 | bin | /bin | /sbin/nologin |
| 3 | daemon | x | 2 | 2 | daemon | /sbin | /sbin/nologin |
+----+--------+----------+------+------+---------+---------+---------------+
3 rows in set (0.00 sec)
#从查询结果的第3行
mysql> mysql> select * from user where shell is not null limit 3,4;
+----+----------+----------+------+------+----------+----------------+----------------+
| id | name | password | uid | gid | comment | homedir | shell |
+----+----------+----------+------+------+----------+----------------+----------------+
| 4 | adm | x | 3 | 4 | adm | /var/adm | /sbin/nologin |
| 5 | lp | x | 4 | 7 | lp | /var/spool/lpd | /sbin/nologin |
| 6 | sync | x | 5 | 0 | sync | /sbin | /bin/sync |
| 7 | shutdown | x | 6 | 0 | shutdown | /sbin | /sbin/shutdown |
+----+----------+----------+------+------+----------+----------------+----------------+
4 rows in set (0.00 sec)
#查看uid 号最大的用户名和UID
mysql> select name,uid from user order by uid desc limit 1;
+-----------+-------+
| name | uid |
+-----------+-------+
| nfsnobody | 65534 |
+-----------+-------+
1 row in set (0.00 sec)
3:管理表记录
- 插入表记录
- 修改表记录
- 删除表记录#插入1条记录
mysql> insert into user values(40,"jingyaya","x",1001,1001,"teacher","/home/jingyaya","/bin/bash");
Query OK, 1 row affected (0.05 sec)
#查看表记录
mysql> select * from tarena.user where name="jingyaya";
+----+----------+----------+------+------+---------+----------------+-----------+
| id | name | password | uid | gid | comment | homedir | shell |
+----+----------+----------+------+------+---------+----------------+-----------+
| 40 | jingyaya | x | 1001 | 1001 | teacher | /home/jingyaya | /bin/bash |
+----+----------+----------+------+------+---------+----------------+-----------+
1 row in set (0.00 sec)
#插入多行记录给所有列赋值
insert into tarena.user values
(41,"jingyaya2","x",1002,1002,"teacher","/home/jingyaya2","/bin/bash"),
(42,"jingyaya3","x",1003,1003,"teacher","/home/jingyaya3","/bin/bash");#插入1行给指定列赋值,必须写列名,没赋值的列 没有数据 后通过设置的默认值赋值
mysql> insert into tarena.user(name,uid,shell)values("benben",1002,"/sbin/nologin");
#插入多行给指定列赋值,必须写列名,没赋值的列 没有数据 后通过设置的默认值赋值
mysql> insert into tarena.user(name,uid,shell)values("benben2",1002,"/sbin/nologin"),("benben3",1003,"/sbin/nologin");
#查看记录
mysql> select * from tarena.user where name like "benben%";
+----+---------+----------+------+------+---------+---------+---------------+
| id | name | password | uid | gid | comment | homedir | shell |
+----+---------+----------+------+------+---------+---------+---------------+
| 41 | benben | NULL | 1002 | NULL | NULL | NULL | /sbin/nologin |
| 42 | benben2 | NULL | 1002 | NULL | NULL | NULL | /sbin/nologin |
| 43 | benben3 | NULL | 1003 | NULL | NULL | NULL | /sbin/nologin |
+----+---------+----------+------+------+---------+---------+---------------+
3 rows in set (0.00 sec)#2.修改表记录
mysql> update tarena.user set comment=NULL where id <= 10 ;
Query OK, 10 rows affected (0.09 sec)
Rows matched: 10 Changed: 10 Warnings: 0
//修改后查看
mysql> select name , comment from tarena.user where id <= 10 ;
+----------+---------+
| name | comment |
+----------+---------+
| root | NULL |
| bin | NULL |
| daemon | NULL |
...
| shutdown | NULL |
| halt | NULL |
| mail | NULL |
| operator | NULL |
+----------+---------+
10 rows in set (0.00 sec) [root@localhost ~]#
//修改前查看
mysql> select name , homedir from tarena.user;
+------------------+--------------------+
| name | homedir |
+------------------+--------------------+
| root | /root |
| bin | /bin |
| daemon | /sbin |
| adm | /var/adm |
...
| plj | /home/plj |
| apache | /usr/share/httpd |
| mysql | /var/lib/mysql |
| bob | NULL |
| jerrya | NULL |
| jingyaya | /home/jingyaya |
| benben | NULL |
| benben2 | NULL |
| benben3 | NULL |
| mysql.infoschema | NULL |
| mysql.session | NULL |
| mysql.sys | NULL |
| root | NULL |
+------------------+--------------------+
36 rows in set (0.00 sec)
//不加条件批量修改
mysql> update tarena.user set homedir="/student" ;
Query OK, 36 rows affected (0.09 sec)
Rows matched: 36 Changed: 36 Warnings: 0
//修改后查看
mysql> select name , homedir from tarena.user;
+------------------+----------+
| name | homedir |
+------------------+----------+
| root | /student |
| bin | /student |
| daemon | /student |
| adm | /student |
| lp | /student |
| sync | /student |
| shutdown | /student |
| halt | /student |
...
| mysql.sys | /student |
| root | /student |
+------------------+----------+
36 rows in set (0.00 sec)
#3.删除表记录
//仅删除与条件匹配的行
mysql> delete from tarena.user where id <= 10 ;
Query OK, 10 rows affected (0.06 sec)
//查不到符合条件的记录了
mysql> select * from tarena.user where id <= 10 ;
Empty set (0.00 sec)
相关文章:
Linux学习--MySQL学习之查询语句
所有实现基于mysql8.0.26实现,事例代码 1:常用函数 字符函数数学函数日期函数聚集函数数学计算if函数case函数 函数:MySQL服务内置命令 语法:函数名(表头名) select格式 SELECT 函数(表头名) FROM 库名.表名; SE…...
三、视频设备的枚举以及插拔检测
一、前言 本章主要讲述,如何获取设备名称以及guid,采集设备的采集格式识别,设备的插拔 设备列表以及属性的获取使用的directshow(后续的MediaFoundation无法获取OBS摄像头) 设备的插拔使用的是QT 捕获系统消息,捕获到设备插拔后&a…...
Qt开发_调用OpenCV(4.x)完成人脸检测并绘制马赛克(摄像头实时数据)
一、前言 这个基于Qt和OpenCV的人脸检测和人脸打码项目是通过实时视频流中的人脸识别来保护隐私。 该项目目的是保护隐私并确保人脸数据安全。在某些情况下,使用实时视频流进行人脸检测和识别可能涉及对个人隐私的侵犯。通过在图像中打码人脸区域,可以避免未经许可的人脸出…...
ssl证书有效期为什么越来越短?
随着互联网的发展和网络安全意识的提升,SSL证书在保护网络通信安全方面起到了极为重要的作用。SSL证书通过加密通信数据,确保信息在传输过程中不被窃取或篡改,为用户提供了安全可靠的网络环境。然而,近年来SSL证书的有效期不断缩短…...
XFF漏洞利用([SWPUCTF 2021 新赛]Do_you_know_http)
原理 常见的存在HTTP头注入的参数 User-Agent:使得服务器能够识别客户使用的操作系统,浏览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中) Cookie:网站为了辨别用户身份进行se…...
Java——》JVM对原生的锁做了哪些优化
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...
华为云云耀云服务器L实例评测|用docker搭建frp服务测试
华为云云耀云服务器L实例评测|用docker搭建frp服务测试 0. 环境 华为云耀云L实例EulerOS 1. 安装docker 检查yum源,本EulerOS的源在这里: cd /etc/yum.repos.d 更新源 yum makecache 安装 yum install -y docker-engine 运行测试 d…...
群狼调研(长沙满意度调查专业公司)开展公交车乘客满意度调查
在城市的喧嚣中,公交车是我们日常出行的重要工具。那么,公交车的服务是否满足我们的期待?它还有哪些改进的空间?在这篇文章中,群狼调研**(长沙汽车制造商满意度调查)**通过一个深入的公交车乘客满意度调查,为您解答这些问题。 …...
Spring与OAuth2:实现第三方认证和授权的最佳实践
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
Mysql的定时备份与恢复
MySQL定时备份与还原 MySQL备份方案 物理备份:这种备份方式将数据库的实际文件复制到另一个位置。常见的物理备份工具包括mysqldump和Percona XtraBackup。具体操作如下: 使用mysqldump 命令备份数据库: mysqldump -u username -p database_…...
学习Java基础面试题第五天
一、Java面试题第五天 1.spring字符串的最大长度 转自:String字符串的最大长度是多少?在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据类型的取值范围,但是对于 String 类型我们好像很少注意它的…...
(10)(10.9) 术语表(一)
文章目录 前言 1 2.4Ghz 2 AGL 3 AHRS 4 APM 5 AMA 6 Arduino 7 APM (AutoPilot Mega) 8 ATC 9 Copter 10 Plane 11 Rover 12 BEC 13 Bootloader 14 COA 15 DCM 16 Eagle file 17 ESC 18 Firmware 19 FPV 20 FTDI 前言 !Note 术语表未编入索…...
面试(类加载器)
一、目标 类加载器(ClassLoader)是Java虚拟机(JVM)的一部分,用于加载Java类文件到内存中,并生成对应的Class对象。类加载器负责在运行时查找和加载类文件,为Java程序提供动态加载和运行时扩展的…...
二维差分---基础算法
书接上回 a二维数组是b二维数组的前缀和数组,b二维数组是a二维数组的差分数组,也就是说a[i][j]b[1][1]b[1][2] ......b[i][1] b[i][2] ...... b[i][j] ,下图是b的二维数组 如图,当你想要整个矩阵中的一个子矩阵都加上一个C,如果我们将b[x1][x2]加上C,那么a数组右下角所有的…...
C++之结构体智能指针shared_ptr实例(一百九十四)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
初出茅庐的小李博客之根据编译时间生成软件版本号
为什么要软件版本号呢? 生成软件版本号是在软件开发和维护过程中非常重要的一项任务,它有很多意义和好处,同时也有多种常见的方法。 标识和追踪:软件版本号是唯一的标识符,用于区分不同版本的软件。这有助于开发人员和…...
“投资教父”熊晓鸽老了,IDG光环不再
作者 | 鸠白 艺馨 排版 | Cathy 监制 | Yoda 出品 | 不二研究 2017年,世界互联网大会上,“投资教父”熊晓鸽问映客的创始人:“今年你们利润能有多少?” 对方笑答:“5个亿吧!” “才五个亿?…...
XEX智能交易所:加密货币衍生品杠杆、期货和期权简介
加密货币衍生品杠杆、期货和期权简介 加密货币衍生品是指通过基于区块链技术的交易平台进行交易的各种金融工具。与传统金融衍生品类似,加密货币衍生品的交易方式是基于预测未来市场价格变动的套利策略。接下来将具体介绍不同类型的加密货币衍生品以及风险。 加密…...
记录第一次带后端团队
在过去的一个半月里我第一次作为后端开发组长角色参与公司项目从0到1的开发,记录这一次开发的经历。 1、背景介绍 首先说明一下背景。我所在的公司是做智慧社区相关业务,开发的项目是系统升级工具,方便公司实施同事安装和升级系统。 参与后…...
Python文件操作(02):读文件
一、读文本文件 打开文件读文件内容关闭文件 1、在读取文件内容后进行解码操作 """ 1. 打开文件- 路径:相对路径:当前项目(读文件.py)所在的目录下查找需要读取的文件绝对路径:文件--右键--Copy Pat…...
Flink(java版)
watermark 时间语义和 watermark 注意:数据进入flink的时间:如果用这个作为时间语义就不存在问题,但是开发中往往会用处理时间 作为时间语义这里就需要考虑延时的问题。 如上图,数据从kafka中获取出来,从多个分区中获取…...
什么是动态组件以及使用场景
文章目录 一、vue中的动态组件是什么?有什么用?二、使用demo1.tab页签中的使用2.模拟新闻页demo 三、用keep-alive包裹,保持状态总结 一、vue中的动态组件是什么?有什么用? 动态组件指可以动态切换组件的显示和隐藏。…...
CRM销售管理系统如何提高销售效率
CRM销售管理系统是帮助企业对销售活动进行管理、执行和优化的软件系统。它可以帮助企业提高销售效率,提高客户转化率,实现企业的业绩增长。那么,CRM销售管理系统好用吗? CRM销售管理系统的功能 线索管理: CRM系统可…...
纯小白安卓刷机1
文章目录 常见的英文意思刷机是什么?为什么要刷机?什么是BL锁(BootLoader锁)?我的机能够刷机吗?什么是Boot镜像/分区?什么是Recovery镜像/分区(缩写为rec)?什…...
C高级day4循环语句
1,思维导图 运行结果为: 运行结果为:...
Linux 操作系统云服务器安装部署 Tomcat 服务器详细教程
Tomcat 基本概述 Tomcat 服务器是Apache软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。它是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用…...
【易盾点选】
拿官网的点选做个例子吧,比较省事,水一篇~ 官网的接口目前都改成V3了,多了个dt参数,以及加密的一个函数也变动了下 点选坐标在这,加密函数未变,用逗号拼接 整个加密里的函数变了,直接重新…...
vue中打印指定dom元素
和window.print()效果一样,调出打印窗口,只是当前使用的插件是vue-print-nb 官网地址:vue-print-nb vue2中使用 安装插件 npm install vue-print-nb --save导入插件 import Print from vue-print-nb // 全局使用 Vue.use(Print);//or// 单…...
OpenCV(三十六):霍夫直线检测
1.检测直线的霍夫变换原理 2.检测直线函数HoughLines() 检测直线流程: Step1:将参数空间的坐标轴离散化。 Step2:将图像中每个非0像素通过映射关系求取在参数空间通过的方格 Step3:统计参数空间内每个方格出现的次数,选取次数大于某一值的方格作为表示直线的方格…...
文心一言 VS 讯飞星火 VS chatgpt (91)-- 算法导论8.3 4题
四、用go语言,说明如何在 O(n) 时间内,对 0 到 n 3 − 1 n^3-1 n3−1 区间内的n个整数进行排序。 文心一言: 在 O(n) 时间内对 0 到 n^3-1 区间内的 n 个整数进行排序,可以使用基数排序(Radix Sort)算法…...
网站建设教程学校/凡科建站教程
使用exists函数和嵌套子查询,在大多数情况下使用exists函数而不是使用IN函数(子结果很大用exists,很小用in)。使用/*materialize*/with as 物化部分查询,避免展开产生误差执行计划。巧用分析函数,较少表的访…...
深圳网站建设号/网站推广方法
jquery视频播放器jQuery演示代码段可将QuickTime视频播放器动态插入您的网页。 这是带有最少控件的原始视频播放,如果要自定义,可以非常容易地在播放器对象中设置参数。 要使用该代码,请记住更改视频的网址,并且您需要一个id为“ …...
网站建设 千佳网络/阿里云域名查询和注册
题目链接 AtCoder:https://agc010.contest.atcoder.jp/tasks/agc010_c 洛谷:https://www.luogu.org/problemnew/show/AT2304 Solution 窝yy了好久的dpQAQ 标算很巧妙:我们考虑算每条边被经过了多少次,这里把一个叶子节点到另一个叶…...
中国最大网站建设公司/最近的热点新闻
一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的。会提示缺少……库文件之类的错误。这就是动态编译的结果。但是如果我们想编译一个程序,这个程序在发给别人后,…...
幼儿园网站如何建设/互联网营销师培训教程
Mybatis plus中使用in查询出错如何解决,参数,解决方法,代码,语句,这段Mybatis plus中使用in查询出错如何解决易采站长站,站长之家为您整理了Mybatis plus中使用in查询出错如何解决的相关内容。不想看我bb的直接点上面的 ‘解决方法‘我的情况是这样的,在…...
linode wordpress 教程/国内新闻最新
Linux系统下可以直接复制SQL语句进行导入,但是这个方法容易出现导入失败的现象,我们可以直接导入sql文件,可以大大提高成功率。在导入sql文件前,先说一下MySQL的常用命令。MySQL的登陆与退出登陆MySQL:mysql -u用户名 …...