Mysql数据库

一.数据定义语言DDL

一.概述

DDL用于定义和管理数据库的结构

DDL关键字:1.CREATE; 2.ALTER; 3.DROP

二.SQL命名规定和规范

1.标识符命名规则

2.标识符命名规范

三.库管理

复制代码
1.
CREATE DATABASE 数据库名;
2.
CREATE DATABASE IF NOT EXISTS 数据库名;
3.
CREATE DATABASE 数据库名 CHARACTRE 字符集;
CREATE DATABASE 数据库名 COLLATE 排序规则;
4.
CREATE DATABASE 数据库名 CHARACTRE 字符集 COLLATE 排序规则;

1.
SHOW DATABASES;
2.
SELECT DATABASE();
3.
SHOW TABLES FROM 数据库名
4.
SHOW CREATE DATABASE 数据库名
5.
USE 数据库名

ALTER DATABASE 数据库名 CHARACTRE 字符集;
ALTER DATABASE 数据库名 COLLATE 排序规则;
ALTER DATABASE 数据库名 CHARACTRE 字符集 COLLATE 排序规则; 

DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名;

四.表管理

复制代码
CREATE TABLE IF NOT EXISTS 表名{
    列名 类型 [列可选约束],
    列名 类型 [列可选约束],
    列名 类型 [列可选约束],
}[表可选约束][COMMENT '注释']

数据类型:整数,浮点数,定点数,字符串,日期时间等
整数:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
注意:无符号=无负号,整数类型可以添加unsigned,添加以后对应列数据变成无负号类型
浮点数:FLOAT(M,D),DOUBLE(M,D)
注意:float4个字节,double8个字节,支持加unsigned
定点数:BECIMAL(M,D)
存储精确的数组数据值。当需要保持精确精度时,列如货币
字符串:CHAR(M),VARCHAR(M)
CHAR是固定长度,会补充空格.
varchar是可变长度
时间类型:
YEAR:YYYY或YY                1个字节
TIME:HH:MM:SS                3个字节
DATE:YYYY-MM-DD,             3个字节
DATEIME:YYYY-MM-DD HH:MM;SS  8个字节
TIMESTAMPYYYY-MM-DD HH:MM;SS 4个字节

二.数据操纵语言DML

一.概述

DML作用:

插入,更新,删除,查询

INSERT;UPDATE;DELETE;SELECT

数据操作最基本的单位是行,按照行进行增删改查

二.语法

复制代码
1.
INSERT INTO 表名 VALUES(value1,value2...)
2.
INSERT INTO 表名(列名1,列名2,...) VALUES(value1,value2...)

1.
UPDATE table_name SET column1=value1,column2=value2...
2.
UPDATE table_name SET column1=value1,column2=value2...
[WHERE condition]

1.
DELETE FORM table_name
2.
DELETE FORM table_name [WHERE condition]

1.
SELECT 1
2.
SELECT 列名1,列名2 FROM 表名;
SELECT 表名.列名1 FROM 表名;
3.
SELECT 列名1 as 别名,列名2 FROM 表名
SELECT 表名.列名 表名 FROM 表名;
4.
SELECT DISTINCT 列名 FROM 表名;
5.
SELECT '哈哈哈' as corporation 列名 FROM 表名
6.
SELECT 字段1,字段2 FROM table where condition

三.数据库约束

一.概述

概述:表级别的规定,数据的限制语法

约束分类:

a.列级约束

非空约束 NOT NULL,默认值约束 DEFAULT,检查约束 CHECK

b.行级约束

主键约束 PRIMARY KEY,唯一约束 UNQUE,自增长约束 AUTO_INCREMENT

c.多表约束

外键约束 FOREIGN KEY

二.非空约束

复制代码
关键字:NOT NULL
特点:
默认:所有类型列默认都可以为null,包括数字类型
列上添加:非空约束只能添加到列上
多次使用:一个表中可以有很多列进行非空限定
空值判定:空字符串不是null,0也不是null

建表时添加
CREATE TABLE 表名称{
    字段名 数据类型 NOT NULL
}
建表后修改
alter table 表名称 modify 字段名 数据类型 not null;

三.默认值约束

复制代码
关键字:DEFAULT
特点:
位置约定:不能添加到唯一或主键上
生效时间:插入数据时,没有显示赋值,赋予默认值
细节特点:添加约束时,default默认值,默认值对应正确数据类型

