MYSQL——库表操作

news2024/11/16 3:14:10

MYSQL——库表操作

    • 1.1 SQL语句基础
      • 1.1.1. SQL简介
      • 1.1.2. SQL语句分类
      • 1.1.3. SQL语句的书写规范
    • 1.2 数据库的操作
      • 1.2.1 数据库的登录及退出
      • 1.2.2 查看数据库
      • 1.2.3 创建数据库
      • 1.2.4 切换数据库
      • 1.2.5 查看当前用户
      • 1.2.6 删除数据库
    • 1.3 MySQL字符集
      • 1.3.1. 字符集
      • 1.3.2. 字符序
      • 1.3.3 查看MySQL字符集
      • 1.3.4 查看MySQL字符序
      • 1.3.5 查看当前字符集的设置
    • 1.4 表的基本操作
      • 1.4.1 创建表
      • 1.4.2 查看表
      • 1.4.3 删除表
      • 1.4.4 修改表
      • 1.4.5 复制表的结构
    • 1.5 表的约束
      • 1.5.1 非空约束
      • 1.5.2 默认值约束
      • 1.5.3 列描述--comment
      • 1.5.4 主键约束
      • 1.5.5 主键自增长
      • 1.5.6 唯一性约束
      • 1.5.7 外键约束
      • 1.5.8 检查约束
      • 1.5.9 删除表的约束
    • 作业

1.1 SQL语句基础

1.1.1. SQL简介

SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数 据维护的标准语言。使用SQL语句,程序员和数据库管理员可以完成如下的任务
改变数据库的结构
更改系统的安全设置
增加用户对数据库或表的许可权限
在数据库中检索需要的信息
对数据库的信息进行更新

1.1.2. SQL语句分类

MySQL致力于支持全套ANSI/ISO SQL标准。在MySQL数据库中,SQL语句主要可以划分为以下几类
DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作, 如:CREATE、DROP、ALTER、RENAME、 TRUNCATE等
DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作,如:INSERT、 DELETE、UPDATE、SELECT等
DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级 别,如:
GRANT、REVOKE等
Transaction Control:事务控制 COMMIT、ROLLBACK、SAVEPOINT等

1.1.3. SQL语句的书写规范

在数据库系统中,SQL语句不区分大小写(建议用大写) ,但字符串常量区分大小写 SQL语句可单行或多行书写,以“;”结尾。
关键词不能跨多行或简写。
用空格和缩进来提高语句的可读性。 子句通常位于独立行,便于编辑,提高可读性。
注释:
/* */ 和// 为多行注释
– 和 # 为单行注释

1.2 数据库的操作

1.2.1 数据库的登录及退出

登录格式

mysql -u 用户名 -h 服务器的主机地址  p 密码 -A

-p 后面是用户登录密码,注意:-p 和密码之间没有空格。如果出现空格,系统将不会把后面的字符 串当成密码来对待,没有密码时不写

-A参数:不预读数据库信息,加上该参数则不预读数据库中的表等信息,不会有表明及列名的补全, 但读取速度会加快,不加该参数可能使用数据库时出现下列提示(不影响使用)

退出命令:

exit
quit
\q

1.2.2 查看数据库

格式

mysql> show databases  [like 条件];  

注意有databases;(有s)

mysql自带的数据库:

  • Information_schema: 主要存储了系统中的一些数据库对象信息,如:用户表信息、列信息、权限 信息、字符集信息、分区信息等。(数据字典表)
  • performance_schema:主要存储数据库服务器的性能参数
  • mysql: 存储了系统的用户权限信息及帮助信息
  • sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和
    performance_schema结合起来,查询出更加令人容易理解的数据

使用条件查看:

mysql> show databases  like  'sys';

带有通配符的条件
%:匹配任意零个或多个字符 _ :匹配任意单个字符

mysql> show databases  like  's%';

显示时间

mysql> select now();

显示数据库版本

mysql> select version();

1.2.3 创建数据库

  • 格式
create database 数据库名
  • 查看创建数据库的语句
show create database 数据库名

1.2.4 切换数据库

  • 查看当前使用的数据库,格式:
select database();
  • 选择数据库,格式:
use 数据库名

1.2.5 查看当前用户

select user();

1.2.6 删除数据库

  • 格式
drop database 数据库名

1.3 MySQL字符集

  • MySQL字符集包括字符集(CHARACTER)和排序规则(校对规则)(COLLATION)两个概念

