当前位置: 首页 > news >正文

mysql笔记3(数据库、表和数据的基础操作)

文章目录

  • 一、数据库的基础操作
    • 1. 显示所有的仓库(数据库)
    • 2. 创建数据库
      • 注意(命名规范):
    • 3. 删除数据库
    • 4. 查看创建数据库的SQL
    • 5. 创建数据库时跟随字符编码
    • 6. 修改数据库的字符编码
  • 二、表的基础操作
    • 1. 引入表的思维
    • 2. 引用数据库
      • 3. 查看该数据库下面的表
      • 4. 创建表
        • ① 初级
          • 上述name varchar(30)中30是字符宽度或者说最大字符串长度的限制。实际输入的数据是可以超过这个宽度的,那么超过这个宽度会有什么后果?
        • ② 高级(企业在用)
      • 5. 查看表结构
        • ① show create table 表名;(优点:会显示创建这张表时的sql语句)
        • ② desc 表名;(优点:直观、好看)
      • 6. 删除表
      • 7. 修改表
        • ① 添加字段
        • ② 删除字段
        • ③ 更改字段
        • ④ 修改表名
  • 三、数据的基础操作
    • 1. 插入数据(实际开发过程中不是这样的,但是我们要会这种写法)
    • 2. 查看表内数据(基本)
    • 3. 更新表内数据
    • 4. 删除表内数据
    • 5. 清空表
      • ① delete from 表名(不推荐:因为它在删除时会遍历整张表,效率非常低)
      • ② truncate table 表名(直接销毁这张表,销毁完再创建一张一模一样的表,只是表内的数据已经不在了)
  • 四、SQL语句区分
  • 五、字符集编码问题
  • 六、内容出处

一、数据库的基础操作

CRUD:create、drop、alter、show

1. 显示所有的仓库(数据库)

show databases;
在这里插入图片描述
information-schema:存储服务器管理数据库的信息
mysql:提供一些系统的信息,例如:root用户名及密码
performance_schema:存储服务器性能信息
sys:系统文件
test(有的版本没有):测试库
注:
其它的库是我自己建的

2. 创建数据库

一、普通创建:
① create database + 数据库名;
二、如果该数据库已存在就不创建,反之创建(就算该数据库已经存在也能通过,只是会弹出警告):
② create database if not exists + 数据库名;
③ create database if not exists + 数据库名(数据库名写在反引号里);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意(命名规范):

        不能用关键字(如create、database等)作为数据库名、表名、表中的字段名。如果非要用,就得给它们加上反引号。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
        后续创建和删除普通的数据库(不以关键字作为数据库名)时给数据库名加上反引号可以使代码看起来更高级。

3. 删除数据库

一、普通删除:
① drop database + 数据库名;
二、如果该数据库已存在就不创建,反之创建(就算该数据库已经存在也能通过,只是会弹出警告):
② drop database if exists + 数据库名;
③ drop database if exists + 数据库名(数据库名写在反引号里);
注:
删除一个不存在的数据库会报1008错误。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 查看创建数据库的SQL

看一下当时是怎么创建的这些数据库的:
show create database + 数据库名;
在这里插入图片描述

5. 创建数据库时跟随字符编码

① create database if not exists student charset=gbk;
② create database if not exists teacher charset=utf8;
在这里插入图片描述
注:
① 常用的字符编码:GBK(中文简体)、utf8(国际通用)
② 乱码和字符编码有关
③ cmd的字符编码时gbk,因此可以显示中文
④ 在windows上学习时字符编码可以选择gbk(因为cmd就是gbk),但是在linux、mac上学习时要选择utf8。实际开发过程中也要选择utf8,因为上传到服务器以后大多数人用的都是utf8。

6. 修改数据库的字符编码

alter database + 数据库名 + charset=改成哪种字符编码
在这里插入图片描述

二、表的基础操作

CRUD:create(创建表)和alter+add(增加表内字段)、drop(删除表)和alter+drop(删除表内字段)、alter、show和desc

