MySQL

数据库软件(MySQL)

08. 基础-SQL-DDL-数据类型及案例_哔哩哔哩_bilibili

数据库DataBase(DB)(相当于备忘录):储存数据

数据库管理系统(操纵和管理数据库的大型软件,比如MySQL)

SQL(structed query language):操作关系型数据库的语言

MySQL(免费软件,写数据库用,就像我现在写markdown用Typora一样)

最终都是用的SQL操作,所以软件无所谓的,习惯那个用哪个

MySQL

  1. 社区版(免费)
  2. 商业版(给钱)

关系型数据库(RDBMS):建立在关系模型上,由==多张连接的二维表==组成的数据库!

image-20250423170326397

仅展示两张,这两张的关联在dept_id与id/name里!

非关系型数据库就是不按表储存

安装了MySQL就相当于有了MySQL服务器,就可以将客户端与DBMS连接

SQL语法:(和C++类似)

  1. 对缩进和空格要求不严格
  2. 分号结尾
  3. ==对大小写不严格,都可以==
  4. 注释
    1. //
    2. /* */

DDL(data defination language): 定义对象(搭建大致框架)

DML (data manipulation language): 增 删 改

DQL (data quary language): 查询

DCL (data control language): 权限问题

DDL

查询所有数据库

1
SHOW DATABATES;

查询当前数据库

1
SELECT DATABASE();//记不清楚自己的数据库了,记得加括号,这是个函数

创建数据库

1
2
CREATE DATABASE 数据库名;
CREATE DATABASE IF NOT EXISTS 数据库名;

删除数据库

1
DROP DATABASE 数据库名;//drop

使用数据库

1
USE 数据库名;//相当于切换到这个数据库下,和cd切换一样

查询当前数据库所有表

1
SHOW TABLES;

查询表结构

1
DESC 表名;//description描述

查询指定表的建表语句

1
SHOW CREATE TEBLE 表名;//这个比desc多展示一些东西!!!		

创建表(函数)//==切记不要在系统库里面用,创建之前一定要USE到自己的数据库==

1
2
3
4
CREATE TABLE 表名//相当于类或结构体
(名 类型 comment "这就是在这里面的对名的注释";
名 类型;
名 类型);//这些都是表头上的内容,而成员信息是另一个东西!!!!,切记不能是空表
image-20250423181906843

int ,float,double

image-20250423182245898

char//固定,但性能好,如果不写长度,默认为1

varchar//可变,性能差

image-20250423182632724

date,time

image-20250423182922951

1
2
3
4
5
6
7
8
9
10
11
12
CREATE DATABASE;
USE DATABASE;
CREATE TABLE INFORMATION
(
编号 int,
员工工号 varchar(10),
员工姓名 VARCHAR(10),
性别 CHAR(1),
年龄 TINYINT,
身份证号 CHAR(18),
入职时间 DATA
)

添加

1
ALTER TABLE 表名ADD 字段名 类型(长度) COMMENT 注释;//alter是改变!

案例

为emp表增加一个新字段nickname,类型为varchar(20)

修改

1
2
3
4
//修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);//modify也是修改
//修改字段名和数据类型
ALTER TABLE 表名 CHANGE 旧名 新名 类型(长度) COMMENT 注释;

案例

将emp表的nickname改成username,类型为varchar(30)

删除字段

1
ALTER TABLE 表名 DROP 字段名;

案例

将emp表的username删除

修改表名

1
ALTER TABLE 表名 RENAME TO 新表名;

案例

将emp表的表名修改为employee

删除表

1
DROP TABLE IF EXISTS 表名;//IF EXISTS可以不加

删除指定表,并重新创建该表

1
TRUNCATE TABLE 表名;//truncate删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//内容回顾DDL
SHOW DATABASES;
CREAT DATABASE 数据库名;
USE 数据库名;
SELECT DATABASE();
DROP DATABASE 数据库名;

SHOW TABLES;
CREAT TABLE 表名
();//切记表名得和内部元素一同创建,不然就是一个空表
DESC 表名;
SHOW CREAT TABLE 表名;//有的时候你得说清楚是什么表,所以得加表名,而CREAT对象很多
//所以有的时候又得说清楚CREAT DATABASE/TABLE
ALTER TABLE ADD/DROP/CHANGE/MODIFY/RENAME TO
DROP TABLE 表名;

==但是这样子在命令行里操作不直观,所以可以可视化处理,这样子可以清晰且提高效率==

图形化界面

Sqlyog/==DataGrip==/Navicat

DataGrip里创建数据库schema和database一样

image-20250424110243582

DML

增加(INSERT)

修改(UPDATE)

删除(DELETE)

添加数据

  1. 给指定字段添加数据

    1
    2
    3
    4
    5
    6
    7
    INSERT INTO 表名 (字段1,字段2,...)VALUES(值1,值2,....);
    //如果是给所有字段添加数据,那么就直接不写(字段1,字段2,...)
    //如果要批量添加:VALUES(值1,值2,....),(值1,值2,....),(值1,值2,....);
    //在value后添加”,“隔开。
    //*可不可以表示泛呢?好像没法。
    //实质上也是键值对,所以要对应
    //字符串和日期本质都是字符串,所以要放在引号里
  2. 修改数据

    1
    2
    UPDATE 表名 SET 字段名1=值1,字段名2=值2,... WHERE 条件;
    //没有条件就是修改整张表!!!所以修改一个那么就得加条件,别一个不小心把整张表都改了
  3. 删除数据

    1
    2
    3
    DELETE FROM 表名 WHERE 条件;
    //没有条件就是删除整张表的数据
    //DELETE不能只删除某一个字段的值(可以用update)
1
2
3
4
//内容回顾
INSERT INTO 表名 (字段1,字段2,...)VALUES(值1,值2,....);
UPDATE 表名 SET 字段名1=值1,字段名2=值2,... WHERE 条件;
DELETE FROM 表名 WHERE 条件;
DQL

SELECT

​ 字段列表

FROM

​ 表名列表

WHERE

​ 条件列表

GROUP BY

​ 分组字段列表

HAVING

​ 分组后条件列表

ORDER BY

​ 排序字段列表

LIMIT

​ 分页参数

  • 基本查询

  • 条件查询

  • 聚合函数

  • 分组查询

  • 排序查询

  • 分页查询

查询//返回的是一个表!按列返回

所有查询的本质就是

1
SELECT 字段列表 FROM 表名;
  1. 基本查询
1
2
3
4
5
//查询返回多个字段
SELECT 字段1 AS 别名1,字段2,字段3... FROM 表名;//AS可以省略
SELECT * FROM 表名;//*表泛,可以给字段设别名
//去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;//DISTINCT就是个去重操作
  1. 条件查询//加WHERE实现

    1
    SELECT 字段列表 FROM 表名 WHERE 条件列表;

    image-20250423220056183

  2. 聚合函数(将一列数据作为一个整体,进行纵向计算)

    1
    SELECT 聚合函数(字段列表)FROM 表名;

    image-20250423221242907