热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【MySQL】数据库基础(Part2)

目录前言一、数据库操作1.显示当前所有数据库:2.创建数据库:3.选中数据库4.删除数据库二、常用数据类型1.数值类型2.字符串类型3.日期类型4.补充




目录


  • 前言
  • 一、数据库操作
    • 1. 显示当前所有数据库:
    • 2. 创建数据库:
    • 3. 选中数据库
    • 4. 删除数据库

  • 二、常用数据类型
    • 1. 数值类型
    • 2. 字符串类型
    • 3. 日期类型
    • 4. 补充

  • 三、数据表的操作
    • 1. 创建表
    • 2. 查看当前数据库中有哪些表
    • 3. 查看指定的表结构
    • 4. 删除表

  • 四、补充
  • THINK





前言

彼方尚有荣光在

主要内容是:数据库的操作、常用数据类型以及表操作。




一、数据库操作
  1. (SQL不区分大小写)
  2. 数据库操作:这里的“数据库”指的是一个数据库服务器上的某个“数据集合”
    (此时使用命令行客户端:因为在工作中图形化客户端不一定能用(数据库服务器上没有图形化界面,不能在服务器上直接跑客户端;本地的电脑还不一定能直接连上数据库服务器),但是命令行客户端一定可以使用)

1. 显示当前所有数据库:

show databases;

① 【注意:show和databases之间至少有一个空格; databases是复数形式; 末尾要带有英文分号;(SQL语句一定是以分号进行结尾的,如果没有就认为还没输入完成)(编程中涉及到的标点符号都是英文的)】
② *注意:系统自带的数据库不要随便乱动,搞坏了就得重装。
③ sec是“秒”,补充单位换算:1s=1000ms, 1ms=1000us, 1us=1000ns, 1ns=1000ps
④ 数据库操作相对而言是较低效的,所以在实际开发中数据库容易成为一个系统的性能瓶颈
⑤ 该操作涉及到客户端和服务器的交互


2. 创建数据库:

create database 数据库名;

①如果输入的SQL语句错误,那么就会出现错误提示
②输入SQL语句小技巧:上下方向键可以得到上一条/下一条sql语句; 如果有个SQL语句输入了一半之后不想继续执行了,那么按ctrl+c(终止当前输入)来终止SQL
③数据库名不能是create,因为create相当于SQL中的关键字,因此:不能使用create等关键字来作为数据库名/表名/列名; 如果实在想要使用这些关键字,那就使用反引号` `(注意:是在1的左边的按键)把关键字引用起来。(PS. /斜杠 \反斜杠)
④(create database if not exists db_name;):其实在工作过程中,有很多时候写的SQL语句并不是在控制台里逐条敲入,而是把一组SQL写到一个文件里进行批量执行,批量执行过程中,任意的SQL语句出现错误都会导致执行终止,所以此时使用if not exists就是有用的。
⑤ 【if not exists】不存在就创建,存在就没啥事儿
⑥ 补充说明:【character set】 是指定数据库采用的字符集;
【collate】指定数据库字符集的校验规则
⑦字符集:涉及到非英语的语言文字时使用。数据库默认字符集是拉丁文,而我们最常使用的字符编码方式是utf8(utf是变长编码,所以能够表示的范围比GBK大很多);GBK是使用两个字节表示一个文字,则空间不够容纳尽量多的字符:汉字够,但是其他字符够呛 0~65535)
⑧校验规则:就是按什么样的规则来比较字符串之间的大小和相等(很少用)
⑨了解:mysql中的utf8其实是个“假的”utf8,它并不是“满血版本”,因此有些符合utf8的标准字符可能也无法表示;所以:后来mysql有提供了一个utf8mb4的满血版本。(当前使用utf8也是ok的,只是一些特殊字符如emoji表情不能表示)


3. 选中数据库


  1. 针对后续操作,首先要选择想要使用的数据库

use 数据库名;

  1. (会发现此时的语句就算不加分号也是能够执行的,这是因为:少数的SQL语句使用时是不必加分号的;但是建议所有的SQL语句都加上分号;)

4. 删除数据库

drop [if exists] database 数据库名;

  1. 注:数据库一旦删除,大概率就恢复不回来了,这是一个极其危险的操作,所以千万不要在公司的数据库服务器上进行这样子的操作,尤其是生产环境的数据库!
  2. 【补充:公司中涉及的环境:①办公环境(公司发的电脑,笔记本/台式机) ②开发环境(公司配的服务器,好几个人使用) ③测试环境(测试搞的服务器,也是好几个人使用) ④生产环境/线上环境(上面的东西会被外面的用户直接访问到)】
  3. 【告警:有些操作是会通过程序监控的,如果监控程序发现异常,就会给程序员发短信/发微信/打电话…】
  4. 【当删除了数据库之后,可能有一部分数据是可以找回来的: 数据是存储在硬盘这样的外存上,删除数据其实就是在删除硬盘上的数据。 操作系统把硬盘分成了很多小的部分“盘块”,每个盘都会保存一部分数据;要删除数据的时候,并不是把这些盘上的数据涂抹掉,而是简单标记成“无效(0是无效,1有效)”; 标记成“无效”之后,这个盘块就会被系统后续分配给其他程序用来保存数据; 但是在盘块被分出去之前,上面的原来的数据其实还是存在的。 ——逻辑删除
    (但是硬盘恢复工具不是随便就可以在网上找一个的,一般硬盘产商会提供对应的专业工具(但是可能需要付钱))】
  5. 【如果硬盘上有一些机密数据想要彻底删除掉该怎么办呢? ——物理删除!砸硬盘
    如:工作的电脑需要换电脑,可能就需要把电脑上交给公司通过专门操作来销毁数据】



