MySQL数据库-库表操作

news2024/9/21 16:18:30

一、SQL语句基础

1.SQL简介

SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。使用SQL语句,程序员和数据库管理员可以完成如下任务:

(1)改变数据库的结构

(2)更改系统的安全设置

(3)增加用户对数据库或表的许可权限

(4)在数据库中检索需要的信息

(5)对数据库的信息进行更新

2.SQL语句分类

MySQL致力于支持全套ANSI/ISO SQL标准。在MySQL数据库中,SQL语句主要可以划分为以下几类

(1)DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作, 如:CREATE、DROP、ALTER、RENAME、 TRUNCATE等。

(2)DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作,如:INSERT、 DELETE、UPDATE、SELECT等。

(3)DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级 别,如:GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINT等,Transaction Control:事务控制。

3.SQL语句的书写规范

(1)在数据库系统中,SQL语句不区分大小写(建议用大写),但字符串常量区分大小写

(2)SQL语句可单行或多行书写,以 ; 结尾

(3)关键词不能跨多行或简写

(4)用空格和缩进来提高语句的可读性

(5)字句通常位于独立行,便于编辑,提高可读性。

(6)注释:-- 和 # 为单行注释, /* */ 和 // 为多行注释

二、数据库操作

1.数据库的登入及退出

登录格式:

 mysql  -u  用户名  -h  服务器的主机地址  -p密码  -A
  • -u 后面跟登录数据库的用户名
  • -h 后面的参数为服务器的主机地址
  • -p 后面是用户登录密码,注意:-p和密码之间没有空格,若出现空格系统不会把其当成密码对待
  • -A 不预读数据库信息,加上该参数则不预读数据库中的表等信息,不会有表名及列名的补全,但读取速度会加快。

登出格式:(1)exit        (2)quit        (3)\q

2.查看数据库

show  databases  [like 条件];

(1)普通查看(查看所有数据库):show databases;

(2)使用条件查看(查看名字为sys的数据库):show databases like 'sys';

(3)带有通配符的条件查看:

  • %:匹配任意零个或多个字符。(如查询s开头的数据库:show databases like 's%' )
  • _:匹配任意单个字符。

3.创建数据库

create  database  数据库名

(1)创建数据库testdb:create databases testdb;

(2)查看创建数据库语句:show create database 数据库名;

4.切换数据库

(1)查看当前使用的数据库:select database();

(2)选择数据库:use 数据库名;

5.查看当前用户

select  user();

6.删除数据库

drop databases 数据库名;

(1)删除数据库testdb:drop database testdb;

三、数据库对象

1.数据库组成

2.数据库对象的命名规则

(1)命名使用具有意义的英文词汇,词汇中间以下划线分隔。

(2)名称由字母、数字、# 、_ 、$组成,必须以英文字母开头。

(3)不要使用MySQL的保留字。

(4)所有数据库对象使用小写字母,实际上MySQL中是可以设置大小写是否敏感的,为了保证统一性应使用小写表示。

(5)在同一个数据库对象集合内对象不能同名。

3.生产中对象命名规范

数据库:

(1)数据库命名尽量不超过30个字符。

(2)数据库命名一般为项目名称+代表库含义的简写,比如IM项目的工作数据库,可以是 im_flow。

(3)命名应使用小写。

表:

(1)常规表:以t_开头,t代表table的意思,命名规则即 t + 模块(包含模块含义的简写) + 表(包含表含义的简写),比如用户模块的教育信息表:t_user_eduinfo。

(2)临时表:temp前缀+模块+表+日期后缀:temp_user_eduinfo_20240520。

(3)备份表(用于保存和归档历史数据或者作为灾备恢复的数据):bak前缀+模块+表+日期后缀:bak_user_eduinfo_20231219。

(4)同一个模块的表尽可能使用相同的前缀,表名称尽可能表达含义。

(5)多个单词以下划线_分割。

(6)常规表明尽量不超过30个字符,temp表和bak表视情况而定,也尽量简短为宜。

四、表的基本操作

1.数据类型

(1)整型

(2)浮点型

(3)文本型

(4)date类型

2.创建表

create  table  表名  (列名1  列类型1  约束, 列名2  列类型2  约束, ....);

(1)创建一个职工信息表(包含id、name、salary):create table t_employee_info(id int, name varchar(25), salary float);

3.查看表

(1)show语句:显示当前数据库中已有的数据表。

show  tables  [from  数据库名]; 

注:show tables默认查看当前使用数据库的表

(2)describe语句:查看数据表中各列的信息。

{describe/desc}  表名  [列名];   #一般使用 desc 表名
show  columns  from  表名称;

字段意义分析:

  • Field :字段名称
  • type:字段类型
  • null:是否允许为空
  • key:索引类型
  • default:默认值
  • extra:填充

