我是靠谱客的博主 体贴寒风,这篇文章主要介绍数据库基础语法---MySQL8.0忘记密码怎么办?写在最后一、启动MySQL二、登陆MySQL三、SQL语法约束  MySQL设置时区 书写顺序扩展:数据库三大范式MySQL忘记密码系列:,现在分享给大家,希望可以做个参考。

一、启动MySQL

1、以管理员身份进入命令行

2、启动mysql 服务

net start mysql

3、停止mysql 服务

net stop mysql

二、登陆MySQL

1、命令行进入MySQL的安装路径的bin目录下,输入命令 mysql -u root -p 回车进入数据库

mysql -u root -p

连接认证语法:

mysql  -h  主机ip地址  -P  端口号  -u  用户名  -p密码

mysql  -h  localhost  -p  3306  -u  root  -ppassword

2、退出数据库,exit 或 quit 回车退出登陆


三、SQL语法

1、创建数据库

复制代码
1
create database DatabaseName; --create database 数据库名;

2、查看所有数据库

复制代码
1
show databases;

3、创建表

复制代码
1
2
3
4
5
6
7
8
use DatabaseName; -- DatabaseName 为你要操作的数据库 create table TableName( --TableName 为表名 id int primary key auto_increment,--主键约束:primary key,被主键修饰过的字段,唯一非空。一张表只能有一个主键,但是主键可以包含多个字段;auto_increment自增。 name varchar(20),--数据类型varchar为可变长度的字符串。 chinese double(5,2),--该参数长度为5,小数位占两个,最大值:999.99 english double(5,2), math double(5,2) );

例如:在数据库 liarning 中 创建一个 scores表

4、查看当前数据库下的所有表

复制代码
1
show tables;

例如:

5、查看表的结构

复制代码
1
desc TableName; -- TableName 为你的表 的名称

例如:查看scores 表 的表结构

6、修改数据库表的名称

复制代码
1
alter table TableName rename to NewTableName; --TableName:旧表名称,NewTableName:新表名称

例如:将表名 班级表 修改为 Class;

7、修改表的字段(字段名称和类型)(change/modify)

change 可以更改“列名”和“列类型” (每次都要把新列名和旧列名写上, 即使两个列名没有更改,只是改了类型)

modify 只能更改列属性,只需要写一次列名, 比change 省事点

change

复制代码
1
alter table TableName change FieldName NewFieldName; --alter table 表名 change 字段名称 新的字段名称;

例如: id int(11)  修改为 ID varchar(50)

-- change 修改列名 和 类型(注:只修改类型时,列名要写两次)

modify:更改列属性

1、进入MySQL数据库
2、输入命令:alter table 表名 modify 字段名 字段类型;

 添加字段

1、 向building_manager中添加字段 instance_id

复制代码
1
alter table building_manager add column instance_id varchar(255);

2、向building_manager 中添加字段 expire_time

复制代码
1
alter table building_manager add column expire_time datetime;

删除字段 

复制代码
1
alter table `表名` DROP COLUMN 字段名;


1. 新增记录

复制代码
1
2
3
insert into TableName value(字段值1,字段值2,字段值3...); -- TableName 为表名 或 replace into TableName value(字段值1,字段值2,字段值3...); -- TableName 为表名

MySQL 提供了Ignore 用来避免数据的重复插入.

IGNORE :

若有导致unique key 冲突的记录,则该条记录不会被插入到数据库中.

用法:INSERT IGNORE INTO .....

replace into 跟 insert 功能类似

不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

注:若添加中文报错,ERROR 1366 (HY000): Incorrect string value: 'xE5xBCxA0xE4xB8x89' for column 'name' at row 1

则修改中文列的编码格式如下:(若中文列有多列,可多次修改)

复制代码
1
alter table students change name name varchar(255) character set utf8;

例如:(注:若主键没有默认值,则必须指定值(自增时不用))

insert into scores value(1,'张三',98,99,100);

insert into scores(id,name,english,math) values(2,"李四",89,231);

insert into scores(id,chinese) value(3,100);

-- 自增时

insert into scores value(default, '张三', 98, 99, 100)

insert into scores value(null, '张三', 98, 99, 100)

结果如下:

2. 修改记录

复制代码
1
update 表名 set 字段名=新字值 where 条件;

例如:

3. 删除一条记录

复制代码
1
delete from 表名 where 条件;

例如:

4. 查询记录

复制代码
1
2
select * from 表名; -- 查看整个表 select 字段1,字段2 from scores; -- 查看仅含字段1和字段2 的数据内容

例如:

添加 distinct  去重,例如:

-- 将英语分数加10 后显示出来,在查询结果上进行运算,不影响数据库里面的值

 添加注释

 1. 给表添加注释

复制代码
1
2
3
4
# 语法 ALTER TABLE 表名 COMMENT '注释'; # 示例 ALTER TABLE tb_user COMMENT '用户信息表2';

