mysql 23day DDL常用约束,数据类型

news2024/11/15 8:07:42

目录

  • 数据库的四种语言
  • 常用约束(DDL)
    • 创建格式
    • PRIMARY KEY:主键约束
    • FOREIGN KEY:外键约束
      • 主键外键 联合测试
      • 开始测试
    • NOT NULL:非空约束
    • UNIQUE:唯一约束
    • DEFAULT:默认值约束
    • zerofill 零填充
    • auto_increment 自增加
  • 数据类型
    • 数值型(int)
    • 字符串类型(varchar)
    • 时间和日期类型(date)
    • 浮点数类型(decimal)
    • 枚举类型(ENUM)
    • 集合类型(SET)
  • 面试知识点
    • 导入数据库
    • 抹除数据
    • alter 加入一个字段 注意事项

数据库的四种语言

DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
DDL(data definition language):
DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE
DML(data manipulation language):
DQL语句 数据库查询语言: 查询数据SELECT
DQL(Data Query Language )数据查询语言 SELECT
DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
DCL(Data Control Language):

常用约束(DDL)

表的定义
表格约束

创建格式

字段名   字段类型 (长度),字段约束组成(可选)
create table {库名}.{表名}({字段名} {字段类型、长度} {字段约束组成(可选)}{第二个字段},第三个字段)
实例
create table idol(`name` varchar(20) NOT NULL);

PRIMARY KEY:主键约束

主见的约束 特征
(不能重复 且不能为空 适用于用户昵称)
[使用方法 只能出现一次 第二次 如果想使用在两行就需要在最后单独声明]

create table student6(
id int primary key auto_increment not null,
name varchar(50) not null,
sex enum('male','female') not null default 'male',
age int not null default 18
);

desc student6;

insert into student6 values (1,'alice','female',22);

select * from student6;


insert into student6(name,sex,age) values('king','male',1002);

select * from student6;
primary key  //只能使用一次

#第二种写法

create table student7(
id int auto_increment not null,
name varchar(50) not null,
sex enum('male','female') not null default 'male',
age int not null default 18
primary key(id)
);

#符合组件  写法  //作用 两列 id不一样  name一样也是可以的
create table student8(
id int auto_increment not null,
name varchar(50) not null,
sex enum('male','female') not null default 'male',
age int not null default 18,
primary key(id,name)
);

desc student8;
insert into student8 (name,sex,age) values ('ww','male','18');

select * from student8;

#使用默认 属性 
create table student9(
id int auto_increment not null,
name varchar(50) not null,
sex enum('male','female') default 'male',
age int default 18,
primary key(id,name)
);

desc student9;

insert into student9(name) values('wakaa');

select * from student9;

FOREIGN KEY:外键约束

#可以为空但是不能重复
create table department(
dept_id int,
dept_name varchar(30) unique,
comment varchar(50)
);

desc department;

insert into department values(1,'king','sdfasdf');
insert into department values(2,'kk','sdfasdf');
select * from department;

insert into department values(1,NULL,'sdfasdf');
select * from department;

#第二种写法,是可以写在下边的 和 PRIMARY一样的写法
create table department22(
dept_id int,
dept_name varchar(30) ,
comment varchar(50),
unique (dept_name)
);

主键外键 联合测试

#作用 关联 主键删除 外键也可以删除
#使用方法 外键指向主键 即可生效



#第一个表格设置

create table employees(
name varchar(50) not null,
mail varchar(20),
primary key(name)
)engine=innodb;


engine=innodb;//指定搜索引擎 如果一个加了 另外一个没有加 会导致实验失败
#第二个表格设置

create table payroll(
id int not null auto_increment,
name varchar(50) not null,
payroll float(10,2) not null,
primary key(id),
foreign key(name) references employees(name) on update cascade on delete cascade
)engine=innodb;

#查看两个表格类型 desc
desc employees;
desc payroll;

在这里插入图片描述
在这里插入图片描述

开始测试




#给两个表格中写入内容

insert into employees values('k','k@king.com');
insert into payroll values(1,'k','80000.23');

#查看两个表格

select * from employees;
select * from payroll;

#更新 更改  第一个表格