1.3.1. 字符集

  • Character Set(字符集):是字符的编码规则,规定了字符在数据库中的存储格式,比如占多少空间,支持哪些字符等
  • 不同的字符集有不同的编码规则,在运维和使用MySQL数据库中,选取合适的字符集非常重要,如果选择 不恰当,轻则影响数据库性能,严重的可能导致数据存储乱码
  • mysql 5.7的默认字符集是latin1,而8.0中是utf8mb4;
  • mysql8的库表创建以及程序中尽可能使用utf8mb4字符集(可支持emoji)
  • mysql中的utf8字符集是utf8mb3字符集的别名,避免使用
  • MySQL数据库在开发运维中,字符集选用规则如下:
    如果系统开发面向国外业务,需要处理不同国家、不同语言,则应该选择utf-8或者utf8mb4
    如果只需要支持中文,没有国外业务,则为了性能考虑,可以采用GBK

gbk支持中文简体字符,但不是国际通用字符集
big5支持中文繁体字符
utf8几乎支持世界所有国家的字符
utf8mb4完全兼容UTF-8,用四个字节存储更多的字符

1.3.2. 字符序

  • 字符序就是字符排序的规则集合
  • 如:使用A>B>a>b的规则来进行排序或者另一种规则a>b>A>B顺序排序
  • 字符序主要对字符的排序有影响

1.3.3 查看MySQL字符集

  • 查看所有支持的字符集
mysql> show character set;
  • 查看指定的字符集
mysql> show character set like 'gbk';
mysql> show character set like 'utf%';

1.3.4 查看MySQL字符序

  • 查看支持的字符序
mysql> show collation;
  • 指定条件查询
mysql> show collation where charset = "utf8mb4";

1.3.5 查看当前字符集的设置

  • 通过变量查看
mysql> show variables like 'character_set%';

1.4 表的基本操作

1.4.1 创建表

  • 格式
create table 表名(表选项)
  • 表定义选项格式为:
列名1 列类型1 约束, 列名2 列类型2 约束,...
  • 示例1:创建数据库并建新表
mysql> select database(); # 查看当前数据库
mysql> create database mydb2_stuinfo; # 创建数据库
Query OK, 1 row affected (0.02 sec)
 mysql> use mydb2_stuinfo; # 使用数据库
Database changed
mysql> create table student1(id int, name varchar(30), sex char(2), age int
unsigned, score float, addr varchar(50));
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| student1               |
+-------------------------+

1.4.2 查看表

  • show语句:显示当前数据库中已有的数据表
show tables [from 数据库名][like wild];
  • describe语句:查看数据表中的各列信息
 {describe|desc}表名[列名]; 
 #or
 show columns from 表名称;
 mysql> use mydb2_stuinfo;
 mysql> desc student1;
 #or
 mysql> show columns from student1;
  • 使用\G可以查看更全面的表定义信息
mysql> show  create  table  student1\G

1.4.3 删除表

  • 格式:
drop table [if exists] 表名;

1.4.4 修改表

  • 更改表名(重命名):
# 法1:
alter table 表名 rename 新表名;

#法2:
rename table 表名 to 新表名;
  • 添加新列
alter table 表名 add 新列名 列类型 [after|first] 列名;
  • 删除列
alter table 表名 DROP 列名;
  • 修改列名
alter table 表名 change 旧列名 新列名 列类型;
  • 修改列类型
alter table 表名 modify 列名 列类型;
  • 修改列位置
alter table 表名 modify 列名 列类型 after 某列;

1.4.5 复制表的结构

  • 方法一:在create table语句的末尾添加like子句,可以将源表的表结构复制到新表中,语法格式如下:
create table 新表名 like 源表;
  • 方法二:在create table语句的末尾添加一个select语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中,下面的语法格式将源表的结构和记录都拷贝到新表中。
create table 新表名 select * from 源表
  • 方法三:如果已经存在一张结构一致的表,复制数据:
mysql> select * from student2;
mysql> insert into student2 select * from student1;

1.5 表的约束

1.5.1 非空约束

mysql> create table myclass1(class_name varchar(20) not null, class_room varchar(20) not null, class_id int);
  • 以上为创建表时的设置,也可以创建之后修改:
1 #语法:
2 alter table <数据表名> change column <字段名> <字段名> <数据类型> not null;
# 也可以通过modify修改
mysql> alter table student1 modify name varchar(30) not null;
  • 删除not null
mysql> alter table student1 modify id int null;

或者

mysql> slter table student1 modify name varchar(30);

1.5.2 默认值约束

  • 例子
mysql> create table teacher1(id int not null, name varchar(30) not null, sex char(2) default '女');
  • 创建表之后增加默认值:
mysql> alter table student1 modify sex char(2) default '女';

