一、数据库实现过程
1.用户在客户端输入SQL
2.客户端会把SQL通过网络发送给服务器
3.服务器执行这个SQL,改变数据并把结果返回给客户端
4.客户端收到结果,显示到屏幕上
二、数据库操作
创建数据库
sql
create database xxx;
查看数据库

创建数据库,查看数据库时候,成功以后,下面有个xx.xx sec 这是什么意思,意味着这步骤操作运用了XX秒,像0.01sec,意思是0.01秒 ,0.00sec,是不是意味着他没花费时间,其实并不是,他只是小于0.01秒
注意:
create database ... 相当于关键字
SQL关键字不区分大小写,但是平常我们写的时候多用小写
创建的数据库名,随便起,但是不得重复
每个单词至少有一个空格
每句SQL语句需要有一个分号结尾
选中数据库
sql
use 52sql;

一旦我们选中了这个数据库,后续基本操作都是针对该数据库展开的;这一步是后续操作的大前提。
面试真题

删除数据库
sql
drop database 52sql;

有个问题:如果我把MYSQL自带的数据库删除了会怎么样?
重装下数据库就行了,不会有太大影响。
删库的危害?
这一步操作非常危险,因为一旦删除了数据库,数据库中的数据就消失了,很难恢复,如果是一些值钱的数据,那么麻烦就大了,恭喜你可以跑路了。
一旦删库跑路了,这个影响可就大了;一般衡量影响,大公司都是按秒计算损失,一个不小心,就是几百万的损失,这还是在很短时间内数据恢复了;如果数据恢复不回来怎么办?那完犊子了。

只要不是主观故意的情况,删库一般是不会吃上公家饭的,但是估计能保住饭碗。
如何针对上述危险操作,防患于未然?
1.权限 不同用户,有不同权限,能进行的操作都是不一样的。
2.备份 万一我们不小心误删数据库数据,通过备份将之前的备份数据,恢复回来。
3.操作的时候,我建议你拉上其他组员跟你一起,拉个 "分锅侠" ,有锅一起背,最好找你领导或者导师(因为他们最不想看到你惹祸)。
三、针对数据库已经存在,再创建会报错
sql
create database if not exists 52sql;

即便已经存在了同名数据库,也不会发生报错。
create database 52sql;对一条条执行SQL,不会产生什么影响,主要是我们导入SQL文件时,批量执行sql语句时,避免因为报错,导致中断执行。
四、创建数据库并指定字符集
创建数据库的同时,我们可以指定字符集。

字符集是什么?
我们知道常见的字符表有 utf8 gbk ascii码表
字符集针对英文、汉字进行编码
英文字母如何在计算机中表示的?
ascii 这个编码格式 是利用数字来表示字符。

但是我们发现在ASCII表只能表示英文字母和标点符号,以及阿拉伯数字。汉字要表示的内容特别多,毕竟几万个汉字,ASCII表肯定不够用,我们可以搞一个更大的表来表示汉字。
这个时候演化出来很多种表示方式,但是我们常用的表示方式,有两种:gbk utf8,这两个表,同一个汉字,但是表示的数字不同;同一个数字对应的汉字也不同。
gbk 使用两个字节表示一个汉字, utf8使用3个字节表示一个字节。,目前windows简体中文版,系统编码默认是gbk。
但是目前最主流的中文编码格式是utf8,他能表达的汉字特别多,而且其他国家的语言文字符号都能表示,所以他越来越主流了。
并且java的字符集在编辑运行的时候,通过命令行参数显示指定的,一般默认是utf8。
五、MYSQL为什么要设定字符集?
MYSQL默认的字符集是拉丁文的,手动设定一个字符集是非常关键的,主要是后续如果要插入一些中文,如果不是UTF8或者GBK可能造成中文乱码
注意
mysql的utf8是残缺的(残缺了一些表情),如果我们在网页当中存储信息的时候,误加入了表情之类的符号,就会导致存储失败,完整版是utf8mb4,其实平常设定字符集的时候都无所谓。
六、数据表操作
关系型数据库种,数据是以表的方式来进行组织的。类似于(Excel)
每个数据库中,里面就可以有很多个数据表
每个表可以有很多行,每一行又可以有很多个列(字段)。
1.创建表
sql
create table 表名(列名 类型 列明 类型 ... ...)
这里面的类型,MYSQL本身也支持很多的数据类型
decimal 能够精确表示小数,float和double是不能精确表示小数的,因此如果用double和float来相加时可能出现0.1+0.2 = 0.3000000004,这种情况,所以我们利用decimal来作为类型存储数据。
varchar(SIZE)属于可变长的字符串 , SIZE表示最大长度,单位是字符(不是字节)
varchar(10),最多是个字,哪怕是汉字也是十个。
在MYSQL当中,TIMESTAMP时间戳,用于存储时间。
什么是时间戳?
计算机表示时间的一种经典方式,以1970年1月1日0时0分0秒为基准,计算当前时刻和基准时刻的秒数/毫秒数之差。
TIMESTAMP这个时间戳,这个类型最多存储到2038年,所以我们平常使用的的时间日期类型为Datetime类型,范围从1-9999.
2.查看当前数据库中所有的表。

sql
show tables;

3.查看指定表的结构
Field指的是,一行里有几列,一个为id,一个为name,类型为int和varchar

4.删除表
删除表,相当于删除了表中所有数据和删除数据库差不多,但是非常危险的操作,在公司里,不能轻易删除表。

注意:
varchar(20\50)这种数字是怎么定义的,这个地方其实是我自己随意填写的,但是在公司当中会有专门的产品经理,负责明确产品的需求,尤其是明确需求当中的各个细节,注入某个字段的最大长度,我们照着需求进行修改,如果产品经理没有提供,我们需要跟他进行确认。