(3)使用\G可以查看更全面建表时的定义信息。

show  create  table  表名\G

4.删除表

drop  table  [if  exists]  表名;

注意:

  • 用户必须拥有执行 drop table 命令的权限,否则数据表不会被删除
  • 推荐使用if exists字句,即先判断是否存在,存在则删除

5.修改表

(1)更改表名

alter  table  表名  rename  新表名;
rename  table  表名  to  新表名;

(2)增加新列

alter  table  表名  add  新列名  列类型;    #增加到最后一列
alter  table  表名  add  新列名  列类型  after  指定列列名;    #增加到指定列前一列
alter  table  表名  add  新列名  列类型  first;    #增加到第一列

(3)删除列

alter  table  表名  drop  列名;

(4)修改列名

alter  table  表名  change  旧列名  新列名  列类型;

(5)修改列类型

alter  table  表名  modify  列名  列类型;

(6)修改列位置

alter  table  表名  modify  列名  列类型  after  某列;

6.复制表的结构

方法一:在create table语句的末尾添加like子句,可以将源表的表结构复制到新表中。

create  table  新表名  like  原表;

方法二:在create table语句的末尾添加一个select语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中。

create  table  新表名  select * from 原表;

方法三:若已经存在一张结构一致的表,复制数据。

insert  into  新表  select  *  from  原表;

7.删除表的注意事项

  • 删除数据库表之前,一定要备份数据,以免数据丢失。
  • 在删除数据库表之前,要确保该表没有被其他的表所引用,否则可能会破坏外键约束。
  • 在删除数据库表之前,要确保该表的所有索引都已经被删除。如果还存在索引,可能会导致删除失败。
  • 在删除数据库表之前,要确保该表的所有相关程序已经停止运行,以免影响其他程序的正常运行。

五、表的约束

1.概念

约束是在表上强制执行的数据校验规则,本质上是Mysql通过限制用户操作的方式,来达到维 护数据本身安全及数据完整性的一套方案。

数据的完整性要从以下四个方面考虑:

  • 实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录。
  • 域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女”。
  • 引用完整性(Referential Integrity):例如:员工所在部门,在部门表中要能找到这个部门。
  • 用户自定义完整性(User-defined Integrity):例如:用户名唯一、密码不能为空等,本部门经理 的工资不得高于本部门职工的平均工资的5倍。

2.语法

(1)列级约束:在定义列的同时定义约束

create  table  表名  (列名  类型  约束);

(2)表级约束:在定义了所有列之后定义的约束

create  table  表名  constraint  约束名  约束类型  (列信息);

(3)创建表之后添加约束

alter  table  表名  add  constraint  约束名  约束类型(要约束的列名);

注意:

约束名推荐采用:表名_列名_约束类型简介

3.非空约束

作用:限定某个字段/某列的值不允许为空

值:null(默认值)和not null(不为空)

4.默认值约束

作用:给某个字段/某列指定默认值,一旦设置默认值,在插入数据时,如果此字段没有显式赋值,则赋值为默认值。

值:default '默认值'

5.列描述

作用:列描述没有实际含义,专门用来描述字段,会根据表创建语句保存,供操作者来查看该列的含义,相当于 C/C++的注释。

值:comment ’注释值‘

6.主键约束

作用:数据库存储数据不是唯一的目的,还要考虑到提取数据,一般要求数据库表中的记录要有一个特定的唯一标识,来表示唯一性,这个唯一的特定标识就是主键,类似于序号学号这样的唯一标识,可以根据主键来唯一地筛选出一条记录。

值:primary key

注意:当创建主键约束时,系统默认会在所在的列或列组合上建立对应的主键索引(能够根据主键查询的,就根据主键查询,效率更高)。如果删除主键约束了,主键约束对应的索引就自动删除了,需要注意的一点是,不要修改主键字段的值。因为主键是数据记录的唯一标识,如果修改了主键的值,就有可能会 破坏数据的完整性。

7.主键自增长

作用:给主键添加自增长的数值,当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键

值:auto_increment

注意:

  • 自增长字段必须是整数,自增长字段可以不设置初始值,默认从1开始递增
  • 被自增长的字段必须作为主键或者其他具有唯一性的键使用,(必须保证这一列字段具有唯一性的字段)
  • 自增长字段也可以插入数据,只要不与已有数据重复即可,之后新增数据会从最大值开始递增
  • 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
  • 一张表当中最多只能有一个自增长的列
  • 约束的字段必须具备 NOT NULL 属性

8.唯一性约束

作用:限制某个字段/某列的值不能重复。

值:unique

