Все личные статьи организованы в этой статье, которая будет обновляться и включаться последовательно:Знание безгранично, дорога путешественника - конец Мо Яна (моя дорога программирования)
Ноль, как получить доступ к базе данных mysql на сервере
1. Удаленное подключение к MySQL на стороне сервера
Разработайте порт 3306 (номер порта — это порт доступа к MySQL на вашем сервере)
2. Локальный сервер доступа
Кажется, что соединение здесь запрещено
|-- 在服务端进入mysql语句执行: 开放权限-----------------
Grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;
1. Знание MySQL
Проще говоря, служба MySQL предназначена для нескольких клиентов.
提供并操作数据
программное обеспечение
структура mysql
MySQL服务器中有若干数据库,数据库中又有若干表,表中又有若干记录,记录又有若干字段
Запись объектов сопоставления для использования в приложении
在Java中有一种数据类型叫List,也就是列表,对数据库的操作会将一张表通过实体类映射成对象列表
其中一条记录对于List中的一个对象,对象的属性和表的字段往往一一对应,
能够远程获取数据产生实体类列表,就可以填充客户端UI,这便让数据库在编程语言中有了价值
这也使得前后端在应用层面实现分离,明确接口后,各端可以专注各自的业务
1.Каталог файлов MySQL
将解压文件bin的路径配置到环境变量path下,以便在任意地方都可执行命令
2. Установите службу MySQL и основные инструкции
# 安装MySQL 将会在服务里出现一个叫MYSQL57的服务
mysqld install MYSQL57
# 启动MySQL
net start mysql
# 停止MySQL
net stop mysql
# 设置密码
update mysql.user set authentication_string=password('xxxx') where user='root';
# 数据库备份
mysqldump -uroot -p mycode > D:\\backupSql\\android.sql
# 数据库还原
mysql -u root -p mycode < D:\\backupSql\\android.sql
# 进入MySQl 全写 和 简写
mysql --host=toly1994.com --user=root --port=3306 --password
mysql -htoly1994.com -P3306 -uroot -p
# 退出
quit 或 exit 或 \q
# MySQL数据库版本
mysql -V 或 mysql --version
3. Файл конфигурации MySQL
мой.ini-файл
[mysql]
default-character-set=utf8 # 设置mysql客户端默认字符集
[mysqld]
port = 3306 #设置3306端口
basedir=D:B\mysql-5.7.22-winx64 # 设置mysql的安装目录
datadir=D:\B\mysql-5.7.22-winx64\data # 设置mysql数据库的数据的存放目录
max_connections=200 # 允许最大连接数
character-set-server=utf8 # 服务端使用的字符集 默认为8比特编码的latin1字符集
default-storage-engine=INNODB # 创建新表时将使用的默认存储引擎
explicit_defaults_for_timestamp=true # 开启查询缓存
# skip-grant-tables # 无需密码登录mysql
4. Что делать, если вы забыли пароль
1. net stop mysql
2. 打开my.ini文件 在[mysqld]下 添加skip-grant-tables
3. net start mysql
4. mysql -u root -p 回车 回车
5. use mysql
6. update user set authentication_string=password("xxxx") where user="root";
6. flush privileges;
7. quit
8. 将my.ini文件的skip-grant-tables注释掉
9. 重启服务
5. Другое использование
|---修改前面符号
并没有什么实际用处,就是将`mysql>` 换一下,适于装B症患者...
mysql -uroot -p --prompt toly-》
toly-》use zoom
Database changed
toly-》
|--- mysql中有内置函数使用
mysql> SELECT VERSION(), CURRENT_DATE,NOW(),USER();
+-----------+--------------+---------------------+----------------+
| VERSION() | CURRENT_DATE | NOW() | USER() |
+-----------+--------------+---------------------+----------------+
| 5.7.22 | 2019-03-15 | 2019-03-15 18:51:12 | root@localhost |
+-----------+--------------+---------------------+----------------+
|---mysql中支持简单计算
mysql> SELECT 1+1, (4+1)*5,4/5,5^8;
+-----+---------+--------+-----+
| 1+1 | (4+1)*5 | 4/5 | 5^8 |
+-----+---------+--------+-----+
| 2 | 25 | 0.8000 | 13 |
+-----+---------+--------+-----+
2. Типы данных в MySQL
Следующие четыре таблицы являются ресурсами для следующего упражнения MySQL.Я такой умный... Если есть какие-либо ошибки, пожалуйста, укажите на них, и я обновлю их вовремя.
|----整型----|
+-----------+-----------+----------------------+-----------------+--------------+
| 类型 | 字节数 | 有符号范围 | 无符号范围 | 描述 |
+-----------+-----------+----------------------+-----------------+--------------+
| TINYINT | 1 | -2⁷ ~ 2⁷-1 | 0 ~ 2⁸-1 | 很小整数 |
| SMALLINT | 2 | -2¹⁶ ~ 2¹⁶-1 | 0 ~ 2¹⁶-1 | 小整数 |
| MEDIUMINT | 3 | -2²⁴ ~ 2²⁴-1 | 0 ~ 2²⁴-1 | 中等整数 |
| INT | 4 | -2³² ~ 2³²-1 | 0 ~ 2³²-1 | 标准整数 |
| BIGINT | 8 | -2⁶⁴ ~ 2⁶⁴-1 | 0 ~ 2⁶⁴-1 | 大整数 |
+-----------+-----------+----------------------+-----------------+--------------+
|----小数型----|
+---------+-----------+-------------------------------------------------------+----------------------------+
| 类型 | 字节数 | 取值范围 | 描述 |
+---------+-----------+-------------------------------------------------------+----------------------------+
| FLOAT | 4 | ±1.175494351E-38 ~ ±3.402823466E+38 | 单精度浮点 |
| DOUBLE | 8 | ±2.2250738585072014E-308 ~ ±1.7976931348623157E+308 | 双精度浮点 |
| DECIMAL | 不定 | 是M,D而定 | M:总位数,D:小数位数 |
+---------+-----------+-------------------------------------------------------+----------------------------+
|----字符型----|
+------------+-------------------+---------------+-----------------------------------+
| 类型 | 最大字节数 | 最大范围 | 描述 |
+------------+-------------------+---------------+-----------------------------------+
| CHAR(M) | M | L或M或M×W | 定长字符串,M 0~255 |
| VARCHAR(M) | M | L+1或 L+2 | 变长字符串,L<=M且M[0,65535] |
| TINYTEXT | 2⁸-1 | L+1个字节 | 微型的字符串 |
| TEXT | 2¹⁶-1 | L+2个字节 | 小型的字符串 |
| MEDIUMTEXT | 2²⁴-1 | L+3个字节 | 中型的字符串 |
| LONGTEXT | 2³²-1 | L+4个字节 | 大型的字符串 |
| ENUM | 1或2字节 | 65535 | 枚举 |
| SET | 1、2、3、4或8 | 64 | 集合 |
+------------+-------------------+---------------+-----------------------------------+
|----时间型----|
+-----------+-----------+---------------------------------------------------------------+------------------------------------+
| 类型 | 字节数 | 取值范围 | 描述 |
+-----------+-----------+---------------------------------------------------------------+------------------------------------+
| YEAR | 1 | 1901~2155 | 年YYYY |
| DATE | 3 | 1000-01-01 ~ 9999-12-31 | 日期YYYY-MM-DD |
| TIME | 3 | -838:59:59[.000000] ~ 838:59:59[.000000] | 时间HH:MM:SS |
| DATETIME | 8 | 1000-01-01 00:00:00[.000000] ~ 9999-12-31 23:59:59[.999999] | 日期加时间YYYY-MM-DD HH:MM:SS |
| TIMESTAMP | 4 | 1970-01-01 00:00:01[.000000] ~ 2038-01-19 03:14:07[.999999] | 时间戳 |
+-----------+-----------+---------------------------------------------------------------+------------------------------------+
|----二进制型----|
+--------------+-----------------+---------------+--------------------+
| 类型 | 最大字节数 | 最大范围 | 描述 |
+--------------+-----------------+---------------+--------------------+
| BIT(M) | M | (M+7)/8 | 定长字符串 |
| BINARY(M) | M | M | 定长字符串 |
| VARBINARY(M) | M | L+1 或 L+2 | 变长字符串 |
| TINYBLOB | 2⁸-1 | L+1 | 微型的字符串 |
| BLOB | 2¹⁶-1 | L+2个字节 | 小型的字符串 |
| MEDIUMBLOB | 2²⁴-1 | L+3个字节 | 中型的字符串 |
| LONGBLOB | 2³²-1 | L+4个字节 | 大型的字符串 |
+--------------+-----------------+---------------+--------------------+
Вот лишь краткий список, более подробную информацию можно найти в этой статье:Серия «Начало работы с MySQL»: типы данных MySQL
3. Другие моменты
1. Терминатор:; \g \G
; \g
Эффект тот же,\G
вертикальное распределение
mysql> SELECT * FROM number;
+-----------+------+----------------------+----------------+--------------+
| type | byte | range_singed | range_unsinged | info |
+-----------+------+----------------------+----------------+--------------+
| TINYINT | 1 | -2⁷ ~ 2⁷-1 | 0 ~ 2⁸-1 | 很小整数 |
| SMALLINT | 2 | -2¹⁶ ~ 2¹⁶-1 | 0 ~ 2¹⁶-1 | 小整数 |
| MEDIUMINT | 3 | -2²⁴ ~ 2²⁴-1 | 0 ~ 2²⁴-1 | 中等整数 |
| INT | 4 | -2³² ~ 2³²-1 | 0 ~ 2³²-1 | 标准整数 |
| BIGINT | 8 | -2⁶⁴ ~ 2⁶⁴-1 | 0 ~ 2⁶⁴-1 | 大整数 |
+-----------+------+----------------------+----------------+--------------+
mysql> SELECT * FROM number\g
+-----------+------+----------------------+----------------+--------------+
| type | byte | range_singed | range_unsinged | info |
+-----------+------+----------------------+----------------+--------------+
| TINYINT | 1 | -2⁷ ~ 2⁷-1 | 0 ~ 2⁸-1 | 很小整数 |
| SMALLINT | 2 | -2¹⁶ ~ 2¹⁶-1 | 0 ~ 2¹⁶-1 | 小整数 |
| MEDIUMINT | 3 | -2²⁴ ~ 2²⁴-1 | 0 ~ 2²⁴-1 | 中等整数 |
| INT | 4 | -2³² ~ 2³²-1 | 0 ~ 2³²-1 | 标准整数 |
| BIGINT | 8 | -2⁶⁴ ~ 2⁶⁴-1 | 0 ~ 2⁶⁴-1 | 大整数 |
+-----------+------+----------------------+----------------+--------------+
mysql> SELECT * FROM number\G
*************************** 1. row ***************************
type: TINYINT
byte: 1
range_singed: -2⁷ ~ 2⁷-1
range_unsinged: 0 ~ 2⁸-1
info: 很小整数
*************************** 2. row ***************************
type: SMALLINT
byte: 2
range_singed: -2¹⁶ ~ 2¹⁶-1
range_unsinged: 0 ~ 2¹⁶-1
info: 小整数
*************************** 3. row ***************************
type: MEDIUMINT
byte: 3
range_singed: -2²⁴ ~ 2²⁴-1
range_unsinged: 0 ~ 2²⁴-1
info: 中等整数
*************************** 4. row ***************************
type: INT
byte: 4
range_singed: -2³² ~ 2³²-1
range_unsinged: 0 ~ 2³²-1
info: 标准整数
*************************** 5. row ***************************
type: BIGINT
byte: 8
range_singed: -2⁶⁴ ~ 2⁶⁴-1
range_unsinged: 0 ~ 2⁶⁴-1
info: 大整数
2. Очистить команду
`\c 或 Ctrl+c`
3. Заявление может быть обернуто
mysql> SELECT
-> *
-> FROM
-> number;
+-----------+------+----------------------+----------------+--------------+
| type | byte | range_singed | range_unsinged | info |
+-----------+------+----------------------+----------------+--------------+
| TINYINT | 1 | -2⁷ ~ 2⁷-1 | 0 ~ 2⁸-1 | 很小整数 |
| SMALLINT | 2 | -2¹⁶ ~ 2¹⁶-1 | 0 ~ 2¹⁶-1 | 小整数 |
| MEDIUMINT | 3 | -2²⁴ ~ 2²⁴-1 | 0 ~ 2²⁴-1 | 中等整数 |
| INT | 4 | -2³² ~ 2³²-1 | 0 ~ 2³²-1 | 标准整数 |
| BIGINT | 8 | -2⁶⁴ ~ 2⁶⁴-1 | 0 ~ 2⁶⁴-1 | 大整数 |
+-----------+------+----------------------+----------------+--------------+
4. Одна строка может выполнять несколько операторов
mysql> SELECT * FROM number;SELECT * FROM number_float;
+-----------+------+----------------------+----------------+--------------+
| type | byte | range_singed | range_unsinged | info |
+-----------+------+----------------------+----------------+--------------+
| TINYINT | 1 | -2⁷ ~ 2⁷-1 | 0 ~ 2⁸-1 | 很小整数 |
| SMALLINT | 2 | -2¹⁶ ~ 2¹⁶-1 | 0 ~ 2¹⁶-1 | 小整数 |
| MEDIUMINT | 3 | -2²⁴ ~ 2²⁴-1 | 0 ~ 2²⁴-1 | 中等整数 |
| INT | 4 | -2³² ~ 2³²-1 | 0 ~ 2³²-1 | 标准整数 |
| BIGINT | 8 | -2⁶⁴ ~ 2⁶⁴-1 | 0 ~ 2⁶⁴-1 | 大整数 |
+-----------+------+----------------------+----------------+--------------+
5 rows in set (0.00 sec)
+---------+------+-------------------------------------------------------+----------------------------+
| type | byte | num_range | info |
+---------+------+-------------------------------------------------------+----------------------------+
| FLOAT | 4 | ±1.175494351E-38 ~ ±3.402823466E+38 | 单精度浮点 |
| DOUBLE | 8 | ±2.2250738585072014E-308 ~ ±1.7976931348623157E+308 | 双精度浮点 |
| DECIMAL | NULL | 是M,D而定 | M:总位数,D:小数位数 |
+---------+------+-------------------------------------------------------+----------------------------+
5.Select может написать таблицу через запятую
mysql> select 'a','b','c','d';
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
В-четвертых, парадигма базы данных
1. Сначала подключитесь, кратко опишите соответствующие понятия
关系: 表/若干元组的集合
元组: 一行/一条记录/一个实体对象
属性: 一列/字段
分量: 元组中的一个属性值/一个实体对象的某一字段
域: 属性实际取值范围
超键:能够唯一标识一条记录的属性或属性集(可含多个属性)
候选键/候选码:能够唯一标识一条记录的属集(不含多余属性)
主键/主码:一个[候选键]作为主键
主属性:[候选键]中的属性
非主属性:[非候选键]中的属性
2.
3. Первая нормальная форма:1NF
在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的
即数据库表的每一列(属性)都是不可分割的原子数据项。
即实体中的某个属性有多个值时,必须拆分为不同的属性。
在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分
Цена здесь становится двумерной, не в первой нормальной форме, и должна быть сглажена.
4. Вторая нормальная форма:2NF
在第一范式的基础上:
[非主属性]对[主属性]不存在部分函数依赖关系
Наименование товара | поставщик | стандартная цена | цена | Распространение | Телефон поставщика | Классификация |
---|---|---|---|---|---|---|
карманный нож | Чэньгуан Канцтовары | 1.00 | 1.00 | 0 | 7654321 | Канцелярские товары |
карандаш | Гастроном Канцтовары | 1.00 | 1.50 | 0.5 | 1234567 | Канцелярские товары |
Точилка | Чэньгуан Канцтовары | 5.00 | 5.00 | 0 | 7654321 | Канцелярские товары |
книга по каллиграфии | Гастроном Канцтовары | 2.00 | 2.00 | 0 | 1234567 | Канцелярские товары |
карманный нож | Гастроном Канцтовары | 1.00 | 1.20 | 0.2 | 1234567 | Канцелярские товары |
插入异常:A实体依赖于B实体,B实体的缺失而使A实体表示异常
|--
更新异常:更新A表的某一属性,需要多行进行更新
|-- 如果更新[得力文具]的供应商电话,需要更新三条数据
删除异常:A实体删除一行,导致B实体信息丢失
|-- 当删除第一、三行,晨光文具的供应商信息丢失
数据冗余:相同的数据在多张表中存在,或表的某属性可通过计算得到(如平均值、和等)
|-- 得力文具以及电话号码重复了很多次。标准价格,价格和差价之间有运算关系
идантификационный номер продукта | Наименование товара | стандартная цена | Классификация |
---|---|---|---|
1 | карманный нож | 1.00 | Канцелярские товары |
2 | карандаш | 1.00 | Канцелярские товары |
3 | Точилка | 5.00 | Канцелярские товары |
4 | книга по каллиграфии | 2.00 | Канцелярские товары |
идентификатор поставки | поставщик | Телефон поставщика |
---|---|---|
1 | Чэньгуан Канцтовары | 7654321 |
2 | Гастроном Канцтовары | 1234567 |
идентификатор поставки | идантификационный номер продукта | Распространение |
---|---|---|
1 | 1 | 0 |
1 | 3 | 0 |
2 | 2 | 0.5 |
2 | 4 | 0 |
2 | 1 | 0.2 |
5. Третья нормальная форма:3NF
在第二范式的基础上:
[非主属性]对任意[主属性]不存在传递性函数依赖
|--- 比如下面的(书名)-->(作者)-->(年代)
название книги | автор | с | Список предложений | цена |
---|---|---|---|---|
Хайзы | Хайзы | Современный | Стихи | 30.6 |
Утренние цветы и вечерний сбор | Лао Ше | Современный | шедевр | 19.9 |
Ты апрельский день в мире | Линь Хуэйинь | Современный | классическая литература | 25.6 |
Зижитунцзян | Сыма Гуан | Северная династия Сун | Классика | 55.6 |
6.БК парадигма:BCNF
在第三范式的基础上:
[所有属性]对任意[主属性]不存在传递性依赖
Четвертая и пятая нормальные формы пока не упоминаются, обратите внимание, что нормальные формы не являются строгими стандартами.
Его можно денормировать в соответствии с реальной ситуацией, чтобы заменить пространство временем.
Эта статья здесь, я подумаю над этим.