2. 给字段添加注释

 修改字段备注,其实就是修改字段的定义

复制代码
1
ALTER TABLE tb_user MODIFY COLUMN name VARCHAR(30) NOT NULL COMMENT '姓名2';

 


约束 

MySQL唯一约束(UNIQUE KEY)

非外键约束

示例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 删除表 drop table t_student; -- 创建数据库表 creat table t_student( sno int(6) auto_increment, sname varchar(6) not null, -- not null 列级约束 sex char(1) default '男', age int(3), email varchar(15), constraint pk_stu primary key (sno), -- 表级约束;pk_stu 主键约束的名字 constraint ck_stu_sex check (sex = '男' || sex = '女'), -- 表级约束 constraint ck_stu_age check (age >= 18 and age <= 50), -- 表级约束 constraint uq_stu_email unique (email) );

外键约束

复制代码
1
2
3
4
5
create table t_class( cno int(4) primary key auto_increment, cname varchar(10) not null, room char(4) );
复制代码
1
2
3
4
5
6
create table t_student( sno int(6) primary key auto_increment, sname varchar(5) not null, classno int(4), constraint fk_stu_classno foreign key (classno) references t_class (cno) );

 MySQL设置时区

进入MySQL数据库之后,输入命令show variables like'%time_zone'; 看下有没有设置时区

复制代码
1
show variables like'%time_zone';

结果如下:

如果你的system_time_zonetime_zone 的值也是SYSTEM那是还没有设置时区,

输入命令:set global time_zone = '+8:00';设置时区

复制代码
1
set global time_zone = '+8:00';

结果如下设置成功:


 书写顺序

复制代码
1
2
3
4
5
6
7
select <要返回的列名> from <表名> join <join表> on <join条件> where <where条件> like <%> group by <分组条件> having <分组后的筛选条件> order by <排序条件> limit <行数限制>

 操作两条属性用“ ”,and是出现在where后面 

升序:ASC     倒序:DESC

例如:select * from table_name where minor like '10%' order by minor DESC limit(20,30);


 MySQL 中的 IN 运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为 1,否则返回值为 0。
NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为 1,否则返回值为 0。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT * FROM `gm_device_beacon` WHERE 1 = 1 AND BUILD_ID = 123 AND FLOOR_NO = '5' AND ( id ) NOT IN ( SELECT id FROM `gm_device_beacon` WHERE 1 = 1 AND TIME IS NOT NULL AND BUILD_ID = 123 AND FLOOR_NO = '5' )

 结果 = sql.1 - sql.2

如:结果9条记录 = 第一个sql的44条记录 - 第二个sql的35条记录

MySQL UNION 操作符

  •  MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
复制代码
1
2
3
4
5
6
7
SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];
  • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。

  • ALL: 可选,返回所有结果集,包含重复数据。

GROUP BY 语句

  • GROUP BY 语句根据一个或多个列对结果集进行分组。

  • 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

使用 MySQL 的 JOIN 在两个或多个表中查询数据。菜鸟教程JOIN...ON...

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
复制代码
1
SELECT a.id, a.author, b.count FROM table1 a INNER JOIN table2 b ON a.author = b.author;

 

MySQL: left join 与 join 有所不同。 MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。

MySQL: right join 会读取右边数据表的全部数据,即便左边边表无对应数据。

 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
  • <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。

MYSQL 事务处理主要有两种方法:

1、用 BEGIN, ROLLBACK, COMMIT来实现

  • BEGIN 开始一个事务
  • ROLLBACK 事务回滚
  • COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交

扩展:数据库三大范式

第一范式:每个列都不可再拆分

第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分

第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其它非主键



MySQL忘记密码系列:

让MySQL登录的时候跳过密码验证,百度都是让改my.ini配置文件,但是我这里改过配置文件之后MySQL的服务就会自动停止,而且不能再次打开。参考连接:MySQL8.0忘记密码后重置密码

用以下方法不用修改my.ini 文件 ,

以管理员身份打开cmd,

1、先关掉MySQL服务,

net stop mysql

2、输入以下命令:

mysqld --console --skip-grant-tables --shared-memory

3、再次启动MySQL服务

net start mysql

4、服务启动后可以无密码,直接回车进入MySQL

mysql.exe -u root

 5、然后执行sql命令将root用户密码设置为空

UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost'; 

 6、再次设置密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

 然后下次登录就可以使用你的新密码登录啦,

一定要记好你的密码哈

最后

以上就是体贴寒风最近收集整理的关于数据库基础语法---MySQL8.0忘记密码怎么办?写在最后一、启动MySQL二、登陆MySQL三、SQL语法约束  MySQL设置时区 书写顺序扩展:数据库三大范式MySQL忘记密码系列:的全部内容,更多相关数据库基础语法---MySQL8内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(117)

评论列表共有 0 条评论

立即
投稿
返回
顶部