目录
- 前言
- 一、数据库操作
- 1. 显示当前所有数据库:
- 2. 创建数据库:
- 3. 选中数据库
- 4. 删除数据库
- 二、常用数据类型
- 1. 数值类型
- 2. 字符串类型
- 3. 日期类型
- 4. 补充
- 三、数据表的操作
- 1. 创建表
- 2. 查看当前数据库中有哪些表
- 3. 查看指定的表结构
- 4. 删除表
- 四、补充
- THINK
前言
彼方尚有荣光在
主要内容是:数据库的操作、常用数据类型以及表操作。
一、数据库操作
- (SQL不区分大小写)
- 数据库操作:这里的“数据库”指的是一个数据库服务器上的某个“数据集合”
(此时使用命令行客户端:因为在工作中图形化客户端不一定能用(数据库服务器上没有图形化界面,不能在服务器上直接跑客户端;本地的电脑还不一定能直接连上数据库服务器),但是命令行客户端一定可以使用)
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. 选中数据库
- 针对后续操作,首先要选择想要使用的数据库
use 数据库名;
- (会发现此时的语句就算不加分号也是能够执行的,这是因为:少数的SQL语句使用时是不必加分号的;但是建议所有的SQL语句都加上分号;)
4. 删除数据库
drop [if exists] database 数据库名;
- 注:数据库一旦删除,大概率就恢复不回来了,这是一个极其危险的操作,所以千万不要在公司的数据库服务器上进行这样子的操作,尤其是生产环境的数据库!
- 【补充:公司中涉及的环境:①办公环境(公司发的电脑,笔记本/台式机) ②开发环境(公司配的服务器,好几个人使用) ③测试环境(测试搞的服务器,也是好几个人使用) ④生产环境/线上环境(上面的东西会被外面的用户直接访问到)】
- 【告警:有些操作是会通过程序监控的,如果监控程序发现异常,就会给程序员发短信/发微信/打电话…】
- 【当删除了数据库之后,可能有一部分数据是可以找回来的: 数据是存储在硬盘这样的外存上,删除数据其实就是在删除硬盘上的数据。 操作系统把硬盘分成了很多小的部分“盘块”,每个盘都会保存一部分数据;要删除数据的时候,并不是把这些盘上的数据涂抹掉,而是简单标记成“无效(0是无效,1有效)”; 标记成“无效”之后,这个盘块就会被系统后续分配给其他程序用来保存数据; 但是在盘块被分出去之前,上面的原来的数据其实还是存在的。 ——逻辑删除
(但是硬盘恢复工具不是随便就可以在网上找一个的,一般硬盘产商会提供对应的专业工具(但是可能需要付钱))】 - 【如果硬盘上有一些机密数据想要彻底删除掉该怎么办呢? ——物理删除!砸硬盘
如:工作的电脑需要换电脑,可能就需要把电脑上交给公司通过专门操作来销毁数据】
二、常用数据类型
1. 数值类型
- 分为整型和浮点型:
![数值](https://img8.php1.cn/3cdc5/12e8e/711/d6bb9b5a6c16e959.png)
- 扩展:
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. 字符串类型
![字符串](https://img8.php1.cn/3cdc5/12e8e/711/29f2a4022e0f1c3b.png)
3. 日期类型
![日期](https://img8.php1.cn/3cdc5/12e8e/711/b51fdaf6fa797863.png)
4. 补充
-
文本文件t存储的是ASCII码的字符,而二进制数据存的字符是不一定的。
如:文本文件:.txt .java .c .html …
二进制文件: .docx .xlsx .ppt .ddl .png .mp4 .exe …
-
如何区分这两类文件?
——尝试使用记事本打开,能够用记事本看懂的就是文本文件,看不懂的就是二进制文件。
-
常用类型: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 表名;
①Field:字段(列)名称
② Type(类型:注意会出现如int(11) -> 其实:与数据存储无关,描述的是“打印格式”,打印是以宽度为11字符位置去打印的)
③Null :是否允许该列为空值(啥也不填)
④Key:约束,后面再进行详细介绍
⑤Default:这一列的默认值
⑥Extra:扩充,暂时不介绍
4. 删除表
drop table [if exists] 表名;
删表的后果比较严重,所以也是比较危险的,在之后工作中要谨慎删除(删表后果可能比删库后果严重:因为删表后不一定能够立即报错、及时发现)
四、补充
- 【编程语言常见命名规则】:
①驼峰
②蛇形命名(使用_进行分割)
③脊柱命名(使用-来分割,但是大部分编程语言不支持-作为变量名; CSS语言主要使用这种风格)
④匈牙利命名(把变量类型作为名字的前缀
eg. iGoodsId / sGoodsName…)
2)“钱” 要讲究精确,所以使用float、double都是不合适的,故可以用decimal(长度,小数点后几位) 来表示【但decimal占空间大,运算速度更慢】;
3)对于【钱】这个场景,既算得快又算得准就使用 【int】:因为钱一般只精确到 【分】,所以我们可以直接以分作为单位。
4)varchar(num) :指定的num是怎么来设定的呢? 在公司开发项目时,num是由“产品经理”专门研究进行敲定的,这些数字写到产品需求文档中,程序员照着文档的要求来进行开发就行。
THINK
- 数据库操作:显示、创建、使用、删除
- 常用数据类型
- 操作表:查看、创建、删除、显示结构
- 钱:int