唯一键和主键的关系:

  • 主键更多的是标识唯一性
  • 唯一键更多的是保证在业务上,不要和别的信息出现重复
  • 主键只能有一个,唯一键能设置多个
  • 主键用来查找,唯一键用来保证数据的完整性
  • 主键和唯一键不是对立关系而是补充关系,目的是让数据库创建出一个表具有非常强的约束,彻底杜绝 用户的误插入,在一张表当中,可以有一个主键,也可以同时具有唯一键, 它们不是用来对比的,只是负 责数据在不同层面的唯一性,既要保证选择成为主键的属性字段不能重复不能为空,同时也要保证本身 具有唯一性的列的字段不能出现冲突

注意:当唯一键冲突时,自增长字段值不连续。

9.外键约束

作用:限定某个表的某个字段的引用完整性,外键约束主要定义在从表上,主表则必须是有主键约束或唯一键约束.当定义外键后,要求外键列数据必须在主表的主键列存在或为null。

foreign  key  (从表的字段名称) references  主表名字(主表的字段名称)

注意:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一 个表,这样的表称为自参照表,这种结构称为自参照完整性。
  • 必须为主表定义主键。
  • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的
  • 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
  • 外键中列的数目必须和主表的主键中列的数目相同。
  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

10.检查约束

作用:检查约束是用来检查数据表中字段值有效性的一种手段,一般用于设置值的范围。

(1)建表时创建检查约束