1. 引入表的思维

仓库 -> 数据库
货架 -> 表
物品放在货架上 -> 数据放在表里

2. 引用数据库

可以理解为指定某仓库发货:
use + 数据库名
在这里插入图片描述

3. 查看该数据库下面的表

可以理解为查看某仓库的所有货架:
show tables;
在这里插入图片描述

4. 创建表

① 初级

在这里插入图片描述
在这里插入图片描述

上述name varchar(30)中30是字符宽度或者说最大字符串长度的限制。实际输入的数据是可以超过这个宽度的,那么超过这个宽度会有什么后果?

等后面再来看这个问题。

② 高级(企业在用)

在这里插入图片描述
在这里插入图片描述
auto_increment:自动增长
primary key:主键(主键不可以为空) 写上了这个意味着该字段的数据是唯一的(每个学生的学号不可能重复,靠它来区分学生)关系型数据库的实现也依靠主键
comment:注释(后面的引号是普通的单引号,不是反引号,用反引号会报1064错误)
not null:意思是该字段不能为空
default:默认值
engine=innodb:数据库引擎是innodb。现在mysql里用的最多的数据库引擎就是innodb

5. 查看表结构

① show create table 表名;(优点:会显示创建这张表时的sql语句)

在这里插入图片描述

② desc 表名;(优点:直观、好看)

在这里插入图片描述
PRI:primary key缩写
extra:额外的规则(限制)

6. 删除表

① drop table 表名;
② drop table if exists 表名;
③ drop table if exists 表名(表名用反引号引起来);
④ 同时删除多张表:drop table if exists 表名, 表名, 表名;
在这里插入图片描述
注:
① 删除不存在的表会报1051错误
不可以同时删掉多个数据库
在这里插入图片描述

7. 修改表

① 添加字段

① 普通添加:alter table 表名 add 字段名 字段类型;
在这里插入图片描述
② 在指定位置添加:
alter table 表名 add 字段名 字段类型 after 字段名(想放在哪个字段后面)
在这里插入图片描述
没有before这个语法
在这里插入图片描述
③ 直接在开头添加:
alter tabel 表名 add 字段名 字段类型 first;
在这里插入图片描述

② 删除字段

alter table 表名 drop 字段名;
在这里插入图片描述

③ 更改字段

alter table 表名 change 要改的字段名 改成什么
在这里插入图片描述
在这里插入图片描述
只修改字段的类型:
alter table 表名 modify 要改的字段名 改成什么类型
在这里插入图片描述

④ 修改表名

alter table 表名 rename to 改成什么名;
在这里插入图片描述

三、数据的基础操作

CRUD:insert、delete、update、select

1. 插入数据(实际开发过程中不是这样的,但是我们要会这种写法)

① insert into 表名 (字段, 字段) values ( 对应的数据, 对应的数据)
表名后面的字段不省略时:字段顺序可以不与建表时的字段顺序一致,只需要让此处的字段顺序与values后面的数据顺序一致即可
② insert into 表名 values (对应的数据, 对应的数据)
表名后面的字段省略时:values后面的数据顺序必须与建表时的字段顺序一致
③ 一次插入多条数据(直接在values后面补充数据即可,数据之间以逗号隔开):
insert into 表名 (字段, 字段) values ( 对应的数据, 对应的数据), ( 对应的数据, 对应的数据);
insert into 表名 values (对应的数据, 对应的数据), ( 对应的数据, 对应的数据);
在这里插入图片描述
在这里插入图片描述
上面的引号都是普通的单引号

2. 查看表内数据(基本)

其实CRUD中查询是最难的

① select 要查的字段 from 查哪张表里
② 查看某张表里的全部字段(效率不高,性能方面存在缺陷):select * from 表名;
在这里插入图片描述

3. 更新表内数据

① 重点在于根据谁去改,改什么。
② 可以一次改多个字段
③ 一定要注意, where后面的条件, SQL注入攻击就跟它有关

