SQL语句——DDL数据定义语言

news2024/9/20 22:43:13

1.sql语言不区分大小写
2._(下划线)进行名字的分割,不适用驼峰命名
3.;  语句sql结尾处加一个;来表示结束
4.一般关键词建议用大写
5.所有名称不能用中文

1.创建数据库

CREATE DATABASE [IF NOT EXISTS] 库名

-- 库
#创建库
#create database xiaozhao;
#create database teacher;

2.删除数据库

DROP DATABASE [IF EXISTS] 库名

#删除库
#drop database teacher;

•“[IF EXISTS] ”内容可以省略;

3.查看数据库

SHOW DATABASES

#查看所有的库
#show DATABASES;

其中:

• 注意不要省略“s” 

4.使用数据库

USE xiaozhao

#库
-- 使用库
use xiaozhao;

其中: •“xiaozhao”是创建的数据库名称。 

5.数据库表的字段类型

1.字符串类型

类型说明取值范围
char[(M)]固定长度字符串,M即固定是长度M字符
varchar[(M)]可变字符串变长度
tinytext微型文本串16777215长度+3个字节
text文本串(4个G左右大小)4294967295长度+4个字节

char和varchar比较

类型特点空间上时间上适用场景
char[(M)]固定长度浪费存储空间效率高存储不大,速度要求高
varchar[(M)]可变长度节省存储空间效率低非CHAR的情况

数值类型 

 

日期和事件类型

6.DDL创建数据库表

CREATE TABLE [ IF NOT EXISTS ] `表名` (

        `字段名1` 字段类型 [ 属性] [ 索引] [注释] ,

        `字段名2` 字段类型 [属性] [索引] [注释] ,

         … …

        `字段名n` 字段类型 [属性] [ 索引] [注释] )

         [ 表类型 ] [ 表字符集 ] ;

CREATE TABLE [ IF NOT EXISTS ]  表名(
     字段名  类型  属性,
     字段名  类型  属性,
     ……
     字段名  类型  属性
);

create table student(
    stu_name varchar(10),
    stu_age tinyint,
    stu_birthday datetime,
    stu_id char(18),
    stu_score decimal(4,1)
); 

其中:

•“[]” 包含的内容可以省略;