1.5.3 列描述–comment

  • 列描述没有实际含义,专门用来描述字段,会根据表创建语句保存,供操作者来查看该列的含义,相当于
    C/C++的注释
mysql> create table myclass2( class_name varchar(20) not null comment '教 室',class_room varchar(20) default '计科2');

1.5.4 主键约束

  • 创建时增加主键
mysql> create table t1 ( id int unsigned primary key comment '学号不能为空', name varchar(20) not null ,sex char(2) default '男');
  • 修改表,追加主键
mysql> alter table teacher1 add primary key(id);
  • 删除主键:
alter table 表名 drop primary key;
  • 复合主键
mysql> create table t2 (id int, hostname varchar(10), ip varchar(20), port int unsigned, primary key(ip, port));

1.5.5 主键自增长

  • 作用:给主键添加自增长的数值
  • auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1 操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键
  • 示例:
#先增加主键
mysql> alter table student1 modify id int primary key;

#设置自增长
mysql> alter table student1 modify id int auto_invrement;
  • 指定自增长的起始值
#指定自增长的起始值为100
mysql> create table t3 (id int priamry key auto_increment, systemname varchar(10) not null)auto_increment=100;

1.5.6 唯一性约束

  • 创建表时实现
mysql> create table t4(id int primary key, name varchar(20) unique comment '名字不能重复,可以为空');

1.5.7 外键约束

  • 作用:限定某个表的某个字段的引用完整性
  • 格式
foreign key (从表的字段名称)references 主表名字(主表的字段名称) #建立外键关联
  • 示例:
#定义主表
mysql> create table myclass3(id int primary key, name varchar(20) not null comment'班级名');
#定义从表
mysql> create table myclass3_stu(id int primary key, name varchar(30) not null comment '学生名', class_id int, foreign key(class_id) references myclass3(id));

1.5.8 检查约束

  • 示例1:创建表时设置检查约束
mysql> create table t5(id int primary key, name varchar(20), salary float, check(salary>0 and salary<1000));
  • 示例2:修改表时添加约束
#格式:
alter table 表名 add constraint <检查约束名> check(检查约束)
mysql> alter table t5 add constraint check_id check(id>0);

1.5.9 删除表的约束

删除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/1939860.html

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

相关文章

myBatis的基本操作(持续更新中。。。)

目录 1. 简介2. 简单使用3. 代理开发4. 小技巧5. 动态查询6. 注解&#xff08;待更新&#xff09;底部 1. 简介 mybatis是一款优秀的持久层框架&#xff0c;用来简化JDBC开发 持久层&#xff1a;负责将数据保存到数据库的那一层代码 2. 简单使用 依赖 <dependencies>…

LabVIEW断路器操动机构运动速度检测

开发了一种基于LabVIEW设计平台开发的断路器操动机构运动速度检测系统。通过集成高速相机和图像处理技术&#xff0c;该系统能够实时监控和分析操动机构的动态性能&#xff0c;为电力系统提供关键的技术支持。 项目背景 随着工业化的发展&#xff0c;对电力系统的稳定性和可靠…

python的tkinter、socket库开发tcp的客户端和服务端

一、tcp通讯流程和开发步骤 1、tcp客户端和服务端通讯流程图 套接字是通讯的利器&#xff0c;连接时要经过三次握手建立连接&#xff0c;断开连接要经过四次挥手断开连接。 2、客户端开发流程 1&#xff09;创建客户端套接字 2&#xff09;和服务端器端套接字建立连接 3&#x…

钡铼分布式I/O系统边缘计算Modbus,MQTT,OPC UA耦合器BL206

BL206系列耦合器是一个数据采集和控制系统&#xff0c;基于强大的32 位微处理器设计&#xff0c;采用Linux操作系统&#xff0c;支持Modbus&#xff0c;MQTT&#xff0c;OPC UA协议&#xff0c;可以快速接入现场PLC、DCS、PAS、MES、Ignition和SCADA以及ERP系统&#xff0c;同时…

习题2.21

(defn rever [a](defn item[l r](if ( nil (first l)) r(item (rest l) (cons (first l) r))))(item a nil)) 这段代码非常有助于理解什么是深度优先&#xff0c;什么是广度优先。 很久没有写习题的代码了&#xff0c;倒不是懒得做习题了&#xff0c;是私事多&#xff0c;状态…

【局域网服务器连接】如何远程连入实验室linux系统服务器?| 局域网 | 内网穿透

文章目录 前言服务器基本配置安装 ssh 服务防火墙放行 局域网内网穿透获取SN码添加映射 总结 前言 简单记录连接实验室服务器步骤。如服务器直接有公网 ip 地址&#xff0c;ssh 直接连入即可&#xff0c;无需参考本文。 与服务器连同一 wifi&#xff0c; 参考 局域网 方式连接…

