MySQL数据库相关概念介绍
-
- mysql>>数据库管理软件,本质是一个套接字程序
"""
任何基于网络通信的应用程序底层用的都是socket
-服务端
-基于socket通信
-收发消息
-SQL语句
-客户端
-基于socket通信
-收发消息
-SQL语句
"""
MySQL不单单支持MySQL自己的客户端app还支持其他编程语言来充当客户端操作
如何解决语言沟通的障碍?
# 1 让服务端兼容所有的语言(一个人精通多国语言)
# 2 采用统一的语言(SQL语句)
-
- 库>>文件夹
- 表>>文件
- 表头>>文件的第一行数据
- 记录>>文件中的一行行数据
"""
库 》》》 文件夹
表 》》》 文件
记录 》》》 文件内一行行的数据
name password hobby
jason 123 学习
egon 123 女教练
tank 123 吃生蚝
表头 表格的第一行字段
字段 name、password、hobby
"""
"""
在IT界 一般都不会轻易的使用最新版本的软件,因为新版本可能会出现各种问题
(你原本项目跑的好好的 非要画蛇添足更新版本 然后项目奔溃)
小段子:
更新完没事 那么你还是一个普通员工
更新完出事 那么你就是一名"烈士"
"""
# MySQL有很多版本(5.6、5.7、8.0) 目前企业里面用的比较多的还是5.6左右
"""
服务端
mysqld.exe
客户端
mysql.exe
"""
"""
在前期配置MySQL的时候 cmd终端尽量以管理员的身份运行
windows+r 输入cmd 进入的是普通用户终端 有一些命令是无法执行的
搜索cmd右键 以管理员身份运行
"""
"""
常见软件的默认端口号
MySQL 3306
redis 6379
mongodb 27017
django 8000
flask 5000
...
MySQL第一次以管理员身份进入是没有密码的 直接回车即可
客户端连接服务端完整命令
mysql -h 127.0.0.1 -P 3306 -uroot -p
"""
MySQL的基本使用
-
- mysql中的sql语句是以分号作为结束的标志
- 基本命令
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec)
mysql -uroot -p
C:UsersThinkPad>mysql -uroot -p
Enter password: #以管理员模式链接,第一次不需要输入密码,这里会有输入密码的提示,直接回车即可
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.6.49 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
-
-
- 当你输入的命令不对,又不想让服务端执行并返回报错信心 可以用c取消
- 错误命令 c
mysql> show databases; # 查询所有库的正确姿势
+--------------------+
| Database |
+--------------------+
| information_schema |
| db1 |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> show databaseseesd c # 查询库的错误姿势,加上c不会执行
mysql> # 直接来到这一行,再次等待用户输入
mysql> exit # exit不加分号可以直接执行
Bye # 这里非常人性化,还给你来了个bye
C:UsersThinkPad>
mysql> quit # 退出命令不加分号可以直接执行
Bye
C:UsersThinkPad>
-
-
- 当你在链接服务端的时候,指数mysql也能链接,但是链接的身份是游客,不是管理员模式
C:UsersThinkPad>mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.6.49 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> exit -- 首先退出客户端
Bye
-- 以管理员模式打开
C:WINDOWSsystem32>mysqladmin -uroot -p原密码 password 新密码 -- 然后直接回车,不要加;
Enter password:这里输入原密码
C:UsersThinkPad>mysqladmin -uroot -p password 123456
Enter password:
Warning: Using a password on the command line interface can be insecure. -- 更改成功,他提示你密码过于简单可能不太安全
库的操作>>文件夹
# 增
create database db1; # 新增库db1
create database db2 charset='gbk'; # 创建库db2并执行默认编码格式为gbk,不指定默认为:utf8mb4
# 查
show databases; # 查所有库
show create database db1; # 查单个
# 改
alter database db2 charset='utf8'; # 将库db2的编码格式给成utf8
# 删
drop database db2; # 将库db2删除
表的操作
"""
在操作表(文件)的时候 需要指定所在的库(文件夹)
"""
# 查看当前所在的库的名字
select database(); # 如果返回NULL;说明当前不在库下,需要切换至库下
# 切换库
use db1; # 如果库不存在会返回:ERROR 1049 (42000): Unknown database 'db1'报错信息
mysql> use zeng;
Database changed # 表示数据库切换成功
# 增
create table t1(id int,name char(4)); # 在库下创建表t1,id号为int类型,表名字为char类型,最大字节为4
# 查
show tables; # 查看当前库下面所有的表名
show create table t1; # 查询刚刚创建的表t1的信息
describe t1; # 支持简写 desc t1; # 查询表t1的信息
# 改
alter table t1 modify name char(16); # 更改表t1的name长度为char类型,最大字节16个
alter table t1 rename tt2; # 将t1表的名字改成tt1
alter table tt2 change name mingzi char(12); # 将表tt2下的name字段改成mingzi,并指定char长度23
# 删
drop table t1; # 删除表t1
"""
create table db2.t1(id int); 也可以用绝对路径的形式操作不同的库
"""
记录的操作
# 操作记录,一定要有库,然后又表,最后才能操作
# 增
insert into tt2 values(1,'jason'); # 在表tt2增加字段,id号为1, 对应数据为'jason'
insert into tt2 values(2,'lxx'),(3,'hxx'),(4,'alex') #在表tt2中同时增加3行数据
create table t3(id int primary key auto_increment,name char(10)); # (需要新建表)设置表t3的id字段自动增加,name字段最大为10字节
insert t3(name) values('egon'),('tong'),('lxx');设置自动增加id后,可直接传值values,无需再次传入id字段
# 查
select * from tt2; # 表示查询tt2里面的所有字段, * 表示所有
select id or name from tt2; # id 和name 是表头, 根据实际的表头,如果表头又空格,查询的时候需要加上
# 改
update tt2 set mingzi='egon' where id > 1; # 将tt2中的mingzi数据改成egon, 更改所有id号大于1的
update t2 set name="lxx",id=444 where id=4;更改t2表的name字段为lxx,id号改成444,修改的是id号为4的记录
# 删
delete from tt2 where id > 1; # 删除tt2中所有id号大于1的字段
delete from tt2 where name='json'; # 删除tt2中所有name=json的字段
delete from t2 where id=444;删除t2表下的id等于444的记录
delete from tt2; # 将表tt2清空,这个是一行一行一行清空,数据较大时较慢
建议使用truncate tt2;清空tt2整个表