update employees set name='king' where name='k';

#查看两个表格

select * from employees;
select * from payroll;

#删除第一个表格

delete from employees where name='king';

#查看两个表格

select * from employees;
select * from payroll;


DROP TABLE payroll;
DROP TABLE employees;
show tables;

>>>如果主表格没有同名数据 附表格 则会插入数据失败
>>>如果直接删除 则会删除失败
>>>如果进行修改则会报错

NOT NULL:非空约束

表明这个字段不能为空必须填入内容
如果再插入数据的时候没有内容,则会报错

create table idol(`name` varchar(20) NOT NULL);

UNIQUE:唯一约束

表示此列,每个内容都不一样,
一般作为索引,可以增加数据库的查询速度

创建表
create table idol(`id` int UNIQUE,
`name` varchar(20) NOT NULL
);
插入数据 添加约束
insert into t2 VALUES (1,'wang'),(2,'li');
插入同样id 测试唯一约束
insert into t2 values (1,'fei')

最后报错

在这里插入图片描述

DEFAULT:默认值约束

制作表格
create table t3(
id int,
myname varchar(20),
relation varchar(40) DEFAULT"陌生人"
);


插入数据
insert into t3(id,myname) VALUES (1,'xiaomign');

查看表格
select * from t3;

在这里插入图片描述

zerofill 零填充

零填充,如果设置三位 并且使用零填充约束
则会在前边 自动填充零

# 创建表格
create table ta(id int(3) zerofill);
# 插入数据
insert into ta values(1);
# 查看表的结构
desc ta;
#查看表内容
select * from ta;

在这里插入图片描述

auto_increment 自增加

--进入某库中
use datebase;
--生成表格
create table ttt1(
id int primary key auto_increment,
name varchar(40)
);
--插入数据
insert into ttt1(name) VALUES ('liubang'),('xiaohe'),('liuche');
--查看表格
select * from ttt1;
--插入数据

在这里插入图片描述

数据类型

数值型(int)

常用数据类型:
tinyint(有符号型最大值127),
int(有符号型最大值2147483647)

create table test1( 
tinyint_test tinyint,
int_test int
);

字符串类型(varchar)

常用的
char
varchar

#创建表格
CREATE TABLE king.string ( 
id int ,
str1 char,
str2 varchar(20));
#查看表格类型
desc king.string;
# 插入数据 由于char 如果没设置 则只能插入一个数据 所以这里 插入一个a
insert into king.string VALUES (1,"a","aa");
#打印表格
select * from king.string;

# 修改 char 可以插入四个数据
ALTER TABLE king.string MODIFY str1 char(40);
#插入两个末尾带空格的字符 看看数据库怎么保存
insert into king.string VALUES (1,"aaa  ","aaa  ");

#查看两个字符长度
#查看第一个
SELECT LENGTH(subquery_alias.str1) AS result_length 
FROM (SELECT str1 FROM king.string WHERE id=1) AS subquery_alias;
#查看第二个
SELECT LENGTH(subquery_alias.str2) AS result_length 
FROM (SELECT str2 FROM king.string WHERE id=1) AS subquery_alias;

DELETE from king.string  where str1='a'

在这里插入图片描述
在这里插入图片描述

时间和日期类型(date)

year、date、time、datetime、timestamp

CREATE TABLE king.time1(
t1 date, t2 time ,t3 datetime, t4 year ,t5 timestamp
);
desc king.time1;

insert into king.time1(t1,t2,t3,t4) VALUES (now(),now(),now(),now());

select * from king.time1;

在这里插入图片描述

浮点数类型(decimal)

#创建表格 以小数储存
CREATE TABLE king.num1(num1 decimal(20,10));
#插入数据
insert into king.num1 VALUES (12.3123123);
insert into king.num1 VALUES (151.313232323123);
#打印表格内容
select * from king.num1;

在这里插入图片描述

枚举类型(ENUM)

只能选择一个

