mysql md_8.mysql-基础.md

本文详细介绍了MySQL数据库的管理,包括查看、创建、删除数据库,管理表的创建、修改、删除,以及数据的插入、查询、更新和删除操作。还涉及到字符集设置、表结构描述、数据约束如默认值、非空和主键自增,以及外键和级联操作的概念与实践。
摘要由CSDN通过智能技术生成

数据库管理

查看当前软件中的数据库

show databases;

出现结果:

+--------------------+

| Database |

+--------------------+

| information_schema | --这个是mysql的元数据

| mysql | --这个是mysql的配置数据库,包含用户信息,权限等

| performance_schema | --这个是mysql的运行数据,日志

| test | --这个是mysql的测试数据库,初始是空的

+--------------------+

工具

SQLyog_Enterprise.rar

创建数据库

直接创建

create database hi;

``

创建并设置字符集:注意数据库中的utf-8不带有横杠,写为utf8

```mysql

create database ss

default character set utf8;

删除数据

drop database hi;

查看字符集

show careate database ss;

修改数据库

alter database ss default character set gbk;

表管理

进入数据库

use hi;

查看表

show tables;

创建表

create table person(

id int,

name varchar(20),

age int

);

查看表结构

desc person;

出现:

mysql> desc person;

+-------+-------------+------

| Field | Type | Null

+-------+-------------+------

| id | int(11) | YES

| name | varchar(20) | YES

| age | int(11) | YES

+-------+-------------+------

3 rows in set (0.03 sec)

删除表

drop table person;

修改表

添加字段

alter table person add column hight int;

删除字段

alter table person drop column hight;

修改字段名称

修改字段类型

alter table person modify column hight varchar(8);

修改表名称

alter table person change column hight int;

插入数据

插入所有字段数据

USE hi;

-- 1.增加数据

INSERT INTO person VALUES(1, '张三', 25, '什么');

-- 2.查询数据

SELECT * FROM person;

插入指定字段

-- 3.插入指定字段

INSERT INTO person(id) VALUES(2);

修改

删除

查询优化

空比较

-- 和空字符串比较

SELECT * FROM person AS p WHERE p.name <> ''

-- 和NULL比较

SELECT * FROM person AS p WHERE p.name IS NOT NULL

模糊查询

-- %表示任意个字符比配

SELECT * FROM person AS p WHERE p.name LIKE '%三'

-- _表示单个个字符比配

SELECT * FROM person AS p WHERE p.name LIKE '_三'

分页查询

-- limit分页(起始行,查几行)

SELECT * FROM person LIMIT 0,1;

-- 分页:当前页 每一页显示数据量

-- 分页查询:LIMIT (当前页-1)*每页显示条数, 每页显示条数

数据约束

默认值和非空

-- 默认值

CREATE TABLE default_test(

id INT,

NAME VARCHAR(8) DEFAULT 'a'

);

INSERT INTO default_test(id) VALUES(1);

-- 非空

not null

-- 唯一

CREATE TABLE student(

id INT UNIQUE, -- 唯一

NAME VARCHAR(20)

)

主键和自增长

通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。

不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的 id字段。

CREATE TABLE student(

id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, -- 自增长,从0开始 ZEROFILL 零填充。也就是原来的自增长是0,1....而现在int是4位的,变为:0001,0002....

NAME VARCHAR(20)

)

这里要注意,如果删除数据时候,自增长的删除与否是可设置的

-- 不能影响自增长约束

DELETE FROM student;

-- 可以影响自增长约束

TRUNCATE TABLE student;

外键

-- 部门表(主表)

CREATE TABLE dept(

id INT PRIMARY KEY,

deptName VARCHAR(20)

)

-- 修改员工表(副表/从表)

CREATE TABLE employee(

id INT PRIMARY KEY,

empName VARCHAR(20),

deptId INT,-- 把部门名称改为部门ID

-- 声明一个外键约束

CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)

-- 外键名称 外键 参考表(参考字段)

)

注意:

被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!

主表的参考字段通用为主键!

添加数据: 先添加主表,再添加副表

修改数据: 先修改副表,再修改主表

删除数据: 先删除副表,再删除主表

级联操作

级联修改: ON UPDATE CASCADE

级联删除: ON DELETE CASCADE

CREATE TABLE employee(

id INT PRIMARY KEY,

empName VARCHAR(20),

deptId INT,-- 把部门名称改为部门ID

-- 声明一个外键约束

CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE-- ON CASCADE UPDATE :级联修改

-- 外键名称 外键 参考表(参考字段)

)

-- 注意: 级联操作必须在外键基础上使用

MySQL中的`mysql_native_password`是一种对用户密码进行哈希处理的方式,它使用的是较早版本的MD5算法。如果你想要将用户的登录密码从其他加密规则(如`sha256_password`或其他自定义规则)还原回`mysql_native_password`格式,你需要按照以下步骤操作: 1. **备份当前数据库**: 在修改之前,始终先备份数据以防意外。 2. **更改密码存储方式**: 登录到MySQL服务器,作为拥有足够权限的管理员。运行以下命令将密码验证插件设置回`mysql_native_password`: ```sql ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'; ``` 如果用户名或主机名不是默认值,替换相应的部分。 3. **更新所有用户的密码**: 对于所有的用户,你可以运行类似下面的脚本来批量更新,这里假设`all_users`是一个包含所有用户的查询结果: ```sql UPDATE users SET authentication_string = PASSWORD('new_password') WHERE username IN (SELECT username FROM all_users); ``` 4. **重启MySQL服务**: 修改后,需要重启MySQL服务才能应用新的配置: ```bash service mysql restart ``` 5. **检查并确认**: 使用新设置的`mysql_native_password`验证用户登录,确保可以正常访问。 **注意事项**: - 这种转换通常适用于升级过程中,因为`mysql_native_password`不再被认为是安全的,因为它易于暴力破解。 - 如果用户已经设置了复杂且强效的`sha256_password`密码,直接转换可能会丢失安全性优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值