MySQL

1 . MySQL的启动

MySQL数据库的登陆与退出

  • 登陆MySQL:
    sudo mysql

  • 退出MySQL:
    quit
    exit

2. MySQL相关知识

1. 相关知识

  • SQL语句中的注释可以使用 --# (MySQL专属)作为单行注释,也可以使用 /**/ 作为多行注释
  • SQL 中的指令可大写也可小写,但一般对关键字使用大写
  • SQL中的数据库名称为了防止与关键字相同,可以用 `` 包裹起来
  • SQL语句结尾要加 ;
  • SQL的不等于号为<>

2. 主要数据类型

INT                      -- 整数
DECIMAL(m,n)             -- 有小数点的数,有m位数,小数点后占n位
VARCHAR(n)               -- 子串,最多能存放n个字
BLOB                     -- (Binary Large Object) 存放二进制资料,如图片
DATE                     -- 'YYYY-MM-DD' 存放日期
TIMESTAMP                -- 'YYYY-MM-DD HH:MM:SS' 记录时间
DATETIME                 -- 'YYYY-MM-DD HH:MM:SS' 记录时间

3. PRIMARY KEY(主键)

✅ 定义:

PRIMARY KEY 用于唯一标识表中的一条记录。每个表 只能有一个主键,它的值必须:

  • 唯一(UNIQUE
  • 非空(NOT NULL

📚 特性:

  • 每张表最多只能有一个主键
  • 可以是一个字段(单主键)或多个字段组合(复合主键)
  • 自动创建唯一索引,加快查询速度
  • 是关系型数据库设计中最基础且重要的约束之一

3. MySQL相关命令

1. 处理数据库

-- 创建sql_tutorial 数据库
CREATE DATABASE sql_tutorial;  

-- 展示所有已创建的数据库
SHOW DATABASES;

-- 删除名为sql_tutorial的数据库
DROP DATABASE sql_tutorial;

-- 设置数据库为只读模式
-- 该模式下无法修改数据库,只能访问其中的数据
ALTER DATABASE myDB READ ONLY = 1;
-- 撤回只读模式
ALTER DATABASE myDB READ ONLY = 0;

2. 处理表格

-- 选择要使用的数据库
USE sql_tutorial;

-- 创建表格
CREATE TABLE student(
	student_id INT PRIMARY KEY,
	name VARCHAR(20),
	majior VARCHAR(20)
	-- PRIMARY KEY也可以这样创建
	-- PRIMARY KEY(student_id);
);

-- 将表格重命名
RENAME TABLE student TO stduents;

-- 查看创建的表格
DESCRIBE student;

-- 删除表格
DROP TABLE student;

-- 为表格新增属性
ALTER TABLE student
ADD gpa DECIMAL(3,2);

-- 重命名表格中某一内容
ALTER TABLE student
RENAME COLUMN major TO majors;

-- 修改表格中数据属性
ALTER TABLE student
MODIFY name VARCHAR(30);

-- 修改表格中数据位置
ALTER TABLE student
MODIFY name VARCHAR(30)
AFTER major;
-- 放在第一个位置
ALTER TABLE student
MODIFY name VARCHAR(30)
FIRST;

-- 删除表格属性
ALTER TABLE student
DROP COLUMN gpa;

3. 存入数据

-- 存入数据
INSERT INTO student
VALUES(1,'小白','历史'); -- 单双引号均可

INSERT INTO student
VALUES(2,'小绿',NULL);  -- NULL 填充位置数据

-- 也可以显式制定顺序,未填的为NULL
INSERT INTO student(major,student_id)
VALUES('英语',5); 

-- 搜寻表格中全部资料
SELECT * FROM student;

4. 添加约束

-- 可以为表格添加属性
CREATE TABLE student(
	student_id INT PRIMARY KEY AUTO_INCREMENT,  -- 自动按次递增
	name VARCHAR(20) NOT NULL,    -- 不能为空
	major VARCHAR(20) UNIQUE,     -- 不能相同
	sex VARCHAR(5) DEFAULT '女'   -- 默认为女
);

5. 更新数据

-- 将英语更新为英语文学
UPDATE student
SET major = '英语文学'     -- 更新内容
WHERE major = '英语';      -- 更新条件     

-- 也可以这样
UPDATE student
SET name = '小黑',major = '物理'
WHERE major = '生物' OR major = '历史';

6. 删除数据

DELETE FROM student
WHERE student_id = 4 AND name = '小黑';    -- 也可用 > < = 号来判断

7. 搜寻数据

SELECT * FROM student;      -- * 表示所有属性
SELECT name,major FROM student;

-- 搜寻数据,并根据分数作排序
SELECT * FROM student
ORDER BY score;        -- 由低到高,默认为ASC

SELECT * FROM student
ORDER BY score DESC;   -- 由高到底

-- 先根据score,在根据student_id作排序
SELECT * FROM student
ORDER BY score,student_id;

-- 查看数据为空
SELECT * FROM srudent
WHERE major IS NULL;

-- 只要前三笔数据
SELECT * FROM student
LIMIT 3;

-- 查询单条数据
SELECT * FROM student
WHERE major = '英语';


SELECT * FROM student
WHERE major IN('历史','英语','生物');

4. MySQL相关函数