CREATE TABLE  king.my1 (
`id` int PRIMARY KEY auto_increment COMMENT "主键 自增",
`name` VARCHAR(20) NOT NULL,
`sex`	ENUM("男","女") NOT NULL DEFAULT "男",
`hobby` SET("nusic","game","eat","mv") NOT NULL
)ENGINE="INNODB"
# 查看表格结构
desc king.my1;
# 插入数据
insert into king.my1(name,sex,hobby) values ('huahua',"女","nusic,game");
# 查看表格
select * from king.my1;

在这里插入图片描述

集合类型(SET)

可以选择多个

CREATE TABLE  king.my1 (
`id` int PRIMARY KEY auto_increment COMMENT "主键 自增",
`name` VARCHAR(20) NOT NULL,
`sex`	ENUM("男","女") NOT NULL DEFAULT "男",
`hobby` SET("nusic","game","eat","mv") NOT NULL
)ENGINE="INNODB"
# 查看表格结构
desc king.my1;
# 插入数据
insert into king.my1(name,sex,hobby) values ('huahua',"女","nusic,game");
# 查看表格
select * from king.my1;

在这里插入图片描述


面试知识点

导入数据库

mysql -p'miam' <date.sql##

抹除数据

#如果使用delete (浪费时间,浪费服务器资源)
delete from {表名};
#抹除数据 从磁盘上抹除
truncate {表名};

alter 加入一个字段 注意事项

不要再高峰期执行 执行原理是 把原有的表复制一份,把新的字段 插入 然后把 原来的字段删除了。

alter table {表名} ADD {新字段名} {约束条件} {位置};
ALTER TABLE employees ADD job VARCHAR(20) NOT NULL AFTER name;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1325186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vcomp140.dll丢失怎么办,vcomp140.dll丢失解决方法详解

在我多年的电脑使用经历中&#xff0c;我曾经遇到过一个非常棘手的问题&#xff0c;那就是vcomp140.dll丢失。这个问题让我苦恼了很久&#xff0c;但最终我还是找到了解决方法。今天&#xff0c;我想和大家分享一下我的经历&#xff0c;以及vcomp140.dll是什么&#xff0c;它丢…

AI创作系统ChatGPT商业运营网站系统源码,支持AI绘画,GPT语音对话+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

用全志R128复刻自平衡赛车机器人,还实现了三种不同的操控方式

经常翻车的朋友们都知道&#xff0c;能在翻车后快速摆正车身的车才是好车。 就像动画《四驱兄弟》中展现的那样&#xff0c;在比赛中需要跟着赛车一起跑圈&#xff0c;而且赛车如果被撞翻还需要重新用手扶正&#xff0c;所浪费的时间非常影响比赛结果。 如果小豪和小烈可以拥有…

[电子榨菜] js中的闭包closure

0.写在前面: 下学期就打算去实习了,这段时间要密集接收考试和面试的捶打,计网和软工就没有办法为大家继续贡献开源内容了,明年九月份之前的更新内容将会以前端,人工智能,和工程设计为基础, 很抱歉啦,不过我还是希望我这一年来的努力可以帮到一些人.虽然自己这一年过的浑浑噩噩…

Docker容器的优化和性能调优技巧

Docker已经成为了现代应用程序开发和部署的核心工具之一。然而&#xff0c;要确保Docker容器在生产环境中运行稳定、高效&#xff0c;需要一些优化和性能调优的技巧。本文将介绍一些关键的Docker容器优化和性能调优策略&#xff0c;并提供丰富的示例代码&#xff0c;以帮助大家…

【精简】mysql创建自定义函数 sql写法举例

一&#xff0c;举例的sql是查询 某个时间点某个币种的汇率 create function get_rate(idate date,CURRENCY varchar(32)) returns decimal(21,6) begin declare res decimal(21,6) default 1;selec rate into resfromt_exchangerate tewhere ratedate idateand CURRENCYID C…

Apache Pulsar 技术系列 - PulsarClient 实现解析

导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案&#xff0c;支持多租户、低延时、读写分离、跨地域复制&#xff08;GEO replication&#xff09;、快速扩容、灵活容错等特性。同时为了达到高性能&#xff0c;低延时、高可用&#xff0c;Pulsar 在客户端也…

【Linux C | 文件I/O】文件的打开关闭 | open、creat、colse 函数

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

windows安装、基本使用vim