二、常用数据类型

1. 数值类型


  1. 分为整型和浮点型:
    数值
  2. 扩展:
    1) 数值类型可以指定为无符号(unsigned),表示不取负数。
    2)1byte = 8 bit ,所以对于整型类型的范围:
    ①有符号范围:-2(类型字节数*8-1)到 2(类型字节数*8-1)-1,如int是4字节,就是 (-231到231-1)
    ②无符号范围:0到2(类型字节数*8)-1,如int就是232-1
    ③注意:有无符号的范围差距(幂时是否减1)
    3)使用unsigned后可以表示更大范围的数据,但是对于int类型可能存放不下的数据,int unsigned同样可能存放不下;不建议使用。(java语言自身就没有unsigned)

2. 字符串类型

字符串


3. 日期类型

日期


4. 补充


  1. 文本文件t存储的是ASCII码的字符,而二进制数据存的字符是不一定的。
    如:文本文件:.txt .java .c .html …
    二进制文件: .docx .xlsx .ppt .ddl .png .mp4 .exe …

  2. 如何区分这两类文件?
    ——尝试使用记事本打开,能够用记事本看懂的就是文本文件,看不懂的就是二进制文件。

  3. 常用类型:int、bigint、double、decimal、varchar、datetime




三、数据表的操作

1. 创建表

create table 表名(列名 类型, 列名 类型, ...);

①(注:C/java中:类型在前,变量名在后; SQL/Go/Python/TypeScript… 类型在后,变量名在前)
表操作之前一定要先选中数据库: use 数据库名;
创建表要保证在同一个数据库中:不能有两张同名的表; 保证表名不和关键字重复; 如果实在要和关键字重复,呢就使用反引号` `引起来。
④ 可以在创建表的时候,在每个这里加上 comment注释(只能在建表的时候使用),不影响SQL执行,只是起到解释说明作用。【comment ‘ ‘】
- - 注释更常用,在多处可以使用(注意:-- 后面一定要有空格!)
⑥ 建表的时候因为建表语句可能较长,所以可以把SQL语句分成多行来写;但是如果在写的过程中写错了就会硬:只能修改本行内容,无法修改之前行的内容。
⑦ 相比之下,更建议把SQL写到文本文件中(可以使用各种代码编辑器来进行修改),写好之后再复制粘贴到控制台执行。
⑧ 工作中也经常把SQL写成文件,目的是为了后续在其他机器上批量执行。
最后一个【列名 类型】后面是没有, 的


2. 查看当前数据库中有哪些表

show tables;

3. 查看指定的表结构

desc 表名;
// (desc: describe)

①Field:字段(列)名称
② Type(类型:注意会出现如int(11) -> 其实:与数据存储无关,描述的是“打印格式”,打印是以宽度为11字符位置去打印的)
③Null :是否允许该列为空值(啥也不填)
④Key:约束,后面再进行详细介绍
⑤Default:这一列的默认值
⑥Extra:扩充,暂时不介绍


4. 删除表

drop table [if exists] 表名;

删表的后果比较严重,所以也是比较危险的,在之后工作中要谨慎删除(删表后果可能比删库后果严重:因为删表后不一定能够立即报错、及时发现)




四、补充
  1. 【编程语言常见命名规则】:
    ①驼峰
    ②蛇形命名(使用_进行分割)
    ③脊柱命名(使用-来分割,但是大部分编程语言不支持-作为变量名; CSS语言主要使用这种风格)
    ④匈牙利命名(把变量类型作为名字的前缀
    eg. iGoodsId / sGoodsName…)
    2)“钱” 要讲究精确,所以使用float、double都是不合适的,故可以用decimal(长度,小数点后几位) 来表示【但decimal占空间大,运算速度更慢】;
    3)对于【钱】这个场景,既算得快又算得准就使用 【int】:因为钱一般只精确到 【分】,所以我们可以直接以分作为单位。
    4)varchar(num) :指定的num是怎么来设定的呢? 在公司开发项目时,num是由“产品经理”专门研究进行敲定的,这些数字写到产品需求文档中,程序员照着文档的要求来进行开发就行。



THINK
  1. 数据库操作:显示、创建、使用、删除
  2. 常用数据类型
  3. 操作表:查看、创建、删除、显示结构
  4. 钱:int






推荐阅读
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
author-avatar
XsiaoHan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有