数据库-MySQL数据库表基础操作

这篇博客详细介绍了MySQL数据库的基础操作,包括启动与关闭数据库、修改root密码、数据库表的操作如创建、删除、修改和查询,以及存储引擎的介绍,如InnoDB、MyISAM和MEMORY。还涉及到了字符集的设置、权限控制和密码策略等内容,适合MySQL初学者参考学习。
摘要由CSDN通过智能技术生成

https://www.w3school.com.cn/sql/sql_select.asp

数据库启动

1、启动与关闭
RHEL7:systemctl start|stop mysqld
2、登录与退出

mysql -u user_name -ppassword -h host_name

h:连接MySQL不在本机时,填写主机名或IP地址
u:登录MySQL用户
p:登录MySQL的密码
注意:密码写在命令行时一定不能有空格
3、设置及修改MySQL root用户密码
没有密码时设置:

mysqladmin -uroot password '123456'

修改root密码

方法1:mysqladmin -uroot -p'123456' password;
方法2:ALTER USER root@localhost identified by '123456'; 
方法3:
mysql> update mysql.user set authentication_string=password('123456') 
-> where user='root' and host='localhost';

root密码遗忘

1、关闭数据库,修改主配置文件(/etc/my.cnf)添加:skip-grant-tables
2、启动数据库, 直接登录

mysql> update mysql.user set authentication_string=password('ABCabc123!')
    -> where user='root' and host='localhost';
mysql> flush privileges;

3、将配置文件的skip-grant-tables删除。

数据库安全初始设置

[root@mysql02 ~]# mysql_secure_installation 

Securing the MySQL server deployment.

Enter password for user root:                                           输入root用户密码
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 0 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n    是否改变root用户密码

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y        是否移除匿名用户
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y        是否禁止root用户远程登录
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y   是否移除test数据库
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y      是否现在更新权限表 
Success.

All done! 

数据库表操作

SQL语句主要可以划分为以下几类:
DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作。
CREATE、DROP、ALTER、RENAME、 TRUNCATE等
DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。
INSERT、DELETE、UPDATE、SELECT等
DCL(Data Control Language):数据控制语言 ,定义对数据库、表、字段、用户的访问权限和安全级别。
GRANT、REVOKE等
**Transaction Control:事务控制 **
COMMIT、ROLLBACK、SAVEPOINT等

SQL语句的书写规范

1、SQL语句不区分大小写,建议用大写
2、字符串常量区分大小写
3、以“;”结尾
4、关键字不能跨多行或简写
5、子句具有独立性,便于编辑,提高可读性。
注释:
SQL标准:/**/ 多行注释
“–” 单行注释
MySQL注释:
“#”

数据库操作

1、查看数据库
mysql> show databases;
语法:SHOW DATABASES [LIKE wild]+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
eg:
mysql> show databases like "m%";  
"_" 代表一个字符
“%” 代表任意多个

MySQL自带数据库:

1、Information_schema:主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)
2、performance_schema:主要存储数据库服务器的性能参数 
3、mysql:存储了系统的用户权限信息及帮助信息。 
4、sys:5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和 performance_schema结合起来,查询出更加令人容易理解的数据 
5、test:系统自动创建的测试数据库,任何用户都可以使用。
2、创建数据库
语法:CREATE DATABASE [IF NOT EXISTS]数据库名;

eg:
mysql> create database  db2;
mysql> create database  if not exists db2;
3、删除数据库(一次只能删除一个数据库)
语法: DROP DATABASE [IF EXISTS]数据库名; 
功能:删除数据库中得所有表和数据库

eg:
mysql> drop database if exists db1;
4、切换数据库
mysql> use db1;
Database changed
5、查看数据库的相关信息
 # 查看当前连接的数据库
mysql> select database();  
+------------+
| database() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)

#查看数据库的版本
mysql> select version();   
+-----------+
| version() |
+-----------+
| 5.7.14    |
+-----------+
1 row in set (0.00 sec)

#查看当前用户
mysql> select user();  
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
6、在MySQL中执行linux指令 ,注意前面加system
mysql> system date;  
2021年 01月 13日 星期三 13:44:31 CST

执行Linux命令: 
SYSTEM <命令>

存储引擎

1、innoDB存储引擎

InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 的默认存储
引擎为InnoDB。
InnoDB主要特性有:
⑴ InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。
⑵ InnoDB是为处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据
库引擎所不能匹敌的。
⑶ InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持
它自己的缓冲池。
⑷ InnoDB支持外键完整性约束(FOREIGN KEY)。 ⑸ InnoDB被用来在众多需要高性能的大型数据库站点上。

2、MyISAM存储引擎

MyISAM主要特性有:
⑴ 大文件(达63位文件长度)在支持大文件的文件系统和操作系统上被支持。
⑵ 当把删除和更新及插入混合的时候,动态尺寸的行更少碎片。
⑶ 每个MyISAM表最大索引数是64。 ⑷ 最大的键长度是1000字节。
⑸ BLOB和TEXT列可以被索引。
⑹ NULL值被允许在索引的列中。这个占每个键的0-1个字节。
⑺ 所有数字键值以高字节位先被存储以允许一个更高地索引压缩。
⑻ 每表一个AUTO_INCREMEN列的内部处理。
⑼ 可以把数据文件和索引文件放在不同目录。
⑽ 每个字符列可以有不同的字符集。

3、MEMORY存储引擎

MEMORY主要特性有:
⑴ MEMORY表可以有多达每个表32个索引,每个索引16列,以及500字节的最大键长度。
⑵ MEMORY存储引擎执行HASH和BTREE索引。
⑶ 可以在一个MEMORY表中有非唯一键。
⑷ MEMORY表使用一个固定的记录长度格式。
⑸ MEMORY不支持BLOB或TEXT列。
⑹ MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列索引。
⑺ MEMORY表在所有客户端之间共享。
⑻ MEMORY表内容被存在内存中。
⑼ 当不再需要MEMORY表的内容之时,要释放被MEMORY表使用的内存。

存储引擎的选择

不同存储引擎都有各自的特点,适应于不同的需求,为了做出选择,首先需要考虑每一个存储引擎提供
了那些不同的功能。
在这里插入图片描述

MySQL字符集

MySQL字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念:

latin1:支持西欧字符、希腊字符等
gbk:支持中文简体字符
big5:支持中文繁体字符
utf8:几乎支持世界所有国家的字符。

1、查看所有字符集: SHOW VARIABLES like ‘character%’;

mysql> show create database db1;      查看db1数据库使用的字符集    
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show variables like '%character%';   查看所有字符集
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
character_set_client:MySQL客户机字符集。 
character_set_connection:数据通信链路字符集,当MySQL客户机向服务器发送请求时,请求数据以该字符集进行编码。 
character_set_database:数据库字符集。 
character_set_filesystem:MySQL服务器文件系统字符集,该值是固定的binary。 
character_set_results:结果集的字符集,MySQL服务器向MySQL客户机返回执行结果时,执行结果以该字符集进行编码。 
character_set_server:MySQL服务实例字符集。 
character_set_system:元数据(字段名、表名、数据库名等)的字符集,默认值为utf8。

2、查看当前show:SHOW COLLATION;

mysql> SHOW COLLATION;
+--------------------------+----------+-----+---------+---------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值