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 主表名(被引用的字段)
相关推荐
poemyang3 小时前
十年大厂员工终明白:MySQL性能优化的尽头,是对B+树的极致理解
mysql·pagecache·顺序i/o·局部性原理·b tree·b+ tree
wyiyiyi4 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
天宇_任5 小时前
Mysql数据库迁移到GaussDB注意事项
数据库·mysql·gaussdb
xiep14383335108 小时前
Ubuntu 安装带证书的 etcd 集群
数据库·etcd
Java小白程序员8 小时前
Spring Framework:Java 开发的基石与 Spring 生态的起点
java·数据库·spring
老虎06279 小时前
数据库基础—SQL语句总结及在开发时
数据库·sql·oracle
爱掘金的土拨鼠10 小时前
国产化dm数据库锁表解锁
数据库
花花无缺11 小时前
MySQL 的存储引擎-InnoDB 和 MyISAM的对比
mysql
苏琢玉11 小时前
如何让同事自己查数据?写一个零依赖 PHP SQL 查询工具就够了
mysql·php
庖丁解java11 小时前
N个Utils
数据库