MYSQL——库表操作

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.mfbz.cn/a/843363.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode刷题记录(第三天)55. 跳跃游戏

题目&#xff1a; 55. 跳跃游戏 标签&#xff1a;贪心 数组 动态规划 题目信息&#xff1a; 思路一&#xff1a;动态规划 确定dp数组含义&#xff1a; dp[i] 第[i]个位置能否达到确定递推公式&#xff1a; dp[i] 能不能达到&#xff0c;取决于前面d[i-j]&#xff0c;d[i-j…

7月18日学习打卡,数据结构堆

hello大家好呀&#xff0c;本博客目的在于记录暑假学习打卡&#xff0c;后续会整理成一个专栏&#xff0c;主要打算在暑假学习完数据结构&#xff0c;因此会发一些相关的数据结构实现的博客和一些刷的题&#xff0c;个人学习使用&#xff0c;也希望大家多多支持&#xff0c;有不…

SourceCodester v1.0 SQL 注入漏洞(CVE-2023-2130)

前言 CVE-2023-2130是一个影响SourceCodester Purchase Order Management System v1.0的SQL注入漏洞。此漏洞的存在是由于应用程序未能正确过滤和验证用户输入&#xff0c;使得攻击者可以通过SQL注入来执行任意SQL命令&#xff0c;从而对数据库进行未授权的访问和操作。 在利…

java学习--类方法和类方法

类变量 类中static变量会在类加载的时候创建&#xff0c;生存的地方在jdk版本8.0以后都是在堆中&#xff0c;之前都是在方法区&#xff0c;生成的空间不会随着新创建得对象一样变多&#xff0c;同一类的该static变量只会生成一个&#xff0c;每个新创建得对象可共享该变量 类方…

docker compose 容器 编排分组

遇到问题&#xff1a;执行docker compose up -d 后docker compose 创建的容器们 在desktop-docker 中都在docker下一堆 搜索想着能不能把这个docker名字改一下&#xff0c;但是都没有找到这样的一个方案&#xff1b; 最后发现&#xff0c;我执行docker compose up -d 命令所在…

我在百科荣创企业实践——简易函数信号发生器(5)

对于高职教师来说,必不可少的一个任务就是参加企业实践。这个暑假,本人也没闲着,报名参加了上海市电子信息类教师企业实践。7月8日到13日,有幸来到美丽的泉城济南,远离了上海的酷暑,走进了百科荣创科技发展有限公司。在这短短的一周时间里,我结合自己的教学经验和企业的…

前端三大主流框架Vue React Angular有何不同?

前端主流框架&#xff0c;Vue React Angular&#xff0c;大家可能都经常在使用&#xff0c;Vue React&#xff0c;国内用的较多&#xff0c;Angualr相对用的少一点。但是大家有思考过这三大框架的不同吗&#xff1f; 一、项目的选型上 中小型项目&#xff1a;Vue2、React居多…

昇思25天学习打卡营第23天 | 基于MindSpore的红酒分类实验

学习心得&#xff1a;基于MindSpore的红酒分类实验 在机器学习的学习路径中&#xff0c;理解和实践经典算法是非常重要的一步。最近我进行了一个有趣的实验&#xff0c;使用MindSpore框架实现了K近邻&#xff08;KNN&#xff09;算法进行红酒分类。这个实验不仅加深了我对KNN算…

layui 让table里的下拉框不被遮挡

记录&#xff1a;layui 让table里的下拉框不被遮挡 /* 这个是让table里的下拉框不被遮挡 */ .goods_table .layui-select-title,.goods_table .layui-select-title input{line-height: 28px;height: 28px; }.goods_table .layui-table-cell {overflow: visible !important; }.…

用DrissionPage过某里滑块分析

最近我又在找工作了&#xff0c;悲哀啊~&#xff0c;面试官给了一道题&#xff0c;要求如下&#xff1a; 爬虫机试&#xff1a;https://detail.1688.com/offer/643272204627.html 过该链接的滑动验证码&#xff0c;拿到正确的商品信息页html&#xff0c;提取出商品维度的信息&a…

详解SVN与Git相比存在的不足

原文全文详见个人博客&#xff1a; 详解SVN与Git相比存在的不足截至目前&#xff0c;我们已既从整理梳理的SVN和Git在设计理念上的差异&#xff0c;也重点对二者的存储原理和分支管理理念的差异进行深入分析。这些差异也直接造成了SVN和Git在分支合并、冲突解决、历史记录管理…

数据结构之二元查找树转有序双向链表详解与示例(C/C++)

文章目录 1. 二元查找树&#xff08;BST&#xff09;简介2. 有序双向链表&#xff08;DLL&#xff09;简介3. 二元查找树的实现4. 转换为有序双向链表的步骤5. C实现代码6. C实现代码7. 效率与空间复杂度比较8. 结论 在数据结构与算法中&#xff0c;树和链表都是非常重要的数据…

【Linux】进程间通信之-- 共享内存与信号量的介绍(下)

前言 上一篇&#xff0c;我们由进程间通信&#xff0c;引入并讲述了管道、匿名管道和命名管道&#xff0c;本节&#xff0c;将继续学习进程间通信的另一种方式之&#xff0c;共享内存。还要学习几个系统调用接口&#xff0c;并演示两个进程通过共享内存来进行通信。。。 目录 1…

WGS84经纬度坐标 GCJ02火星坐标 BD09百度坐标互相转换

WGS84经纬度坐标 GCJ02火星坐标 BD09百度坐标互相转换 背景&#xff1a;uniapp做的微信小程序&#xff0c;使用到了相机拍照并获取位置坐标信息&#xff1b;在腾讯地图上展示坐标点位置信息&#xff1b; 由于业务需要我们的PC端用的不是腾讯地图&#xff0c;需要使用WGS84坐标或…

Java二十三种设计模式-代理模式模式(8/23)

代理模式&#xff1a;为对象访问提供灵活的控制 引言 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它为其他对象提供一个代替或占位符&#xff0c;以控制对它的访问。 基础知识&#xff0c;java设计模式总体来说设计模式分为三大类&#…

【网络】socket和udp协议

socket 一、六个背景知识1、Q1&#xff1a;在进行网络通信时&#xff0c;是不是两台机器在进行通信&#xff1f;2、端口号3、端口号vs进程PID4、目的端口怎么跟客户端绑定的呢&#xff1f;也就是怎么通过目的端口去找到对应的进程的呢&#xff1f;5、我们的客户端&#xff0c;怎…

uniapp小程序上传pdf文件

<template><view class"mainInnBox"><view class"formBox"><!-- 注意&#xff0c;如果需要兼容微信小程序&#xff0c;最好通过setRules方法设置rules规则 --><u-form :model"form" ref"uForm" :rules&quo…

Window版本nginx修改文件访问句柄数被限制,解决大并发量访问时无法响应问题

目录 一、问题背景 二、问题分析 三、解决办法 一、问题背景 Windows版本因为文件访问句柄数被限制为1024了&#xff0c;当大并发量访问时就会无法响应。会有如下错误提示&#xff1a;maximum number of descriptors supported by select() is 1024 while connecting to ups…

C# 基础语法(一篇包学会的)

C#&#xff08;读作"C Sharp"&#xff09;是一种现代的、通用的面向对象编程语言&#xff0c;由微软公司开发。它结合了C和C的强大特性&#xff0c;并去掉了一些复杂性&#xff0c;使得开发者可以更加高效地编写代码。 一、入坑C# (一) 安装和设置 首先&#xff0c…