•“`” 当前符号为反引号,用于区别MySQL保留字与普通字符而引入的。

7.查看表结构

方式1

desc  表名

方式2  

create table 表名

desc student;
-- 出现表后,全选->复制-.>粘贴,既可以显示执行语句的具体实现方式
show create table student;
/*
CREATE TABLE `student` (
  `stu_name` varchar(10) DEFAULT NULL,
  `stu_age` tinyint(4) DEFAULT NULL,
  `stu_birthday` datetime DEFAULT NULL,
  `stu_id` char(18) DEFAULT NULL,
  `stu_score` decimal(4,1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
        
反引号:取消特殊性,即`table`也可以做表名
DEFAULT NULL:默认为空,可以不写值
DEFAULT CHARSET:默认字符集utf8mb4
COLLATE=utf8mb4_0900_ai_ci:字符排序
ENGINE=InnoDB:存储引擎
    存储:
    引擎:搜索引擎、游戏引擎、(物理碰撞)物理引擎,根据制定好的规则,
*/

 出现表后,全选->复制-.>粘贴,既可以显示执行语句的具体实现方式

CREATE TABLE `student` (
  `stu_name` varchar(10) DEFAULT NULL,
  `stu_age` tinyint(4) DEFAULT NULL,
  `stu_birthday` datetime DEFAULT NULL,
  `stu_id` char(18) DEFAULT NULL,
  `stu_score` decimal(4,1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
        
(` `)反引号:取消特殊性,即`table`也可以做表名
DEFAULT NULL:默认为空,可以不写值
DEFAULT CHARSET:默认字符集utf8mb4
COLLATE=utf8mb4_0900_ai_ci:字符排序
ENGINE=InnoDB:存储引擎
    存储:
    引擎:搜索引擎、游戏引擎、(物理碰撞)物理引擎,根据制定好的规则,
 

8.外键约束

约束实际上就是表中数据的限制条件

作用:表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效

约束种类:

  • 非空约束(not null)
  • 唯一性约束(unique)
  • 主键约束(primary key) PK
  • 外键约束(foreign key) FK
  • 检查约束(目前MySQL不支持、Oracle支持)

添加非空约束

alter table 表名 modify test_student char(10) not null;

#非空约束(设置默认值)
create table tb(
	username varchar(10) not null default "无名",
	userage int
);

 添加唯一性约束(unique)

alter table 表名 add unique(表字段名,字段,字段,字段);

#唯一约束
-- 可以为null,并且可以有多个null,因为null是一个类型
#行级约束:每个字段各是各的约束
create table tb1(
	username varchar(10) unique,
	userage int
);
#表级约束(联合唯一约束),可同时约束多个字段unique(username,userage)
create table tb2(
	username varchar(10),
	userage int,
	unique(username,userage)
#当表级约束的所有字段完全一样时,才会出现错误(字段之间是有关联的,必须每个字段的值都相同时)
);

添加主键约束 

alter table 表名 add primary key(表的字段名,字段,字段);

#主键约束
-- 主键的值是唯一的
-- 主键值不可以为空
create table tb4(
	username varchar(10) primary key ,
	userage int
);
create table tb5(
	username varchar(10),
	userage int,
	primary key(username,userage)
#联合主键,联合约束
#只有当两个值都一样时才会触发约束
);

#一般主键的创建方式
-- int bitint 自增
-- 主键的值是不会回补的(关系型数据库,表与表之间有关系)
create table tb6(
	tid int primary key auto_increment,
	username varchar(10),
	userage int
);

添加外键约束

alter table 表名 add constraint N1 foreign key (表字段名) references 父表(父表字段名);

只能选主表已有的
保留外键关系,但不写外键约束
外键关系:只是存在外键关系,但没有实际约束
外键约束:对从表中的外键有一定的约束

1.外键的值可以重复
2.外键的值可以为null
3.外键必须要写父表中有的数据
4.父表中的关联字段必须是一个具有唯一性的数据
5.父表的字段名和从表的字段名不一定相同,但数据类型必须一致
6.一个表中可以有多个外键,也可以有多个外键约束,但只能有一个外键

7.删除时先删除子表数据,再删除父表数据

#外键约束:只能选主表已有的
/*保留外键关系,但不写外键约束
外键关系:只是存在外键关系,但没有实际约束
外键约束:对从表中的外键有一定的约束
create table a(
	aid int primary key auto_increment,
	aname varchar(10)
);
drop table b;
create table b(
	bid int primary key auto_increment,
	bname varchar(10),
	aid int,
	foreign key(aid) references a(aid)
);

 删除约束

删除not null约束

alter table 表名 modify 列名 类型;

删除unique约束

alter table 表名 drop index 唯一约束名;

删除primary key约束

alter table 表名 drop primary key;

删除foreign key约束

alter table 表名 drop foreign key 外键名;

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

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

相关文章

计算机网络序章

计算机网络学习什么? 下列举例由用户使用计算机角度去理解 首先,计算机网络是通过路由等方式去获取我们希望的数据用户可以在APP中去进行方便的操作去获取数据。每个应用都有自己的端口去确定每次来的数据是否是自己需要的数据应该应该传到哪里&#x…

COD论文笔记 Deep Gradient Learning for Efficient Camouflaged 2022

动机 这篇论文的动机在于解决伪装目标检测(COD)中的一个关键问题:在复杂背景下,伪装目标与背景的边界模糊,使得检测变得极其困难。现有的方法,如基于边界或不确定性的模型,通常仅响应于伪装目标的稀疏边缘&#xff0c…

oceanbase架构、功能模块、数据存储、特性、sql流转层等概念详解

一、架构图 OceanBase 数据库采用无共享(Shared-Nothing)分布式集群架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎、事务引擎,运行在普通 PC 服务器组成的集群之上,具备高可扩展性、高…

澎湃算力 玩转AI 华为昇腾AI开发板——香橙派OriengePi AiPro边缘计算案例评测

澎湃算力 玩转AI 华为昇腾AI开发板 香橙派OriengePi AiPro 边缘计算案例评测 人工智能(AI)技术正以前所未有的速度改变着我们的生活、工作乃至整个社会的面貌。作为推动这一变革的关键力量,边缘计算与AI技术的深度融合正成为行业发展的新趋势…

秒懂C++之类与对象(下)

目录 一.static成员 测试: 二.explicit关键字 三.友元(少用) 友元函数: 友元类: 四.内部类(少用) 五.(扩展)编译器的优化 一.static成员 测试: 实现一…

【分布式事务】怎么解决分布式场景下数据一致性问题

分布式事务的由来 拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户余额服务。原本收到充值回调后,可以将修改订单状态和扣减余额放在一个mysql事务…

邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS)

1. 前言 使用过邮件客户端的同学一定见过下面这张图。这是客户端账号配置界面,里面有SSL、STARTTLS选项。刚接触邮件客户端的同学肯定会有这些疑问:什么是SSL?什么是STARTTLS?两者有什么区别?具体该如何选择呢&#x…

首批通过 | 百度通过中国信通院H5端人脸识别安全能力评估工作

2024年5月,中国信息通信研究院人工智能研究所依托中国人工智能产业发展联盟安全治理委员会(AIIA)、“可信人脸应用守护计划”及多家企业代表共同开展《H5端人脸识别线上身份认证安全能力要求及评估方法》的编制工作,并基于该方法开…

创新驱动的力量:探索Web3在技术发展中的作用

随着科技的不断进步和创新,Web3作为新一代互联网技术范式,正在以其去中心化、安全、透明和可编程的特性,深刻影响着全球技术发展的方向和速度。本文将深入探讨Web3技术的核心概念、关键特征以及其在技术创新中的重要作用,展示其在…

【Android】Fragment的静态动态创建以及两种创建方式的生命周期

参考: 33.3-Fragment的创建-静态创建2_哔哩哔哩_bilibili Fragment的创建_从现有代码创建foutran-CSDN博客 【Android】Fragment的基本用法、Fragment和活动间的通信、Fragment的生命周期、动态加载布局的技巧_android fragment-CSDN博客 文章目录 Fragment的静态创…

贝锐蒲公英远程运维方案:即装即用、无需专线,断网也可远程维护

目前,公路、隧道、桥梁、航道,甚至是施工现场和工业生产环境等,都采用了实时监测方案。 通过部署各类传感器和摄像头等设备,现场视频画面和控制单元(如PLC、工控机等)数据可以实时回传,用于集中…

0711springNews新闻系统管理 实现多级评论

0611springmvc新闻系统管理-CSDN博客 0711springNews新闻系统管理项目包 实现多级评论-CSDN博客 数据库字段 需要添加父节点id,通过该字段实现父评论和子评论的关联关系。 对象属性 实现链表,通过一个父评论可以找到它对应的所有子孙评论。 业务层 实现…

linux集群架构--web服务器--nginx检查模块/算法/rewrite知识补充

web集群-负载均衡 轮询算法 (1)概述 决定负载均衡如何把请求分发给后端节点,这种分发的方式就是轮询算法 (2)轮询算法 面试题:说说常见nginx轮询算法 rr,wrr,ip_hash,lc算法(最小连接数&…

CH03_布局

第3章:布局 本章目标 理解布局的原则理解布局的过程理解布局的容器掌握各类布局容器的运用 理解 WPF 中的布局 WPF 布局原则 ​ WPF 窗口只能包含单个元素。为在WPF 窗口中放置多个元素并创建更贴近实用的用户男面,需要在窗口上放置一个容器&#x…

基于 Three.js 的 3D 模型加载优化

作者:来自 vivo 互联网前端团队- Su Ning 作为一个3D的项目,从用户打开页面到最终模型的渲染需要经过多个流程,加载的时间也会比普通的H5项目要更长一些,从而造成大量的用户流失。为了提升首屏加载的转化率,需要尽可能…

怎么关闭 Windows 安全中心,手动关闭 Windows Defender 教程

Windows 安全中心(也称为 Windows Defender Security Center)是微软 Windows 操作系统内置的安全管理工具,用于监控和控制病毒防护、防火墙、应用和浏览器保护等安全功能。然而,在某些情况下,用户可能需要关闭 Windows…

通义千问AI模型对接飞书机器人-集成飞书机器人(2-2)

接上一篇 通义千问AI模型对接飞书机器人-模型配置(2-1) 1、通过飞书机器人对接ai的在线接口 参考文档:发送 HTTP 请求 1.1 创建飞书应用 创建流程 配置http请求 http请求地址上一篇百炼平台配置的应用地址 1.2 企业自建应用对接AI 添加应用…

小程序-5(vant组件+全局数据共享+分包+tabBar案例)

目录 1.使用npm包 小程序对npm的支持和限制 使用vant组件 使用CSS变量定制主题样式 API的promise化 2.全局数据共享 小程序中的全局数据共享方案 安装MobX相关的包 创建MobX的store实例 将Store中的成员绑定到页面中 在页面上使用Store中的成员 将Store中的成员绑定…

pyqt/pyside QTableWidget失去焦点后,选中的行仍高亮的显示

正常情况下pyqt/pyside的QTableWidget,点击input或者按钮失去焦点后 行的颜色消失了 如何在失去焦点时保持行的选中颜色,增加下面的代码: # 获取当前表格部件的调色板 p tableWidget.palette()# 获取活跃状态下的高亮颜色和高亮文本颜色&a…

防火墙内容安全综合实验

一、实验拓扑 二、实验要求 1,假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要接受外网用户上传的文件。针对该场景进行防病毒的防护。 2,我们需要针对办公区用户进行上网行为管理,要…