01 创建MySQL数据库并支持远程连接
MySQL篇
一、创建MySQL数据库并支持远程连接
=======================================================
安装MySQL
1. 下载安装MySQL服务端
sudo apt-get install mysql-server
2.切换root 用户
sudo su -
3.下载安装MySQL客户端
sudo apt-get install mysql-client
4.安装netstat
sudo apt install net-tools
5.用netstat查看MySQL是否安装成功
sudo netstat -tap |grep mysql
6.查看MySQL工作状态
systemctl status mysql.service
如果没有成功,输入命令:sudo systemctl start mysql尝试
ps -ef|grep mysqlld
7.查看mysql的版本
mysqladmin --version
=================================================================
使用MySQL
1.进入数据库设置密码
sudo mysql -u root -p
2.查看已有数据库
show databases;
3.创建数据库
create database Database_Test1;
进入数据库
use Database_Test1;
4.创建表
create table Table_Test1
(
id bigint auto_increment
primary key,
user_id bigint not null,
title varchar(255) not null,
description varchar(255) not null,
content longtext null,
created datetime not null on update CURRENT_TIMESTAMP,
status tinyint null
)
charset = utf8mb4;
5.查看库中的表
show tables;
6.往表中写内容
INSERT INTO Table_Test1(id, user_id, title, description, content, created, status) VALUES (15, 1, '测试标题333333333333333333', '摘要3333333333333', 'content-333333333333333333333333333', '2020-09-19 15:07:45', 0);
7.查看表的内容
select * from Table_Test1;
8.查看表的段属性
desc Table_Test1;
9.退出
exit
============================================================================================
配置数据库远程连接
1.使用vi 打开文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
在打开文件后,在文件中找到:bind-address = 127.0.0.1这一行,然后注释掉这一行。
然后重启mysql,[service mysql restart]
(个人认为vim使用挺麻烦的,建议下载WinSCP或者同类软件,远程连接数据库后,将mysqld.cnf拉到本地使用记事本修改,非常方便)
2.进入我们要修改的数据库
sudo mysql -u root -p
use mysql;
select host,user from user;
.报错原因是mysql 数据库中user 表中的特定用户(root) 的host 的属性值为localhost.
mysql> update user set host='%' where user='root';
mysql> grant all privileges on *.* to 'root'@'%';
mysql> flush privileges;
3.(a.更改加密方式 b.更改密码 c.刷新权限) 具体密码自己修改:
mysql> alter user 'root'@'%' identified by '123456' password expire never;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql> flush privileges;
4.查看端口
show global variables like 'port';
5.查看IP
mysql> exit
ifconfig
6.其他
sudo ufw allow 3306
sudo ufw enable
sudo ufw status
==================================================================================================================
02 Mysql客户端-Navicat
二、Mysql客户端-Navicat
=============================================================================================
数据库的备份和还原
1. 关注并记录数据库的字符集和排序规则
2.右键数据库-转储SQL文件-表结构和数据
3.运行SQL文件-运行导出的文件即可
=============================================================================================
快捷键
打开命令窗口 F6
打开查询窗口 ctrl+Q
代码提示 esc
选中代码提示 tab
注释 ctrl+/
运行全部 ctrl+R
运行选定 ctrl+shift+R
删除一行 ctrl+L
03 SQL语句
0.查看
1.数据库 show databases
2.表 show tables
3.字段 desc aaa;
4.建表语句 show create table aaa;
1.创建数据库
1.创建数据库
普通创建
mysql -u root -p
create database AAA
使用mysqladmin创建数据库
mysqladmin -u root -p create BBB
如果不存在则创建
create database if not exists XXX default charset utf8 collate utf8_general_ci
2.删除数据库
2.删除数据库
普通删除
mysql -u root -p
drop database XXX
使用mysqladmin删除数据库
mysqladmin -u root -p drop XXX
3.选择数据库
3.选择数据库
use database AAA;
4.数据类型
5.创建数据表
5.创建数据表
CREATE TABLE table_name (column_name column_type);
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
6.删除数据表
1. MYSQL中TRUNCATE和DELETE的区别
https://www.jianshu.com/p/ddc5b65e63af
1. MYSQL中TRUNCATE和DELETE的区别
MYSQL中TRUNCATE和DELETE都能够清理表中的数据,但是他们有什么区别呢?我们从下面的几点来分析:
1. 条件删除
这个比较好理解,因为DELETE是可以带WHERE的,所以支持条件删除;而TRUNCATE只能删除整个表。
2. 事务回滚
由于DELETE是数据操作语言(DML - Data Manipulation Language),操作时原数据会被放到 rollback segment中,可以被回滚;而TRUNCATE是数据定义语言(DDL - Data Definition Language),操作时不会进行存储,不能进行回滚。
DELETE回滚实验
可以看到DELETE是可以回滚成功的。
TRUNCATE回滚实验
可以看到TRUNCATE是不能回滚成功的。
3. 清理速度
在数据量比较小的情况下,DELETE和TRUNCATE的清理速度差别不是很大。但是数据量很大的时候就能看出区别。由于第二项中说的,TRUNCATE不需要支持回滚,所以使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项,固然会慢,但是相对来说也较安全。
4. 高水位重置
随着不断地进行表记录的DML操作,会不断提高表的高水位线(HWM),DELETE操作之后虽然表的数据删除了,但是并没有降低表的高水位,随着DML操作数据库容量也只会上升,不会下降。所以如果使用DELETE,就算将表中的数据减少了很多,在查询时还是很和DELETE操作前速度一样。
而TRUNCATE操作会重置高水位线,数据库容量也会被重置,之后再进行DML操作速度也会有提升。
2. drop truncate delete
7.MySQL插入数据
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
8.MySQL 查询数据
1.全部 * 部分直接字段
SELECT * FROM websites; /* 查询表所有数据 */
SELECT NAME FROM websites; /* 查询表字段数据 */
2.条件 where
SELECT * FROM websites where name = "广西"; /* 查询表字段下条件数据 */
3.模糊 like
SELECT * from websites where name like "_o%"; /* 模糊查询表下数据 */
4.介于 between and
SELECT * FROM websites where id BETWEEN "1" AND "5"; /* 查询表下字段范围数据 */
5. in
SELECT * FROM websites WHERE name