Android:requestLayout、invalidate 和 postInvalidate 的区别

提醒&#xff1a;下面源码来自SDK里Android-34版本 一、requestLayout 点击查看requestLayout官网文档 1.1 requestLayout方法源码 /*** Call this when something has changed which has invalidated the* layout of this view. This will schedule a layout pass of the v…

【C++航海王:追寻罗杰的编程之路】关于空间配置器你知道多少?

目录 1 -> 什么是空间配置器 2 -> 为什么需要空间配置器 3 -> SGI-STL空间配置器的实现原理 3.1 -> 一级空间配置器 3.2 -> 二级空间配置器 3.2.1 -> 内存池 3.2.2 -> SGI-STL中二级空间配置器设计 3.2.3 -> SGI-STL二级空间配置器之空间申请 …

Spring Boot 3.3 【三】Spring Boot RESTful API 增删改查详细教程

Spring Boot RESTful API 增删改查详细教程 一、RESTful 架构风格简介 1. 简介 RESTful API 是一种基于HTTP协议的网络应用接口设计风格&#xff0c;它遵循REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;原则。RESTful架构风格的出…

花几千上万学习Java,真没必要!(二十)

ArrayList 是一种可以动态增长和缩减的数组&#xff0c;与普通的数组相比&#xff0c;它提供了更加灵活的操作方式。ArrayList 内部使用数组来存储元素&#xff0c;但是它会根据需要自动调整数组的大小&#xff0c;以便能够存储更多的元素。 ArrayList 的主要特点包括&#xf…

如何成为学习高手

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 所有的学习方式&#xff0c;核心都是动脑加动手。 区别在于如何让…

吴恩达大模型LLM系列课程学习(更新42门课程)

目录 GPT-4o详细中文注释的Colab中英文字幕观看视频1 浏览器下载插件2 打开官方视频 课程1&#xff1a;Prompt Compression and Query Optimization课程2&#xff1a;Carbon Aware Computing for GenAI developers课程3&#xff1a;Function-calling and data extraction with …

Java语言程序设计——篇六(1)

字符串 概述创建String类对象     字符串基本操作实战演练 字符串查找字符串转换为数组字符串比较实战演练 字符串的拆分与组合 概述 字符串 用一对双引号“”括起来的字符序列。Java语言中&#xff0c;字符串常量或变量均用类实现。 字符串有两大类&#xff1a; 1&…

2024年【起重机司机(限桥式起重机)】考试题及起重机司机(限桥式起重机)新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机司机(限桥式起重机)考试题参考答案及起重机司机(限桥式起重机)考试试题解析是安全生产模拟考试一点通题库老师及起重机司机(限桥式起重机)操作证已考过的学员汇总&#xff0c;相对有效帮助起重机司机(限桥式起重…

JS 原型与原型链图解:彻底搞懂的终极指南

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 在JavaScript中&#xff0c;原型和原型链是非常重要的知识点&#xff0c;只有理解了…

Express+mysql单表分页条件查询

声明&#xff08;自己还没测试过&#xff0c;只提供大概逻辑&#xff0c;什么多表连接查询可以在原基础上添加&#xff09; class /*** param connection Express的mysql数据库链接对象* current 当前页* pageSize 一页显示行数* where [{key:id,operator:,value15}], key查询…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 卢小姐的生日礼物(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

pg_restore导入错误的解决思路

背景 开发使用postgresql 数据库&#xff0c;当需要部署时&#xff0c;通过pg_dump导出&#xff0c;通过pg_restore导入&#xff0c;发现导入遇到错误&#xff0c;很多表没有导入。部分报错截图如下&#xff1a; 排查问题 开发中用到了postgresql插件postgis里的地理类型&am…

ORBSLAM3 ORB_SLAM3 Ubuntu20.04 ROS Noetic 虚拟机镜像 下载

下图是build.sh 和 build_ros.sh编译结果截图&#xff1a; slam数据集测试视频&#xff1a; orbslam3 ubuntu20.04 test 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1nre0Y9vig5QXIGU52qCLbQ?pwd9rbi 提取码&#xff1a;9rbi

什么是裸机管理程序?

在这个旨在使最终用户体验尽可能无缝的快节奏环境中&#xff0c;企业不断扩展其网络以处理增加的负载&#xff0c;为了应对可扩展性问题并增强其设备的最佳性能&#xff0c;网络管理员开始使用虚拟化技术。 通过使用管理程序虚拟化网络&#xff0c;网络管理员可以实现灵活、可…