① update 表名 set 字段名=改成什么 where 要改谁
② update 表名 set 字段名=改成什么, 字段名=改成什么 where 要改谁 or 要改谁
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 删除表内数据

一定要特别注意where后面的条件

delete from 表名 where 要改谁
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 清空表

① delete from 表名(不推荐:因为它在删除时会遍历整张表,效率非常低)

        我们可以发现,除非我们特意指定id,否则新插入的数据id会承接该表销毁之前的id序号。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

② truncate table 表名(直接销毁这张表,销毁完再创建一张一模一样的表,只是表内的数据已经不在了)

        我们可以发现用此种方式清空表后,重新插入数据的id是从1开始的
在这里插入图片描述
在这里插入图片描述

四、SQL语句区分

        数据库无非就是增删改查。我们可以发现数据库、表和数据这三个东西的增删改查都不一样。

① DDL(全称:data definition language, 数据库定义语言):就是给数据库用的语言 – 对数据库而言
CRUD:create、drop、alter、show
② DML(全称:data manipulation language, 数据操纵语言):–对数据而言
CRUD:insert delete update select
③ DCL(全称:data control language, 数据库控制语言):控制不同用户对数据库中表的开发权限

五、字符集编码问题

查看字符集编码:show variables like ‘character_set_%’;
在这里插入图片描述
① 由于character_set_client(终端) character_set_results(返回值) 都是gbk,因此上述数据可以用中文输入。
② 如果其它平台想用中文输入,把character_set_client和character_set_results改成gbk即可。
命令:set character_set_client=gbk;
实际开发过程中一定是utf8,符合国际标准。这也是为什么windows相对而言没那么适合做开发,不过微软这些年一直在方便开发者的工作而努力。

六、内容出处

mysql

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • node.js、php、Java、python校园点餐与数据分析系统 校园食堂订餐系统(源码、调试、LW、开题、PPT)
  • 护肤产品如何推广吗
  • 通过EasyExcel设置自定义表头及设置特定单元格样式、颜色
  • OpenAI澄清:“GPT Next”不是新模型。
  • 完整指南:CNStream流处理多路并发框架适配到NVIDIA Jetson Orin (三) 代码编译、各种问题解决、代码修改
  • Oracle VM VirtualBox 下 Ubuntu22 虚拟机配置双网络
  • Ubuntu20.04+ros-noetic配置Cartographer
  • sqli-lab靶场学习(一)——Less1-4
  • Java小程序案例:电子日历记事本
  • Win11下面的StartAllBack的安装、使用流程
  • 传统CV算法——特征匹配算法
  • 瑜伽馆预约系统小程序搭建,全民健身下的市场机遇
  • VMware命令
  • 缓存类型以及读写策略
  • SSH远程连接服务
  • ➹使用webpack配置多页面应用(MPA)
  • CentOS7简单部署NFS
  • python docx文档转html页面
  • Python socket服务器端、客户端传送信息
  • vue脚手架vue-cli
  • 编写高质量JavaScript代码之并发
  • 多线程事务回滚
  • 基于 Babel 的 npm 包最小化设置
  • 嵌入式文件系统
  • 入门级的git使用指北
  • 移动端解决方案学习记录
  • #FPGA(基础知识)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (7)摄像机和云台
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (十) 初识 Docker file
  • (十六)视图变换 正交投影 透视投影
  • (四)stm32之通信协议
  • (算法设计与分析)第一章算法概述-习题
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET Core 版本不支持的问题
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 快速重构概要1
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .Net 执行Linux下多行shell命令方法
  • .net网站发布-允许更新此预编译站点
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .sys文件乱码_python vscode输出乱码
  • /etc/motd and /etc/issue
  • @Mapper作用
  • @Not - Empty-Null-Blank
  • [ NOI 2001 ] 食物链
  • [20150904]exp slow.txt
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [C++]spdlog学习
  • [Day 16] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • [DevOps云实践] 彻底删除AWS云资源