芯が強い人になるESTJ-A

# 2023更新mysql 我的常见手滑问题--[mysql相关知识串联]--【定期回顾】

IT開発 Tags: 无标签 阅读: 288

教程地址:视频
截屏2023-10-09 9.06.01.png
mysql8更新内容
截屏2023-03-07 19.43.29.jpg

[mysql登陆]
mysql -u=username,root, -p=password


查看已经新建完毕的建表语句:show create table tableName;
mysql -uroot -p

截屏2021-04-24 17.49.31.jpg
[退出]
exit

逻辑流程:先有库,再有表,最后操作数据
1库2表3数据

删库和删表都是DROP DATABASE+库名/ DROP TABLE+表名,删除数据是DELETE FROM

[创建库]DDL
创建数据库,经常手滑少个s

CREATE DATABASE IF NOT EXISTS xxx;

创建数据库,指定编码集

CREATE DATABASE xxx CHARACTER SET 字符集;

检查所有数据库;---别忘记s

SHOW DATABASES;

查看一个已经建立的数据库的编码结构

SHOW CREATE DATABASE xxx;

修改库,改字符集

ALTER DATABASE xxx DEFAULT CHARACTER SET utf-8;

删除数据库,库=DROP

DROP DATABASE xxx;

[如何操作表,使用数据库]
查看正在使用的数据库...

SELECT DATABASE();

使用,切换数据库

USE xxx;

DDL操作表,前提条件先使用库。

创建表:

CREATE TABLE 表名 (字段1 类型1,字段2 类型2);
CREATE TABLE student (id int UNSIGNED KEY AUTO_INCREMENT , username VARCHAR(20) NOT NULL UNIQUE , age TINYINT, email VARCHAR(30) NOT NULL UNIQUE ,birthday DATE, sex CHAR(1));

查看所有表:别少s

SHOW TABLES;

截屏2021-04-24 20.42.56.jpg

查看表的结构,内含多少字段;

DESC table_name;

截屏2021-04-24 20.43.26.jpg

查看建表的SQL语句:

SHOW CREATE TABLE xxx;

快速创建一个表结构一摸一样的新表:

CREATE TABLE 新表XX LIKE 旧表XX;

删除表:库和表都是drop

DROP TABLE 表xxx;

判断表是否存在,再删除表:有S

DROP TABLE IF EXISTS 表xx;

修改表结构,不怎么常用,忘记了回来查

ALTER ADD 表xx ADD 列名 类型;

少+了个字段,需要额外加入
截屏2021-04-24 21.32.47.jpg

万一类型长度不够用了,如何修改?

ALTER TABLE 表xx MODIFY 列名 新类型;

截屏2021-03-15 20.52.29.jpg

改列名

ALTER TABLE 表xx CHANGE 旧列名 新列名 类型;

删除列:

ALTER TABLE 表xx DROP 列名;

截屏2021-03-15 20.56.09.jpg

修改表明

RENAME TABLE 表xx TO 新表名;

DML操作数据的语句

库已有,表已有,现在就对数据进行,INSERT INTO, DELETE UPDATE

插入字段,别忘记s,除了数字,其他需要单引号''

INSERT INTO table_name (字段1,字段2,字段3...) VALUES(值1,值2,值3);
INSERT INTO table_name VALUES (值1,值2,值3);
INSERT INTO student VALUES (1,'张三',18,'1990-01-01','男');

查询表结构是

DESC table_name;

截屏2021-05-09 20.46.57.jpg

查询表内的数据

SELECT * FROM table_name;

截屏2021-04-24 20.53.00.jpg

数据蠕虫复制(后面是数据源)

CREATE TABLE table_name LIKE 旧表;
INSERT INTO table_name SELECT * FROM 旧表;

更新表中的记录
1不带条件,修改数据

UPDATE table_name SET 字段名=值;

2带条件,修改数据

UPDATE table_name SET 字段名=值 WHERE 指定条件;
UPDATE student SET name='李四' WHERE id=1; 

删除表中的记录

1不带条件,删除数据
DELETE FROM table_name;=删库跑路,一行一行删,自动
TRUNCATE TABLE table_name;=删库跑路,摧毁整个表

2带条件,删除数据
DELETE FROM table_name WHERE 指定条件;
DELETE FROM student2 WHERE id = 1;

[DQL查询],SELECT WHERE

别名查询

SELECT 字段1 AS 别名,字段2 AS 别名...FROM 表名;
SELECT NAME AS 姓名, age AS 年龄 FROM student2;

清除表内重复值

SELECT DISTINCT 字段名 FROM 表名;

参加运算

比较运算符

逻辑运算符3个
AND 多个条件同时满足
OR 多个条件,只满足其中一个
NOT 不满足

IN关键字,NOT IN

SELECT 字段名 FROM 表名 WHERE 字段 in(数据1,数据2,数据3);
SELECT * FROM student WHERE id in(001,004,010);查询id是001或004或010的数据
=SELECT * FROM student WHERE id=001 OR id=004 OR id= 010;

SELECT * FROM student WHERE id NOT IN(001,004,010);查询id不是001或004或010的数据

范围
BETWEEN
&&

SELECT * FROM hero WHERE grounding_date BETWEEN '2020-01-01' AND '2020-01-31';
=SELECT * FROM hero WHERE grounding_date >='2020-01-01' AND grounding_date <= '2020-01-31';

模糊查询LIKE
LIKE
%LIKE
LIKE%
%LIKE%

排序
ORDER BY
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 ASC|DESC;

组合排序
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 ASC|DESC ,字段2 ASC|DESC;
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 ASC ,字段2 DESC;

聚合函数
COUNT,统计记录数,null不统计在内
SUM,和
MAX,最大值
MIN最小值
AVG平均值

分组,相同的数据为一组。一般分组后会和聚合函数一起使用。
SELECT 字段1,字段2...FROM 表名 GROUP BY 分组字段 HAVING 条件;
HAVING是分组后,对数据进行过滤。
WHERE是分组前,对数据进行过滤。
HAVING后可以使用聚合函数。
WHERE后不可以使用聚合函数。



LIMIT语句
SELECT * FROM student3 LIMIT 2,6;跳过前面2跳数据,显示6条


数据库约束
PRIMARY KEY主键,唯一,不可以为NULL,一般设置ID为主键
UNIQUE唯一
NOT NULL非空
DEFAULT默认
FOREIGN KEY外键

删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;

主键自增,字段类型必需是int整型
AUTO_INCREMENT

截屏2021-04-22 10.18.53.jpg

【多表联查】

[内链接]
SELECT 字段名称,...FROM tbl_name1 INNER JOIN tbl_name2 ON 连接条件;

截屏2021-04-24 21.54.57.jpg
截屏2021-04-24 21.57.09.jpg

让数据库去控制,输入录入的时间问题

NOW()推荐
CURDATE()
CURTIME()
截屏2021-10-27 12.24.03.jpg

截屏2021-10-27 12.26.03.jpg
截屏2021-10-27 12.26.53.jpg