标题&#xff1a;windows安装、基本使用vim 1.下载并安装GVIM 百度网盘链接 提取码&#xff1a;2apr 进入安装界面&#xff0c;如下&#xff0c;勾选 其它都是默认即可 参考&#xff1b; 2.在powershell中使用vim 参考blog&#xff1a;window10安装vim编辑器 安装好后&…

SpringBoot+WebSocket

SpringBootWebSocket 1.导入依赖&#xff1a; -- Spring Boot 2.x 使用 javax.websocket-- Spring Boot 3.x 使用 jakarta.websocket<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId&g…

C# WPF上位机开发(业务主流程才是核心)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说了很多的c# wpf编程技术&#xff0c;里面有控件&#xff0c;有绘图&#xff0c;有数据库&#xff0c;有多线程等技术。但是他们都属于实…

宝塔Linux面板计划任务:文件夹改名方式天天切割日志脚本

新手第一次操作&#xff0c;目测成功且完美&#xff0c;供大家参考 current_time$(date %Y%m%d%H%M%S) old_folder_name"/www/wwwlogs" new_folder_name"/www/wwwlogs_${current_time}" mv "$old_folder_name" "$new_folder_name" m…

Inkscape SVG 编辑器 导入 Gazebo

概述 本教程描述了拉伸 SVG 文件的过程&#xff0c;这些文件是 2D 的 图像&#xff0c;用于在 Gazebo 中为您的模型创建 3D 网格。有时是 更容易在 Inkscape 或 Illustrator 等程序中设计模型的一部分。 在开始之前&#xff0c;请确保您熟悉模型编辑器。 本教程将向您展示如…

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 &#xff08;一&#xff09;新建文件夹 &#xff08;二&#xff09;打开文件夹 &#xff08;三&#xff09;打开运行终端 &#xff08;四&#xff09;创建基础项目 &#xff08;五&#xff09;创建app 1. 安装Django &#xf…

app上架-您的应用在运行时,未同步告知权限申请的使用目的,向用户索取(相机)等权限,不符合华为应用市场审核标准。

上架提示 您的应用在运行时&#xff0c;未同步告知权限申请的使用目的&#xff0c;向用户索取&#xff08;相机&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。 测试步骤&#xff1a;管理-添加-点击二维码&#xff0c;申请相机权限 修改建议&#xff1a;APP在调…

Gazebo GUI模型编辑器

模型编辑器 现在我们将构建我们的简单机器人。我们将制作一个轮式车辆&#xff0c;并添加一个传感器&#xff0c;使我们能够让机器人跟随一个斑点&#xff08;人&#xff09;。 模型编辑器允许我们直接在图形用户界面 &#xff08;GUI&#xff09; 中构建简单的模型。对于更复…

MyBatis ORM映射

MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系&#xff0c;二者不同时无法自动ORM 因此需要使用到ORM映射。 共有两种解决办法&#xff1a;1.列的别名 2.结果映射 1.列的别名 在SQL中使用 as 为查询字段添加列别名&#xff0c;以匹配属性名 public List<…

VCG 获取某个顶点的邻接顶点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 与之前的思路相同,这里我们利用VCG为我们提供的拓扑结构,获取某个顶点的邻接顶点,这在我们处理网格数据时往往很有用。 二、实现代码 //VCG #include <vcg/complex/algorithms/create/platonic.h> #inclu…

Java_集合进阶(Collection和List系列)

一、集合概述和分类 1.1 集合的分类 已经学习过了ArrayList集合&#xff0c;但是除了ArrayList集合&#xff0c;Java还提供了很多种其他的集合&#xff0c;如下图所示&#xff1a; 我想你的第一感觉是这些集合好多呀&#xff01;但是&#xff0c;我们学习时会对这些集合进行…

idea 如何使用 JaCoCo 跑覆盖率

背景介绍 什么代码覆盖&#xff1f; 代码覆盖(Code coverage)是软件测试中的一种度量&#xff0c;描述程序中源代码被测试的比例和程度&#xff0c;所得比例称为代码覆盖率。简单来理解&#xff0c;就是单元测试中代码执行量与代码总量之间的比率。 Java常用的单元测试覆盖率…