MySQL操作入门第一节
1.MySQL的结构
-
先有数据库(多个库)-表(多个表)-再有数据(行-列)
-
MySQL系统的数据库容许用户自己创建多个数据库
1)操作流程 #查询所有的数据库 SHOW databases;
#创建数据库 CREATE DATABASE demo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
#删除数据库 DROP DATABASE demo;
#使用工具来增删数据库更简单,但我们也要知道要怎么使用SQL来完成
CREATE DATABASE demo DEFAULT CHARACTER SET utf8; CREATE DATABASE demo1 DEFAULT CHARACTER SET utf8;
#通过SQL或者工具来完成数据库的字符串集修改 ALTER DATABASE demo DEFAULT CHARACTER SET gbk;
#通过use来选择使用不同的数据库,也可以使用工具直接默认操作选中的数据库 USE demo; SELECT * FROM abc;
USE demo1; SELECT * FROM abc;
2.字符集
什么是字符集? 计算机底层只能存二进制,01000001,如果将abc等等存到计算机的话,得到对应的二进制编码规则,二进制编码规则就是字符集,有很多个,但目前来看,对于中国的用户来说,中英文数字特殊字符,我们有我们对应的也有字符集,gbk,utf-8,目前使用最多的是utf-8,这个字符集对中文的支持最好
3.表的概念
数据库最终都要落到表上 举例: 如果想要把公司所有员工都存到数据库
1). 需要有一个表来保存员工信息,给表一个名字,这个表在当前在当前数据库下是唯一的,一般表的命名要有含义,首选英文名称,一般如员工表叫employer
2). 给表定义要存什么,员工是一个概念,对应要员工的什么(信息)进行一个分解,根据实际情况分解,如id、姓名、性别、身份证号码、部门
3).表存数据要以行的形式进行存储,一个行数据就是一个完成的概念,对应employer表来说,它的一行数据就是一个员工
4).在步骤2,我们又知道员工的整体概念被分解成一个个单独的信息(id...)这些被称为一行的多个列,正是这些多个列的信息构成一行完整的数据
5).被分解的一个个单独信息(id...),我们称之为字段(属性的意思)
6).表名--字段名的关系,具体到我们现在员工表的例子,就是员工有哪些字段(属性),这个就通过表名--字段名这样的形式,就把employer描述清楚了
7). 字段名和表名也一样,最好都有意义,首选英文名称
4.字段(列/属性)的数据类型
数据要存到数据库中的表中,要明确字段的一个数据类型,如年龄就是数字类型、姓名是字符串类型,身份证号是字符串类型,年龄是日期类型单独
4.1整型(存整数的)
tinyint、smallint、mediumint、int、bigint
4.2 浮点型(float和double)(存小数的、使用时看需要多大的精度,即有效数字)
1个数字是1个字符、浮点型存储近似值,不适合存储精确数值,例如金钱 float(m,d)是单精度的,8位精度(4字节) m总个数,d小数位
double(m,d)是双精度的,16位精度(8字节)m总个数,d小数位
4.3定点数
存储精确的数值
decimal(m,d)m代表有效数字的个数,在1~65之间;d代表小数位,在0 ~ 30之间。
浮点数和定点数,都有有效数字位数m和小数位数d的定义。有效数字的位数是指一个数从左开始非零位置向右计数,如2.34的两位有效数字为2.3,如果对于0.123的两位有效数字为0.12。
float(4,2),如2.340不符合规定,20.34就符合
4.4字符串
char(n)、varchar(n)、tinytext、text、mediumtext、longtest 根据字符串的大小来定义
4.5二进制数据
保存图片、压缩包、视频... 如果要将这些保存到数据库,需要转化成二进制数据,再保存到数据库。
这个不太常用的数据类型
TINYBLOB(最多256个字符串)、BLOB、MEDIUMBLOB、LONGBLOB
4.6 日期时间类型
date(2021-10-14)、time(20:20:21)、datetime(2021-10-14 20:20:46)、timestamp(自动保存记录修改的时间)
datatime和timestamp不同点: 1.两者存储方式不一致 datetime是原样输入和输出,而timestamp是把客户端插入的时间从当前时区转化为世界标准时间进行存储,查询时,又转化为当前时区进行输出。
2.存储时间范围不同 datetime从1000-01-01 00:00:00.000000到9999-12-31 23:59:59.999999,而timestamp所能存储的时间是1970-01-01 00:00:00.000000到2038-01-19 03:14:07.999999 timestamp和datatime除了存储形式之外没什么其它太大差距,对于跨时区的业务,timestamp更合适
5.管理表
注意mysql的关键字不区分大小写
5.1 创建并查看当前数据库的所有表
查看当前所有操作的数据库有哪些表
创建表 格式:
CREATE TABLE 表名(
字段名 字段类型[NOT NULL]
[AUTO_INCREMENT],
[字段名 字段类型,]
......
[字段名 字段类型,]
[PRIMARY KEY(字段名)]
)
5.2 修改表
1). 给表添加一个字段