diff --git "a/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\344\275\234\344\270\232\344\270\255\347\232\204\351\227\256\351\242\230.md" "b/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\344\275\234\344\270\232\344\270\255\347\232\204\351\227\256\351\242\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..1d45537469c06af9efcdb70be3753934af5657d1 --- /dev/null +++ "b/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\344\275\234\344\270\232\344\270\255\347\232\204\351\227\256\351\242\230.md" @@ -0,0 +1,66 @@ +```sql +(CONCAT('user_', LPAD(FLOOR(RAND() * 90) + 10, 2, '0'))的含义 + +表达式 `(CONCAT('user_', LPAD(FLOOR(RAND() * 90) + 10, 2, '0'))` 的作用是生成一个随机的两位数用户名,格式为 `user_10` 到 `user_99`。让我们分解这个表达式来理解它是如何工作的: + +1. **`RAND()` 函数**: + - `RAND()` 函数生成一个0到1之间的随机小数(不包括1)。 +2. **`FLOOR(RAND() \* 90)`**: + - 将 `RAND()` 函数的结果乘以90,将可能的值的范围扩展到0到90之间(不包括90)。 + - `FLOOR()` 函数取小于或等于给定数字的最大整数,这将结果四舍五入到最近的整数,得到一个0到89之间的整数。 +3. **`FLOOR(RAND() \* 90) + 10`**: + - 将10加到 `FLOOR(RAND() * 90)` 的结果上,将范围从0到89向上移动到10到99。 +4. **`LPAD(FLOOR(RAND() \* 90) + 10, 2, '0')`**: + - `LPAD()` 函数用于在字符串的左侧填充字符,直到达到指定的长度。 + - 在这里,它将 `FLOOR(RAND() * 90) + 10` 的结果(一个介于10到99之间的整数)填充到左侧,使其成为一个两位数的字符串。如果数字不足两位数(即10到19),则在左侧补零,使其成为 `01` 到 `99` 的格式。 +5. **`CONCAT('user_', LPAD(FLOOR(RAND() \* 90) + 10, 2, '0'))`**: + - `CONCAT()` 函数用于连接字符串。 + - 在这里,它将 `'user_'` 字符串与 `LPAD()` 函数的结果连接起来,生成最终的用户名,如 `user_10` 到 `user_99`。 + +因此,整个表达式 `CONCAT('user_', LPAD(FLOOR(RAND() * 90) + 10, 2, '0'))` 生成一个格式为 `user_10` 到 `user_99` 的随机用户名。 + +例如: + +- 如果 `RAND()` 返回0.5,那么 `RAND() * 90` 将返回45。 +- `FLOOR(45)` 将返回45。 +- `45 + 10` 将返回55。 +- `LPAD(55, 2, '0')` 将返回 `55`(因为55已经是两位数)。 +- 最终,`CONCAT('user_', '55')` 将返回 `user_55`。 + +所以,最终结果是 `user_55`,这是一个随机生成的两位数用户名。 + + + + +``` + + + +```sql +建立索引(index) (length可加可不加){复合索引则是后面+(字段名1,字段名2)} + +create index +索引名字 + on table_name(字段名+(length)) + +建立唯一索引 + +create unique index +索引名字 + on table_name(字段名+(length)) + +查看是否有用到索引语句 + +explain + sql语句 + +(explain +select * from table_name +where +条件) + +删除索引 + +drop index 索引名字 on table_name; + +查看表格索引 + +show index from table_name + +复合查询 + +explain sql 语句(where 1字段名='' and 字段名2='') +``` + diff --git "a/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\345\256\214\346\210\220\344\275\234\344\270\232.md" "b/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\345\256\214\346\210\220\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..841d69baee799de30d29d8f6845fc0a9901ff6d5 --- /dev/null +++ "b/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\345\256\214\346\210\220\344\275\234\344\270\232.md" @@ -0,0 +1,53 @@ +```sql +-- 练习和作业 +-- 1.给emp分别建立 普通索引和唯一索引 +CREATE INDEX index_ename ON employee(ename(20)); +CREATE UNIQUE INDEX uindex_ename ON employee(ename(20)); + +-- 2.查询emp表有哪些索引 +show INDEX from employee; +-- 3. 使用有索引的字段进行查询,再查看这条语句是否使用到了索引。 +EXPLAIN SELECT * FROM employee WHERE ename='傅嘉熙'; +-- 4. 删除前面建立的两个索引 +drop INDEX index_ename on employee; +drop index uindex_ename on employee; +-- 5. 选择两个字段添加一个复合索引 +CREATE INDEX index_ename_dname ON employee(ename, dname); +-- 6. 使用复合索引的字段进行查询 +EXPLAIN SELECT * from employee WHERE ename='傅嘉熙' and dname='开发部'; +-- 作业 +-- 想办法用自己的电脑,生成500万行数据,id,uname,age 尽量随机,并记录时间。 +-- 1. 不用索引查询 一次姓名uname /并记录时间 +CREATE table nani( +id int PRIMARY key auto_increment, +uname VARCHAR(255), +age int +); +CREATE PROCEDURE yeah() +BEGIN +DECLARE i int DEFAULT 0 +while i <5000000 +do INSERT into nani(uname,age) +VALUES ((FLOOR(RAND() * 90) + 10,(FLOOR(RAND() * 90) + 10);) +set i=i+1; +end while ; +end +DELIMITER $$ + +CREATE PROCEDURE yeah() +BEGIN + DECLARE i INT DEFAULT 0; + WHILE i < 5000000 DO + INSERT INTO nani (uname, age) + VALUES (CONCAT('user_', LPAD(FLOOR(RAND() * 90) + 10, 2, '0')), FLOOR(RAND() * 90) + 10); + SET i = i + 1; + END WHILE; +END$$ + +DELIMITER ; +CALL yeah() +-- 2. 建立索引查询 一次姓名uname /并记录时间 + + +``` + diff --git "a/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\347\264\242\345\274\225\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" "b/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\347\264\242\345\274\225\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..071a053876c66ea0a6fa41f2afd1442646bafb23 --- /dev/null +++ "b/\345\215\242\346\257\224\344\274\246/20241018\347\264\242\345\274\225/\347\264\242\345\274\225\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" @@ -0,0 +1,17 @@ +```sql +-- 练习和作业 +-- 1.给emp分别建立 普通索引和唯一索引 +-- 2.查询emp表有哪些索引 +-- 3. 使用有索引的字段进行查询,再查看这条语句是否使用到了索引。 +-- 4. 删除前面建立的两个索引 +-- 5. 选择两个字段添加一个复合索引 +-- 6. 使用复合索引的字段进行查询 +-- 作业 +-- 想办法用自己的电脑,生成500万行数据,id,uname,age 尽量随机,并记录时间。 +-- 1. 不用索引查询 一次姓名uname /并记录时间 +-- 2. 建立索引查询 一次姓名uname /并记录时间 + +``` + + +