进入mysql后,使用help列出的是客户端的命令,使用help contents列出服务端命令
SQL语句分类(DDL DML DQL要记住)
前三个重要(DDL、DML、DQL、 DCL、TCL)
DDL:Data Defination Language 数据定义语言
CREATE, DROP, ALTER(对数据库、表、视图、索引进行创建、删除和更改的工具ALTER改格式)
DML:Data Manipulation Language 数据操纵语言
INSERT, DELETE, UPDATE(对数据库中的表中的内容进行增、删、改的工具UPDATE改数据)
DQL:Data Query Language 数据查询语言
SELECT(对数据库中的表进行查询的工具)
DCL:Data Control Language 数据控制语言
GRANT, REVOKE
TCL:Transaction Control Language事务控制语言
COMMIT, ROLLBACK, SAVEPOINT
字符集和排序
复习:如何查看linux系统使用的字符集
echo $LANG 查询结果为 en_US.UTF-8
早期MySQL版本默认字符集默认为Latin1,8.0版本开始默认为utf8mb4
查看MySQL支持的所有字符集
SHOW CHARACTER SET;
查看当前默认字符集
show variables like 'character%';
设置服务器默认字符集
vim /etc/my.cnf
[mysqld]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
改完重启服务systemctl restart mysqld-service
排序字符集规则:
查看支持所有排序规则:SHOW COLLATION;
查看当前使用的排序规则:SHOW VARIABLES LIKE 'COLLATION%';
管理数据库
创建数据库
HELP CREATE 可查看创建类型 创建的数据库放在 /var/lib/mysql下,可二进制安装指定
CREATE DATABASE (IF NOT EXISTS可省略,加上不提示错误)db1; 后可指定字符集和排序规则
show database IF NOT EXISTS db3 CHARACTER SET 'UTF8MD4' collate utf8_bin;
show warnings; 查看报警信息
show databases; 列出所有数据库列表
show create database db1; 查看当初创建数据库过程
修改数据库(一般很少,改字符集,而且只能由小改大,数据为空没事,可以改)
ALTER DATABASE DB_NAME character set utf8;
删除数据库
HELP DROP 查看drop帮助
如:drop database db1; 删除db1数据库
数据类型
MySQL支持多种内置数据类型(数值类型,日期/时间类型,字符串(字符)类型)
选择正确的数据类型对于获得高性能至关重要,三大原则:
- 更小的通常更好,尽量使用可正确存储数据的最小数据类型
- 简单就好,简单数据类型的操作通常需要更少的CPU周期
- 尽量避免NULL,包含为NULL的列,对MySQL更难优化
整数型:(m)预留宽度,左右对齐
tinyint (m) 1个字节,范围2^8 (-128-127) 加修饰符 unsigned后范围(0-255)
smallint (m)2个字节,范围2^16 (-32768~32767) 加修饰符 unsigned后范围(0-65535)
mediumint (m)3个字节,范围2^24
int (m)4个字节 ,范围2^32
bigint (m)8个字节,范围2^64
浮点型:(float和double) (m)预留宽度,左右对齐
浮点型为近似值,不精确,分为单精度和双精度
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位, 注意: 小数点不占用总个数 double(m,d) 双精度浮点型16位精度(8字节) m总个数,d小数位, 注意: 小数点不占用总个数
定点数:
在数据库中存放的是精确值,存为十进制
格式 decimal(m,d) 表示 最多 m 位数字,其中 d 个小数,小数点不算在长度内
比如:DECIMAL(6,2) 总共能存6位数字,末尾2位是小数,字段最大值 9999.99 (小数点不算在长度内)
字符串:其中(char,varchar,text)最常用
char(n) 固定长度,最多255个字符,注意不是字节 如果n是10个字符,只能写10个,多了删掉
varchar(n) 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
BINARY(M) 固定长度,可存二进制或字符,长度为0-M字节
VARBINARY(M) 可变长度,可存二进制或字符,允许长度为0-M字节
内建类型:ENUM枚举, SET集合
char和varchar的比较:
追求高性能用char,追求节省空间用varchar,如果你字符里面的数据大小都比较接近,用char比较好,如果字符里面的数据差距比较大,可以用varchar,节省空间。
char是固定长度、varchar是可变长度。
如,char(4)和varchar(4)比较,char是不管存入多少个字符,都将占用4个字节,varchar(4)是存入的实际字符数+1个字节,最多是4+1个字节。
问:VARCHAR(50)能存放几个UTF8编码的汉字?
存放的汉字个数与版本相关.
mysql 4.0以下版本,varchar(50) 指的是 50 字节,如果存放 UTF8 格式编码的汉字时(每个汉字3字节),只能存放16 个.
mysql 5.0以上版本,varchar(50) 指的是 50 字符,无论存放的是数字,字母还是 UTF8 编码的汉字, 都可以存放 50 个
修饰符
适用所有类型的修饰符:
NULL 数据列可包含NULL值,默认值
NOT NULL 数据列不允许包含NULL值,相当于网站注册表中的 * 为必填选项
DEFAULT 默认值
PRIMARY KEY 主键,所有记录中此字段的值不能重复,且不能为NULL
UNIQUE KEY 唯一键,所有记录中此字段的值不能重复,但可以为NULL
CHARACTER SET name 指定一个字符集
适用数值型的修饰符:
AUTO_INCREMENT 自动递增,适用于整数类型, 必须作用于某个 key 的字段,比如primary key UNSIGNED 无符号
练习:cat /root/.mysql_history 查看mysql历史命令
create database db1; 创建db1数据库
use db1; 进入db1数据库
create table t1(id int unsigned auto_increment primary key) auto_increment= 4294967294;创建t1表,id设置为int、无符号、自动递增、主键,起始值4294967294
show table status from db1 like "t1" \G查看db1数据库中t1的表状态
insert into t1 values(null)增加默认值
select * from t1 查询t1表
+------------+
| id |
+------------+
| 4294967294 |
+------------+
insert into t1 values(null)增加默认值
+------------+
| id |
+------------+
| 4294967294 |
+------------+
| 4294967295 |
+------------+
insert into t1 values(null)增加默认值
ERROR 1062 (23000): Duplicate entry '4294967295' for key 'ti.PRIMARY'
上面表的数据类型无法存放所有数据,修改过数据类型实现
alter table t1 modify id bigint auto_increment;修改表t1的数值范围类型
DDL语句CREATE, DROP, ALTER(创建、删除和更改的工具)
创建表
三种格式:第一种常用
1、直接创建create table 名字
2、借用其他表的查询结果创建新表create table 名字 as select * from 原表名
3、借用其他表的格式创建新表,内容不复制,只复制格式create table 名字 like 原表名
CREATE TABLE 创建表
CREATE TABLE [IF NOT EXISTSS] 'tbl_name (col1 typel修饰符,col2 type2 修饰符,)
Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎 同一库中不同表可以使用不同的存储引擎 同一个库中表建议要使用同一种存储引擎类型
切到数据库:
use db1;(数据库名字)
在数据库里创建表
CREATE TABLE student (
id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
age tinyint UNSIGNED,
#height DECIMAL(5,2),
gender ENUM('M','F') default 'M'
)ENGINE=InnoDB AUTO_INCREMENT=10;
#创建表名 student
#字段:id 数据类型:int 正数:UNSIGNED 自动增长:AUTO_INCREMENT 主键:PRIMARY KEY默认不能为空
#字段:name 字符串:VARCHAR(20) 不能为空:NOT NULL
#字段:age 数据类型:tinyint 正数:UNSIGNED (0-255之间)
#已注释掉,不生效
#字段:gender 枚举,多选一:ENUM('M','F') 默认default 'M'
#引擎:ENGINE=InnoDB默认值不用加 从10开始自动增长:AUTO_INCREMENT=10 默认字符集为utf8
查询表结构mysql> desc student;
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| age | tinyint unsigned | YES | | NULL | |
| gender | enum('M','F') | YES | | M | |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
列出所有表:show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| student |
| ti |
+---------------+
在学生表中添加小明和年龄
insert student (name,age)values('xiaoming',20);
Query OK, 1 row affected (0.01 sec)
(root@localhost) [db1]>select *from student;查看学生表内容
+----+----------+------+--------+
| id | name | age | gender |
+----+----------+------+--------+
| 10 | xiaoming | 20 | M |
+----+----------+------+--------+
1 row in set (0.00 sec)
创建新表,使用 lantin1字符集
创建teacher表
CREATE TABLE teacher (
id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
age tinyint UNSIGNED,
#height DECIMAL(5,2),
gender ENUM('M','F') default 'M'
)ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
插入内容:
mysql> insert teacher (name,age)values('xiaoming',20);
mysql> insert teacher (name,age)values('小红',18);
ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE7\xBA\xA2' for column 'name' at row 1
输入汉字会报错,所以不要乱换字符集
引用已经存在的表内容,创建新的表
引用student表,创建emp 表 as
=(root@localhost) [db1]>create table emp as select * from student;
查询
=(root@localhost) [db1]>show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| emp |
| student |
| teacher |
+---------------+
=(root@localhost) [db1]>select * from emp;
+----+----------+------+--------+
| id | name | age | gender |
+----+----------+------+--------+
| 10 | xiaoming | 20 | M |
| 11 | 小红 | 18 | M |
+----+----------+------+--------+
引用已经存在的表格式,创建新的表
create table custom like student;
desc custom;
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| age | tinyint unsigned | YES | | NULL | |
| gender | enum('M','F') | YES | | M | |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
表查看
查看本数据库表:SHOW TABLES;
查看某一数据库表:SHOW TABLES FROM 数据库名;
查看表创建命令:show create table 表名;
查看数据库、表结构:DESC [db_name.]tb_name;
查看当前库表状态:SHOW TABLE STATUS LIKE '表名'\G (数据垂直显示)
查看当前库所有表状态:SHOW TABLE STATUS\G
查看支持的engine类型(存储引擎):SHOW engines:
修改和删除表(表结构一般很少修改)
修改表(s1为表名)
修改表名:ALTER TABLE student s1;
添加字段:ALTER TABLE s1 ADD phone varchar(11) AFTER name;
在s1表中name的后面添加手机号码,字符长度为11
修改字段名称和类型:ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);
修改字段类型:ALTER TABLE s1 modify phone int;
删除字段:ALTER TABLE s1 DROP COLUMN mobile;
修改字符集:ALTER TABLE s1 character set utf8;
修改数据类型和字符集:ALTER TABLE s1 CHANGE name name varchar(20) character set utf8;
删除表:drop table 表名
删除数据库:drop database 数据库名
select @@innodb_file_per_table;可查看每张表是否是一个独立的文件,1是,0是在一个文件中
可在vim /etc/my.cnf中更改innodb_file_per_table=on|1
DML 语句(INSERT, DELETE, UPDATE对数据库中的表进行增、删、改的工具)
INSERT语句 增(insert into 表(字段) values(字段内容))
把windows的库文件拉到数据库中,两种方式
一:mysql < 文件
二:进入mysql中,source hellodb_innodb.sql
查看库:show databases;
进入库:use hellodb;
看库中的表:show tables;
看表中内容:select * from students;工作中慎用,表数据量太大,容易死机。
(重点掌握第一个方式,后两个方式了解一下)
方式一:insert into students values(26,'wangjingpeng',18,'M',1,null); #into可省略
在学生表中加入信息,并把每一个信息依次按照格式输入,字符串需要用''引起来
id设置格式为自动增长,如果不写26,后面信息必须对应好,如下所示:
insert into students (name,age,classid) values('caizong',20,2),('heqingzhu',18,2);
方式二:insert students set name='wanghao',age=22,gender='M';了解就可以
方式三:把另外一张表查询出来插到表中,其中老师表和学生表id冲突,不在取这个值,让他自动增长
insert students (name,age,gender) select name,age,gender from teachers;
UPDATE语句 改(update 表 set 内容)
修改caizong的年龄和性别,前边修改,后边指定修改位置,如不指定位置,就是修改全局
update students set age=21,gender='M' where name='caizong';
修改学生表teacherid为1,null不能用=号,用is连接
注意:一定要有限制条件,否则将修改所有行的指定字段 可利用mysql 选项避免此错误:
vim/etc/my.cnf
[mysql]
safe-updates
DELETE语句 删(删除表中数据,但不会自动缩减数据文件的大小)
删除学生表中的songjiang,注意指定位置,要不然会删除整个内容
delete from students where stuid=30;
DQL语句 SELECT(对数据库中的表进行查询的工具)单表多表查询最为重要
单表操作(查询):
order by正排序
order by () desc倒排序
group by分组 where要在分组前
limit取前值 limit 3,4跳过前三,往后取四个
挑出stuid,name,gender字段
select stuid,name,gender from students;
挑出stuid,name,gender字段中的女生
select stuid,name,gender from students where gender='F';
年龄小于等于20岁的
select stuid,name,age,gender from students where age <=20;
select stuid,name,gender,age from students where age between 18 and 20
年龄小于等于20岁,大于等于18岁的
select stuid,name,gender,age from students where age >=18 and age <=20;
以下操作都会显示出来
select stuid,name,gender,age from students where age >=18 or age <=20;
模糊查寻用like 查找Ren Yingying 其中%在mysql中代表通配符,表示任意字符串
select stuid,name,gender,age from students where name like 'Ren%';
模糊查询,如Xu Xian,其中有x包含在里面。可前后各一个%
select stuid,name,gender,age from students where name like '%x%';
把年龄重复的内容合并:select distinct age from students;
把合并后的年龄进行排序:select distinct age from students order by age;
把合并后的年龄从大到小排序:select distinct age from students order by age desc;
分组列出男女生的平均年龄:select gender,avg(age) from students group by gender;
where要在group by 之前,如果分组后再过滤的话,用having,如:
分组列出男女生平均年龄后再过滤出男生的平均年龄:
select gender,avg(age) from students group by gender having gender='M';
select gender,avg(age) from students where gender='M' group by gender;
select gender,avg(age) from students where gender='M';(不加也可以)
列出每个班级最大年龄的男女
select classid,gender,max(age) from students group by classid,gender;
多表操作(查询):
子查询:在SQL语句嵌套着查询语句,性能较差,基于某语句的查询结果再次进行的查询
如:学生表的年龄大于老师组平均年龄的人。
先查询老师表的平均年龄:select avg(age) from teachers;
学生表的年龄大于老师组平均年龄的人:
select * from students where age > (select avg(age) from teachers);
把孙大圣的年龄改成老师的平均年龄:
update students set age=(select avg(age) from teachers) where stuid=25;
联合查询:UNION(查询的内容可以不一样,但是列得一样多,分类排好查询)
对学生、老师表中的id、name、age进行联合查询
select stuid,name,age from students
-> union
-> select tid,name,age from teachers;
交叉连接:笛卡尔乘积 CROSS JOIN
表一有25个内容,表二有4个内容,表一的每条记录都与表二的每条记录组合,组合记录100条
如:select * from students cross join teachers;工作中不要随便用,数据太大。
内连接:INNER JOIN 取多个表的交集
查询学生表yeacherid和老师表中tid相同的
select * from students inner join teachers on students.teacherid=teachers.tid;
查询学生表yeacherid和老师表中tid相同的(只列出个表的id的name)
select stuid,students.name student_name,tid, teachers.name teacher_name from studentsdents inner join teachers on students.teacherid=teachers.tid;
+-------+--------------+-----+---------------+
| stuid | student_name | tid | teacher_name |
+-------+--------------+-----+---------------+
| 1 | Shi Zhongyu | 3 | Miejue Shitai |
| 4 | Ding Dian | 4 | Lin Chaoying |
| 5 | Yu Yutong | 1 | Song Jiang |
+-------+--------------+-----+---------------+
3 rows in set (0.00 sec)
列出stuid,学生名字段并对学生名的字段起别名,列出tid,老师名字段,并对老师名字段起别名
给表起别名:可缩写如下所示 查询结果如上所示
select stuid,s.name student_name,tid, t.name teacher_name from students s innerjoin teachers t on s.teacherid=t.tid;
左外连接:以左表为主根据条件查询右表数据﹐如果根据条件查询右表数据不存在使用null值填充(left join)
格式:from 表1 left join 表2 on 表1.col=表2.col
如:select * from students left join teachers on students.teacherid=teachers.tid;
右外连接:以右表为主根据条件查询左表数据﹐如果根据条件查询左表数据不存在使用null值填充(right join)
格式:from 表1 right join 表2 on 表1.col=表2.col
如:select * from students right join teachers on students.teacherid=teachers.tid;
右老师表只有四条记录,当学生表匹配老师表时,只有四条记录,有交集的列出,无交集的为null
完全外连接:(full outer join)但mysql不支持,换写法实现,左外连接加右外连接进行纵向连接
select * from students left join teachers on students.teacherid=teachers.tid
-> union
-> select * from students right join teachers on students.teacherid=teachers.tid;
格式:from 表1 full outer join 表2 on 表1.col=表2.col
去除交集的左外连接:就是在左外连接的基础上去掉带有交集的部分,为左外连接
如:查询学生表与老师表,条件为students.teacherid=teachers.tid,且去除这部分交集的内容
先查出学生表与老师表条件为students.teacherid=teachers.tid的左外连接
select * from students left join teachers on students.teacherid=teachers.tid;
在命令tid后接着打tid is null;就可以啦
去除交集的右外连接:就是在右外连接的基础上去掉带有交集的部分,为右外连接
去除内连接:去除交集的左外连接加去除交集的右外连接
自连接:本表和本表进行连接查询
>select * from emp;
+--------+----------+-----------+
| emp_id | name | leader_id |
+--------+----------+-----------+
| 1 | mage | NULL |
| 2 | zhangsir | 1 |
| 3 | wang | 1 |
| 4 | zhang | 3 |
| 5 | zhao | 2 |
+--------+----------+-----------+
5 rows in set (0.00 sec)
把一张表分为两张表来看,并对每张表进行别名。分为e表和l表进行查询
(root@localhost) [hellodb]>select * from emp e inner join emp l on e.leader_id=l.emp_id;
+--------+----------+-----------+--------+----------+-----------+
| emp_id | name | leader_id | emp_id | name | leader_id |
+--------+----------+-----------+--------+----------+-----------+
| 2 | zhangsir | 1 | 1 | mage | NULL |
| 3 | wang | 1 | 1 | mage | NULL |
| 4 | zhang | 3 | 3 | wang | 1 |
| 5 | zhao | 2 | 2 | zhangsir | 1 |
+--------+----------+-----------+--------+----------+-----------+
4 rows in set (0.01 sec)
对表的姓名进行查询,并区别开每张表的姓名
select e.name emp_name,l.name leader_name from emp e inner join emp l on e.leader_id=l.emp_id;
+----------+-------------+
| emp_name | leader_name |
+----------+-------------+
| zhangsir | mage |
| wang | mage |
| zhang | wang |
| zhao | zhangsir |
+----------+-------------+
mage没有了,把马哥显示出来,并把null改为无领导,用左外连接
select e.name emp_name,IFNULL(l.name,'WU SHANG JI') leader_name from emp e leftjoin emp l on e.leader_id=l.emp_id;
+----------+-------------+
| emp_name | leader_name |
+----------+-------------+
| mage | WU SHANG JI |
| zhangsir | mage |
| wang | mage |
| zhang | wang |
| zhao | zhangsir |
+----------+-------------+
如果是三张表,先查询两张表,然后根据两张表的结果再查询三张表,如果表中的字段唯一,可不写表名
SELECT 语句处理的顺序
以下内容为辅助功能,工作中不建议使用,性能比较慢
VIEW视图
视图:虚拟表,保存有实表的查询结果,相当于别名(如果一张表的查询结果经常使用,就可以定义成视图)
利用视图,可以隐藏表的真实结构,在程序中利用视图进行查询,可以避免表结构的变化,而修改程序,降低程序和数据库之间的耦合度
创建方法:create view 起名 as 查询结果的命令
调出结果:select * from 起的视图名
视图也是一张表,show tables;也可查看到视图表
查看表状态判断表是否是视图:show tables status\G 真的表都有存储引擎、大小等,视图都是空的。
只看一张表的信息:show tables status like '表名'\G
根据视图也可以更改原表的内容 update 表 set 内容
删除视图:drop view 视图名
select count(*) from students;查看列有多少条记录,count不识别null,所以不用每列的字段名表示
FUNCTION 函数(函数不能独立执行,必须嵌套在select中执行)
自定义函数:create function 函数名(参数) returns ,return 返回值
参数可以有多个,也可以没有参数
无论有无参数,小括号()是必须的
必须有且只有一个返回值
在mysql中,函数要想定义,不能开启二进制默认,select @@log_bin_trust_functon_creatos;查询为0
改为1:set global log_bin_trust_functon_creatos=1
如:无参数自定义函数
create function simpleFun() returns varchar(20) return "hello world";
select simpleFun()=hello world
比如调用函数改名字:update students set name=simpleFun() where stuid=22;
有参数的自定义函数并修改参数结束符
DELIMITER // (修改参数结束符命令+结束符号//,在看到;就不是结束符了)
CREATE FUNCTION addTwoNumber (x SMALLINT UNSIGNED, y SMALLINT UNSIGNED)数据类型,正数
RETURNS SMALLINT
BEGIN
DECLARE a, b SMALLINT UNSIGNED;
SET a=x,b=y;
RETURN a+b;
END//
DELIMITER ;
select addTwoNumber(1,2)对应里面的x和y
addTwoNumber(1,2)
3
addTwoNumber (x SMALLINT UNSIGNED, y SMALLINT UNSIGNED)定义函数用的参数叫形参
select addTwoNumber(1,2)真正执行用的参数,叫实参。
删除函数drop function 函数名
查看函数列表:show function status\G
PROCEDURE存储过程 (多表SQL的语句的集合,可以独立执行,存储过程保存在mysql.proc表中)
创建无参存储过程
DELIMITER //
CREATE PROCEDURE showtime()
BEGIN
SELECT now();
END//
delimiter;
CALL showtime; CALL 调用存储过程的命令
创建含参数的存储过程:只有一个IN参数
DELIMITER //
CREATE PROCEDURE selectbyid(IN id smallint unsigned)
BEGIN
select * from students where stuid=id;
end//
delimiter;
call selectbyid(2);学生为10号的信息
触发器(工作中不建议用)
Event事件(相当于计划任务)开启和关闭event_scheduler(不建议用)
默认事件调度功能是关闭的,MySQL8.0默认是开启的
查询状态:select @@event_scheduler;1、on为开,0、off为关
更改状态(开启):set global event_scheduler=1;
临时开启时间调度功能后,会自动启动一个event_schedule线程,可用show processlist;查看线程
持久开启:vim/etc/my.cnf.d/mariadb-server.cnf
[mesqld]
event_scheduler=ON
重启systemctl testart mariadb
创建周期化任务:(管理事件)
创建库 create database testdb;
use testdb;
database changed
创建一个表记录每次事件调度的名字和事件戳
create table evevts_list(event_name varchar(20) not null,event_started timestamp not null);
任务计划存放在mysql.event表中
查看select * from mysql.event\G
创建一个事件
create event event_every_second on schedule every 1 second do insert into events_list values('event_now', now());
查看事件:show events\G
标签:多表,name,students,age,数据类型,查询,MySQL,id,select
From: https://blog.51cto.com/mfc001/6243643