create  table  表名(列名1 类型1, 列名2 类型2, check(检查约束);

例如(约束薪水值处于0-10000):create table t5(id int primary key, name varchar(20), salary float, check(salary>0 and salary<10000) );

(2)修改表时添加检查约束

alter  table  表名  add  constraint  检查约束名  check(检查约束);

11.删除表的约束

(1)删除not null约束

alter  table  表名  modify  列名  类型;

(2)删除unique约束

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

(3)删除primary key约束

alter  table  表名 drop  primary  key;

(4)删除foreign key约束

alter  table  表名  drop  foreign  key  外键名;

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

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

相关文章

Leetcode—426. 将二叉搜索树转化为排序的双向链表【中等】Plus

2024每日刷题&#xff08;148&#xff09; Leetcode—426. 将二叉搜索树转化为排序的双向链表 实现代码 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Nod…

开放式耳机怎么选购性价比高?五大好评不断的爆款分享

长期使用入耳式耳机的朋友应该都会有这种担忧&#xff0c;经常塞着耳朵听歌&#xff0c;耳机上的细菌得不到及时的清理&#xff0c;不够健康卫生&#xff0c;还有诱发耳部发炎感染的风险。而开放式耳机的出现恰好缓解了这种担忧。如果你也想知道开放式耳机是否真有网上宣传的那…

Photos框架 - 自定义媒体选择器(UI列表)

引言Photos框架 - 自定义媒体资源选择器&#xff08;数据部分&#xff09;-CSDN博客 关于自定义媒体选择器上一篇博客我们已经介绍了使用Photos获取媒体资源数据和处理媒体资源数据&#xff0c;有了数据&#xff0c;UI的实现就比较灵活了&#xff0c;我就以上面的设计样式为例…

学习React(描述 UI)

React 是一个用于构建用户界面&#xff08;UI&#xff09;的 JavaScript 库&#xff0c;用户界面由按钮、文本和图像等小单元内容构建而成。React 帮助你把它们组合成可重用、可嵌套的 组件。从 web 端网站到移动端应用&#xff0c;屏幕上的所有内容都可以被分解成组件。在本章…

08 字符串和字节串

使用单引号、双引号、三单引号、三双引号作为定界符&#xff08;delimiter&#xff09;来表示字符串&#xff0c;并且不同的定界符之间可以相互嵌套。 很多内置函数和标准库对象也都支持对字符串的操作。 x hello world y Python is a great language z Tom said, "Le…

数据结构----算法复杂度

1.数据结构前言 数据是杂乱无章的&#xff0c;我们要借助结构将数据管理起来 1.1 数据结构 数据结构(Data Structure)是计算机存储、组织数据的⽅式&#xff0c;指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤&#xff0c;所…

【Python机器学习】k-近邻算法简单实践——电影分类

k-近邻算法&#xff08;KNN&#xff09;的工作原理是&#xff1a;存在一个样本数据集合&#xff0c;也被称为训练样本集&#xff0c;并且样本集中每个数据都存在标签&#xff0c;即我们知道样本集中每一数据与所属分类的对应关系&#xff0c;输入没有标签的数据后&#xff0c;将…

内存管理概念 (二)

目录 一 . 基本分页存储管理分页存储的几个基本概念页面 与 页面大小地址结构页表 基本地址变换机构具有快表的地址变换机构两级页表 二. 基本分段存储管理分段段表地址变换机构页表和分段的对比段的共享与保护 三. 段页式存储管理分页&#xff0c;分段管理优缺点分页分段段页式…

MATLAB中reset用法

目录 语法 说明 示例 重置坐标区和图窗属性 参数说明 局限性 reset函数的功能是重置图形对象属性。 语法 reset(h) 说明 reset(h) 将指定图形对象的所有属性重置为其默认值。没有默认值的属性不重置。 MATLAB 不会重置任何图形对象的 Position 或 Units 属性。此外&am…

Java-根据前缀-日期-数字-生成流水号(不重复)

&#x1f388;边走、边悟&#x1f388;迟早会好 小伙伴们在日常开发时可能会遇到的业务-生成流水号&#xff0c;在企业中可以说是比较常见的需求&#xff0c; 可以采用"前缀日期数字"的方式&#xff08;ps:此方式是需要用到缓存的&#xff09;前缀&#xff1a;为了…

SpringBoot集成Kaptcha验证码

Hi &#x1f44b;, Im shy 有人见尘埃&#xff0c;有人见星辰 1. 什么是Kaptcha验证码? Kaptcha是一个强大的开源Java验证码生成库,由Google开发。它能够生成高度可配置的图片验证码,主要用于防止自动化程序滥用web应用,提高应用的安全性。 2. Kaptcha的主要特性 Kaptch…

Kafka快速入门+SpringBoot简单的秒杀案例

1. 主题相关 1.1 创建主题 kafka-topics.sh --create --bootstrap-server [服务器地址] --replication-factor [副本数] --partitions [分区数] --topic [主题名]liberliber-VMware-Virtual-Platform:/home/zookeeper$ docker-compose exec kafka /bin/bash #进入kafka容器 b…

还手动抄字幕?学会这3个视频转文字方法,轻松提取视频中的字幕!

大家有尝试过考试前极限抱佛脚吗&#xff1f; 在下不才&#xff0c;曾经试过一次&#xff0c;轻松在及格线低空飘过【大家不要学不要学不要学&#xff0c;重要的事情说三遍&#xff01;&#xff01;&#xff01;】 至于我当时究竟是怎么做到的呢&#xff1f;其实这里面有点小…

走进数组的奇妙之旅(1)-学习笔记

引言&#xff1a; 在前几篇文章中&#xff0c;我们深入探讨了函数的奥秘。在讲述函数知识的过程中&#xff0c;我们邂逅了一个新的概念&#xff0c;你或许还记得在演示 strcpy函数时&#xff0c;出现的这行代码&#xff1a;char1[20]{0};。当时&#xff0c;你是否感到好奇&…

国产光电耦合器2024年的机遇与挑战

随着科技的飞速发展&#xff0c;2024年对于国产光电耦合器行业来说&#xff0c;无疑是充满机遇与挑战的一年。本文将深入探讨该行业在技术创新、市场竞争、5G时代、新兴应用领域和国际市场拓展方面的现状及未来前景。 技术创新的黄金期 物联网和人工智能技术的迅猛发展&#x…

【实在RPA案例集】实在智能助力中国烟草11省40余家多场景自动化!

近年来&#xff0c;为深入贯彻行业数字化转型战略部署和发展新质生产力体制机制&#xff0c;诸多省市烟草公司及中烟公司大力推进烟草行业数字化转型&#xff0c;然而烟草行业在数字化转型过程中始终存在一个核心痛点&#xff0c;即数据整合的复杂性、系统间的兼容性问题&#…

众人吹捧的Exo并不是真正的分布式推理,而无人问津的Cake或许才是

之前就看到不少抖音AI区的博主吹火爆外网的Exo项目支持多台苹果机运行一个 Llama 70B。我就觉得这个事情或许有些不对劲&#xff0c;而随着最近 Meta 出了 405B&#xff0c;又有朋友向我推荐Exo&#xff0c;我不禁想知道一个 Bonjour 的 Zeroconf 怎么就让 MLX 支持 P2P 的分布…

IP 泄露: 原因与避免方法

始终关注您的IP信息&#xff01; 您的IP地址不仅显示您的位置&#xff0c;它包含几乎所有的互联网活动信息&#xff01; 如果出现IP泄漏&#xff0c;几乎所有的信息都会被捕获甚至非法利用&#xff01; 那么&#xff0c;网站究竟如何追踪您的IP地址&#xff1f;您又如何有效…

【前端学习笔记】CSS基础一

一、什么是CSS 1.CSS 介绍 CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式表&#xff09;是一种用来控制网页布局和设计外观的样式语言。它使得开发者可以分离网页的内容&#xff08;HTML&#xff09;和表现形式&#xff08;样式&#xff09;&#xff0c;提高了…

C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性

文章目录 C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性转换Tip切换内容介绍显示方式字体色背景色 常用光标控制附示例和运行结果 C语言玩一下标准输出——颜色、闪烁、加粗、下划线属性 标准输出格式其属性可控制&#xff0c;控制由一系列的控制码指定。标准输出函数可…