SQL命令一:SQL 基础操作与建表约束

目录

引言

一、SQL 基础命令

(一)数据库相关操作

(二)表格相关操作

(三)MySQL 常用数据类型

二、增删改查(CRUD)操作

(一)增加数据

(二)删除数据

(三)修改数据

(四)查询数据

三、建表约束

(一)非空约束(NK,not null)

(二)唯一约束(UK,unique)

(三)主键约束(PK,primary key)

(四)自动递增

(五)联合主键

(六)外键约束(FK,foreign key)

总结


引言

        在当今数字化时代,数据处理和管理变得至关重要。SQL(Structured Query Language,结构化查询语言)作为操作关系型数据库的核心工具,掌握它的基本命令和建表约束是迈向数据处理领域的关键一步。

一、SQL 基础命令

(一)数据库相关操作

  1. 登录 MySQL
    要与 MySQL 数据库进行交互,首先得登录到数据库系统。使用命令 mysql -u root -p 登录,其中 -u 后面跟着用户名,这里是 root-p 表示需要输入密码。输入密码后回车,就能成功登录。
  2. 查看所有数据库
    登录成功后,使用 show databases; 命令可以查看当前 MySQL 服务器上的所有数据库。例如,执行该命令后,可能会看到 information_schemamysqlperformance_schema 等系统自带数据库,以及你自己创建的数据库。
  3. 使用数据库
    若要对某个特定数据库进行操作,需先指定使用该数据库。使用 use +数据库名称; 语句,比如 use testdb;,就可以切换到名为 testdb 的数据库,后续操作都将在这个数据库中进行。
  4. 删除数据库
    当某个数据库不再需要时,可以使用 drop database +数据库名称; 命令将其删除。例如,drop database olddb; 会永久删除 olddb 数据库及其所有数据,此操作需谨慎执行。
  5. 创建数据库
    使用 create database +数据库名称; 命令创建新的数据库。例如,create database newdb; 会在服务器上创建一个名为 newdb 的数据库。还可以通过 show create database +数据库名称; 查看数据库的详细创建信息,包括编码设置等。比如 show create database newdb; 可能会显示如下结果:
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| newdb    | CREATE DATABASE `newdb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+----------------------------------------------------------------+

(二)表格相关操作

  1. 查看所有表格
    在选定的数据库中,使用 show tables; 命令可以查看该数据库下的所有表格。假设在 testdb 数据库中已经创建了 users 和 orders 表,执行该命令就会显示这两个表名。
  2. 创建表格
    创建表格使用 create table +表名+(字段1 类型(长度),字段2 类型(长度),字段3 类型(长度)) 语法。例如,创建一个 users 表,包含姓名、年龄和地址信息:
create table users (name varchar(10),age int(3),address varchar(50)
);
  1. 删除表格
    若要删除某个表格,使用 drop table +表名 命令。例如,drop table users; 会删除 users 表及其所有数据。
  2. 修改表结构
    • 删除列:使用 alter table t_user drop column name; 可以删除 t_user 表中的 name 列。
    • 添加列alter table t_user add column name varchar(10); 会在 t_user 表中添加一个名为 name 的 varchar(10) 类型的列。
    • 修改列alter table t_user change column name username varchar(15); 会将 t_user 表中的 name 列名改为 username,并将其数据类型修改为 varchar(15)
  3. 查看表格详细信息
    使用 desc +表名 命令可以查看表格的详细结构,包括字段名、数据类型、是否允许为空等信息。例如,desc users; 可能会显示如下结果:
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(10) | YES  |     | NULL    |       |
| age     | int(3)      | YES  |     | NULL    |       |
| address | varchar(50) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

(三)MySQL 常用数据类型

  • 整数(int):用于存储整数数值,如年龄、数量等。例如,age int(3) 可以存储三位整数的年龄信息。
  • 小数(double):适用于需要高精度小数的场景,如商品价格。例如,price double(10, 2) 可以存储最多十位数字,其中小数部分占两位的价格信息。
  • 字符串(varchar):可存储可变长度的文本,如姓名、地址等。例如,name varchar(10) 可以存储最长为 10 个字符的姓名。
  • 日期(datetime):用于记录日期和时间信息,如订单创建时间、用户注册时间等。例如,create_time datetime 可以存储具体的日期和时间。

二、增删改查(CRUD)操作

(一)增加数据

  1. 方式一:添加所有字段
    可以使用 insert into 表格名称 values (字段1,字段2,字段3) 或 insert into 表格名称(全部字段)values (字段1,字段2,字段3); 语句插入数据。例如,向 users 表插入数据:
insert into users values ('张三', 20, '北京市');
insert into users (name, age, address) values ('李四', 22, '上海市');
  1. 方式二:挑一部分字段添加
    使用 insert into t_user (age,address) value (12,"beijing") 这种方式,只插入部分字段的数据。例如:
insert into users (name, age) values ('王五', 25);

(二)删除数据

  1. 物理删除:使用 delete from 表格名称 where 条件 语句。例如,删除 users 表中地址为 “北京市” 的记录:
delete from users where address = '北京市';

若要清空表格所有数据,去掉 where 条件,即 delete from users;
2. 逻辑删除:通常通过 update 语句实现。例如,在 users 表中添加一个 is_deleted 字段,将其值设为 1 表示已删除:

alter table users add column is_deleted tinyint(1) default 0;
update users set is_deleted = 1 where age = 22;

(三)修改数据

使用 update 表格名称 set 字段=修改的值 where 条件 语句。例如,将 users 表中姓名为 “王五” 的年龄修改为 26:

update users set age = 26 where name = '王五';

若要修改所有记录,去掉 where 条件,如 update users set age = age + 1; 会将所有用户的年龄加 1。

(四)查询数据

  • 查询所有数据:使用 select * from +表名 语句,例如 select * from users; 会返回 users 表的所有记录。
  • 查询特定字段:使用 select 字段1, 字段2 from 表名 语句,如 select name, age from users; 只查询姓名和年龄字段。
  • 使用别名:使用 select 字段1 别名, 字段2 别名 from 表名 语句,例如 select name 姓名, age 年龄 from users; 会将查询结果的列名显示为 “姓名” 和 “年龄”。
  • 去重查询:使用 distinct 关键字,如 select distinct address from users; 会查询出 users 表中不重复的地址。

三、建表约束

(一)非空约束(NK,not null)

非空约束用于确保字段不能为空值。创建表时,在字段定义后添加 not null。例如:

create table admins (id int(5),adminname varchar(10) not null,password varchar(20)
);

当尝试向 adminname 字段插入空值时,会报错 ERROR 1364(HY000):Field "adminname" doesn't have a default value。创建表后,也可以使用 alter table student1 change age age int( 3 ) not null; 来添加非空约束。

(二)唯一约束(UK,unique)

唯一约束保证字段值的唯一性。创建表时,可以将字段定义为 unique,例如:

create table persons (id int(5) unique,adminname varchar(10) not null,password varchar(20)
);

也可以通过指定名称创建唯一约束:

create table cats (id int(5),name varchar(10),password varchar(20),constraint uk_name unique(name)
);

创建表后,使用 alter table student1 change age age int( 3 ) Unique; 可添加唯一约束。

(三)主键约束(PK,primary key)

主键约束兼具非空和唯一的特性,是表中记录的唯一标识,一般将 id 编号设置为主键,且一张表至少有一个主键。例如:

create table cats (id int(5) primary key,name varchar(10),password varchar(20)
);

或者指定主键名称:

create table cats (id int(5),name varchar(10),password varchar(20),constraint pk_name primary key(id)
);

(四)自动递增

当主键为 int 类型时,常设置为自动递增。在 MySQL 中,创表时追加 AUTO_INCREMENT 即可实现。例如:

create table persons (id int(5) primary key AUTO_INCREMENT,name varchar(10),password varchar(20)
);

插入数据时无需指定 id,它会自动递增。如果删除了 id 为 3 的记录,再插入新记录时,id 会自动递增到 4。

(五)联合主键

当需要两个或两个以上字段共同约束非空和唯一时,可使用联合主键。例如:

create table cats (id int(5),name varchar(10),password varchar(20),constraint pk_name primary key(id, name)
);

只要 id 和 name 的组合不重复即可。

(六)外键约束(FK,foreign key)

外键约束用于建立表与表之间的关系,常见于一对多或多对多关系。例如,有 departments 表和 employees 表,员工属于某个部门,通过外键建立关联:

create table departments (department_id int(11) primary key,department_name varchar(50)
);create table employees (employee_id int(11) primary key,employee_name varchar(50),department_id int(11),constraint fk_department_id foreign key(department_id) references departments(department_id)
);

总结

        通过本文,我们学习了 SQL 的基础命令,包括数据库和表格的操作,以及数据的增删改查。同时,了解了建表约束的各种类型及其作用,这些约束能够确保数据的完整性和一致性。掌握这些知识是进一步学习 SQL 高级应用的基础。

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

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

相关文章

Windows 桌面个性高效组件工具

软件介绍 Widgets 这款基于 Vue3 构建的开源 Windows 桌面小部件工具超实用。 其多样化组件库涵盖超 20 种,从倒计时、打工进度等实用工具,到抖音热榜等实时资讯组件应有尽有,各组件独立运行,满足多场景需求。 高度自定义布局支持…

PCB入门指南:从电阻到常见电路的全解析

知识点1【电阻】 常见的是 色环电阻和贴片电阻 1、色环电阻 色环电阻,早期是碳膜电阻,精度不是很高,一般是4个色环,红 橙 黄 绿 蓝 紫 灰 白 黑,每个颜色代表一个阻值 后期是金属膜电阻,5个色环&#x…

论文阅读的三个步骤

论文阅读的三个步骤 方法说明链接:https://www.academia.edu/4907403/How_to_Read_a_Paper 方法框架如下

Centos 7 ssh连接速度慢(耗时20秒+)

作系统:centos7.9 现象突然间通过 ssh、xshell等客户端工具连接时,连接速度缓慢,需要耗时20秒左右才能连接上 排查思路: 1. 查看操作系统日志 从系统日志里看到较多的错误,这个可能是一个bug (现象类似&a…

通过脚本自动检查项目中全局的中文

现在越来越多的公司在做出海项目,出海项目首先要解决的就是语言国际化的问题,有很多如l18n、l10n的工具可以用,这些工具可以提供解决方案,但是不能约束开发者的开发行为。开发者仍然可能在代码中存留没有做过国际化处理的部分&…

软件分析师-第三遍-章节导图-13/14

系统设计,按步骤分:概要设计、详细设计。另一种分类方式:按设计内容和设计方法分。设计内容:处理流程、输入/输出原型、人机交互。设计方法:结构化、面向对象、设计模式。 软件实现&测试,分为实现、测…

通过全局交叉注意力机制和距离感知训练从多模态数据中识别桥本氏甲状腺炎|文献速递-深度学习医疗AI最新文献

Title 题目 Hashimoto’s thyroiditis recognition from multi-modal data via globalcross-attention and distance-aware training 通过全局交叉注意力机制和距离感知训练从多模态数据中识别桥本氏甲状腺炎 01 文献速递介绍 桥本氏甲状腺炎(HT)&a…

刀客doc:小红书商业技术负责人苍响离职

根据大厂日爆的爆料,小红书商业化再度迎来高层人事变动,原商业平台技术负责人苍响(薯名),职级L2,已于本月正式离职,其下属团队现由电商业务负责人接管。 根据刀客doc获得的资料,苍响…

Manus AI多语言手写识别技术全解析:从模型架构到实战部署

简介 Manus AI作为当前多语言手写识别领域的领军技术,其核心创新在于融合三维卷积网络、动态特征融合引擎和混合解码系统,实现了对112种语言的98.7%识别准确率和8ms延迟的实时处理能力。本文将深入探讨Manus AI的架构设计、特征提取方法、数据预处理策略…

华为云Astro大屏从iotda影子设备抽取数据做设备运行状态的大屏实施步骤

目录 背景与意义 1. 准备阶段 2. IoTDA 开放影子查询API 3. Astro轻应用创建连接器 4. Astro大屏设计界面 5. 数据绑定与交互逻辑 6. 发布与测试 小结(流程复盘) 背景与意义 随着物联网技术的快速发展,越来越多的设备接入云端&#x…

为什么要学习《易经》?

《易经》精华解读:变易之道与人生智慧 《易经》(《周易》)是中国最古老的经典之一,被誉为“群经之首,大道之源”。它不仅是占卜之书,更是一部哲学经典,揭示了宇宙运行的规律和人生处世的智慧。…

逆传播AIGEO营销:破局生成式搜索时代,让AI成为品牌代言人!

当GS(Generative Search生成式搜索)成为用户的新“搜索入口”,你的品牌还在进行传统软文发布吗? Gartner分析师预测"到2026年70%企业将把生成式AI整合进核心营销系统",传统SEO的正被AI搜索彻底重构。用户的搜索行为发生史诗级转变&#xff0…

WPF(Windows Presentation Foundation)的内容模型

WPF(Windows Presentation Foundation)的内容模型(Content Model)是其核心架构之一,定义了UI元素如何组织和呈现内容。以下是WPF内容模型的系统化解析: 1. 内容模型基础概念 WPF通过逻辑树和可视化树管理内…

52.[前端开发-JS实战框架应用]Day03-AJAX-插件开发-备课项目实战-Lodash

常用JavaScript库 1 认识前端工具库 前端工具类库 2 Lodash vs underscore underscore库 VS Lodash库 Lodash库 的安装 手写精简版的Lodash ;(function(g) {function Lodash() {}// 添加类方法Lodash.VERSION 1.0.0Lodash.join function(arr, separater) {// todo ......…

前端Ui设计工具

PS 稿、蓝湖、Sketch 和 Figma 前端 UI 设计工具的对比分析 PS 稿(Adobe Photoshop) 提供精准设计细节:PS 稿能让前端更精准地理解页面布局、元素尺寸、颜色等,通过精确测量和查看信息面板,把握设计元素的空间关系、…

映射关系5

明白!🚀 你要我 继续扩展,在这套 C98 代码里加一个功能: 根据完整的5位ID,反查出对应的路径。 OK,我直接接着上面那版来,给你补充 getPathFromId 方法,并且保持整体风格统一&#…

编译原理:由浅入深从语法树到文法类型

文法与语言基础:从语法树到文法类型 文法(Grammar)和语言(Language)是计算机科学和语言学中解析和理解语言结构的核心概念。无论是编程语言的编译器设计,还是自然语言处理(NLP)中的…

第十三步:vue

Vue 1、上手 1、安装 使用命令:npm create vuelatestvue文件后缀为.vueconst app createApp(App):初始化根组件app.mount("#app"):挂载根组件到页面 2、文件 script标签:编写jstemplate标签:编写htmls…

Pytest-mark使用详解(跳过、标记、参数 化)

1.前言 在工作中我们经常使用pytest.mark.XXXX进行装饰器修饰,后面的XXX的不同,在pytest中有不同的作 用,其整体使用相对复杂,我们单独将其抽取出来做详细的讲解。 2.pytest.mark.skip()/skipif()跳过用例 import pytest #无条…

基于 Spring Boot 的井字棋游戏开发与实现

目录 引言 项目概述 项目搭建 1. 环境准备 2. 创建 Spring Boot 项目 3. 项目结构 代码实现 1. DemoApplication.java 2. TicTacToeController.java 3. pom.xml 电脑落子策略 - Minimax 算法 findBestMove 方法 minimax 方法 运行游戏 总结 引言 在软件开发领域&…