建表时添加
CREATE TABLE 表名称{
    字段名 数据类型 default 默认值
}
建表后修改
alter table 表名称 modify 字段名 数据类型 default 默认值;

四.检查约束

复制代码
关键字:CHECK
特点:
新特性:8+以后才支持
万能约束:check(表达式)
不推荐使用

建表时添加
CREATE TABLE 表名称{
    字段名 数据类型,
    check(表达式)
}
建表后修改
alter table 表名称 add CONSTRAINT 约束名 CHECK(表达式);
删除约束
alter table 表名称 drop CONSTRAINT 约束名;

查看约束
SELECT * 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = '库名'
AND TABLE_NAME = '表名'

五.唯一约束

复制代码
关键字:UNIQUE
特点:
约束数量:同一个表可以有多个唯一约束
空值处理:唯一约束允许列值为空
约束名称:在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同
建表时添加
CREATE TABLE 表名称{
    字段名 数据类型 unique
}
建表后修改
alter table 表名称 add CONSTRAINT constraint_name UNIQUE(列名);

六.主键约束

复制代码
主键分类:自定义主键,自然主键
特点:
主键数量:每个表只有一个主键
单一和复合:主键可以由单个列或者多个列组成
主键列类型:可以是任意类型,只要唯一且不重复
主键命名:主键一般采用identify
主键索引:创建主键约束时,系统会默认在所在的列或列组合建立对应的主键索引

建表时添加
CREATE TABLE 表名称{
    字段名 数据类型 primary key
}
CREATE TABLE 表名称{
    字段名 数据类型,
    [constraint 约束名] primary key(字段名)
}
建表后修改
alter table 表名称 add CONSTRAINT PRIMARY KEY(字段列表);

七.自增长约束

复制代码
关键字: AUTO_INCREMENT
特点:
添加位置:只能添加到键列
约束数量:每张表只能由一个自增长约束
数据类型:必须是整数类型
特殊情况:如果自增长字段设置为0或者null,列数据会自增长赋值

如果设置的是非0或非空数据,那么将真实设置值
建表时添加
CREATE TABLE 表名称{
    字段名 数据类型 primary key auto_increment
}
CREATE TABLE 表名称{
    字段名 数据类型 unique key auto_increment
}
建表后修改
alter table 表名称 modify 字段名 数据类 auto_increment;

八.外键约束

复制代码
外键:引用或参照其他表主键列值的列
外键值约束:外键应该引用主键的值,但是如果不添加约束,可能会出现错误数据
特点:
外键数量:每个表可以包含多个外键
外键跨表:被引用为主表,外键表为子表
外键类型:外键类型应该和主键对应
主外键关系:关系型数据库,关系就是指主外键关系
其他影响:存在主外键关系,删除主表数据可能会因为子表引用而删除失败

建表时添加
CREATE TABLE 主表名称{
    字段名 数据类型 primary
}
CREATE TABLE 子表名称{
    字段1 数据类型 primary key,
    [CONSTRAINT <外键约束名称>] FOREIGN KEY 
    reference 主表名(主键)
}
建表后修改
alter table 子表名称 add [CONSTRAINT <外键约束名称>] FOREIGN KEY(从表的字段)
reference 主表名(被引用的字段)
相关推荐
gechunlian888 分钟前
MySQL - Navicat自动备份MySQL数据
android·数据库·mysql
快乐非自愿11 分钟前
MySQL优化全攻略:索引、SQL与分库分表的最佳实践
android·sql·mysql
u868815 分钟前
大模型呼叫中心助力物业报修自动化
运维·数据库·自动化
zhenxin012217 分钟前
5、使用 pgAdmin4 图形化创建和管理 PostgreSQL 数据库
数据库·postgresql
keyborad pianist19 分钟前
MySQl
数据库·mysql·oracle
不知名。。。。。。。。21 分钟前
5、MySQL表的约束
数据库·mysql
乐之者v22 分钟前
DataGrip数据导入导出
数据库
知识分享小能手29 分钟前
MongoDB入门学习教程,从入门到精通,MongoDB事务知识点梳理(8)
数据库·学习·mongodb
LaughingZhu31 分钟前
Product Hunt 每日热榜 | 2026-03-29
数据库·人工智能·经验分享·神经网络·chatgpt
jialan7537 分钟前
不干胶管理
大数据·数据库