热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库简介与基本语法

目录一、MySQL数据库1.简介2.用管理员身份登录3.密码相关操作4.SQL与NoSQL5.数据库重要概念二、MySQL基本语句1.基于库的增删改查2.基于表的增删改查3.基于记

目录



  • 一、MySQL数据库

    • 1.简介

    • 2.用管理员身份登录

    • 3.密码相关操作

    • 4.SQL与NoSQL

    • 5.数据库重要概念



  • 二、MySQL基本语句

    • 1.基于库的增删改查

    • 2.基于表的增删改查

    • 3.基于记录的增删改查

    • 4.在python中操作mysql

    • 5.数据表结构

    • 6.实例




一、MySQL数据库

1.简介

MySQL是一款数据库软件

(1)版本问题

8.0:最新版

5.7:使用频率较高

5.6:学习推荐使用

ps:站在开发的角度使用哪个版本学习都没有关系

(2)主要目录介绍

bin目录 -->存放启动文件:mysqld.exe 、mysql.exe

data目录 -->存放核心数据:my-default.ini 默认的配置文件


2.用管理员身份登录

直接使用mysql命令默认是游客模式 权限和功能都很少
mysql -u用户名 -p密码
管理员默认没有密码 连续回车即可
mysql -uroot -p

3.密码相关操作

1.修改密码
添加好环境变量后
方式 1:mysqladmin
cmd终端内输入:
mysqladmin -uroot -p原密码 password 新密码
方式 2:直接修改存储用户数据的表
方式 3:冷门操作
set password=password('新密码') # 修改当前登录用户
2.忘记密码
方式 1:重新按转mysql
方式 2:把data目录删除,拷贝别人的data目录
方式 3:通过命令操作
1)关闭正常的服务端
net stop mysql
2)以跳过授权表的方式重启服务端(不校验密码)
mysqld --skip-grant-table
3)单开一个cmd以管理员身份进入修改mysql.user表数据即可
mysql -uroot -p 进入mysql管理员
update mysql.user set password=password('新密码') where Host='localhost' and User='root':
4)关闭服务端以正常方式启动
net start mysql


4.SQL与NoSQL

数据库服务端是可以服务多种类型的客户端的

​ 客户端可以是自己开发的,也可以是python代码编写的,或者java 代码编写,所以要统一语言

SQL语句:操作关系型数据库的语言

NoSQL语句:操作非关系型数据库的语言

ps:SQL有时候也指代关系型数据库,NoSQL也指代非关系型数据库


要想和数据库交流,就必须用数据的语言,但我们掌握增删改查功能就可以



5.数据库重要概念

(1): 相当于是 文件夹

(2): 相当于是 文件夹里面的文件

(3)记录: 相当于是 文件夹里面的文件中的一行行数据

1.查看所有的库名称
show databases
2.查看所有的表名称
use mysql 切换进入库中
show tables
3.查看所有的记录
select * from user\G

二、MySQL基本语句

1.sql语句必须以分号 ; 结尾
2.sql语句编写错误: 1)直接报错 2)\c 取消执行

1.基于库的增删改查

不要对mysql自带的库进行操作

1.创建库
create databases 库名;

2.查看库
查看所有库名称 show databases;
查看指定库信息 show create database 库名;

3.编辑库
alter database 库名 charset='utf8';

4.删除库
drop database 库名;


2.基于表的增删改查

操作表之前需要先确定库

0.创建库,并指定库
create database db1;
切换操作库
use db1;
1.创建表
create table 表名(字段名 字段类型,id int);

2.查看表
1)查看库下面所有的表名称
show tables;

2)查看指定表信息
show create table 表名;

3)查看表结构
describe 表名;
desc 表名; # 简写

查看指定库中表的信息
desc 库名 表名;

3.编辑表
1)修改表名
alter table 表名 rename 新表名;
4.删除表
drop table 表名;

3.基于记录的增删改查

Curd?

1.插入数据
insert into 表名 values(数据值,按照位置一一传递);

2.查找数据
1)查找表中所有的数据
select * from 表名;
2)查找表中指定的数据
select 指定数据 from 表名;
3.编辑数据
update 表名 set 字段名='新数据' where id=1;
# where筛选条件 改成id 1字段中的数据

4.删除数据
1)删除表中所有的数据
delete from 表名;
2)删除表中指定的数据
delete from 表名 where 筛选条件;


4.在python中操作mysql

import pymysql
# 连接mysql,输入root账户和密码
cOnn= pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root123', charset='utf8')
cursor = conn.cursor()
# 1 新增
cursor.execute("create database db4 default charset utf8 collate utf8_general_ci")
conn.commit()
# 2 查看数据库
cursor.execute("show databases")
cursor.execute("use db4")
# 查看数据表
cursor.execute("show tables")
result = cursor.fetchall()
conn.commit()
# 3 删除数据库db4
cursor.execute("drop database db4")
conn.commit()
# 4 用mysql查看其中的数据表
cursor.execute("use mysql")
cursor.execute("show tables")
res = cursor.fetchall()
print(res) # (('columns_priv',), ('db',), ('engine_cost',), ('event',), ('func',), ('general_log',), ('gtid_executed',), ('help_category',), ('help_keyword',), ('help_relation',), ...
# 5 关闭连接
cursor.close()
conn.close()

5.数据表结构

create table 表名(
列名 类型,
列名 类型,
列名 类型
)default charset=utf8;

create table tb1(
id int,
name varchar(16),
)default charset=utf8;

create table tb2(
id int,
name varchar(16) not null, -- 不允许为空
email varchat(32) null, -- 允许为空(默认)
age int
)default charset=utf8;

create table tb3(
id int,
name varchar(16) not null, -- 不允许为空
email varchat(32) null, -- 允许为空(默认)
age int default 3 -- 插入数据时,如果不给age列设置值,默认为3
)default charset=utf8;

create table tb4(
id int primary key, -- 主键(不允许为空、不能重复)
name varchar(16) not null, -- 不允许为空
email varchat(32) null, -- 允许为空(默认)
age int default 3 -- 插入数据时,如果不给age列设置值,默认为3
)default charset=utf8;

主键一般用于表示当前这条数据的ID编号(类似于人的身份证),需要我们自己来维护一个不重复的值,比较繁琐。所以,在数据库中一般会将主键和自增结合。???

create table tb5(
id int not null auto_increment primary key, -- 不允许为空,自增,主键
name varchar(16) not null, -- 不允许为空
email varchar(32) null, -- 允许为空
age int default 3 -- 插入数据时,如果不给age列设置值,默认为3
)default charset=utf8;

注意一个表中只能有一个自增列【一般为主键】


mysql> desc tb5;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(16) | NO | | NULL | |
| email | varchar(32) | YES | | NULL | |
| age | int(11) | YES | | 3 | |
+-------+-------------+------+-----+---------+----------------+

6.实例

创建账户,grant权限

# 寻找user,host
mysql> select user,host from mysql.user;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> set password='123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from mysql.user;
+-----------+-----------+
| user | host |
+-----------+-----------+
| mysql.sys | localhost |
| root | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)
# 创建 localhost 名为 moongod,密码identified 为 空
mysql> create user moongod@'localhost' identified by '';
Query OK, 0 rows affected (0.00 sec)
# grant 高级 DBA 管理 MySQL 中所有数据库的权限
mysql> grant all on *.* to 'moongod'@'localhost';
Query OK, 0 rows affected (0.00 sec)

grant的一些语法

1. grant 作用在整个 MySQL 服务器上:
grant select on *.* to dba@localhost; — dba 可以查询 MySQL 中所有数据库中的表。
grant all on *.* to dba@localhost; — dba 可以管理 MySQL 中的所有数据库
2. grant 作用在单个数据库上:
grant select on testdb.* to dba@localhost; — dba 可以查询 testdb 中的表。
3. grant 作用在单个数据表上:
grant select, insert, update, delete on testdb.orders to dba@localhost;
这里在给一个用户授权多张表时,可以多次执行以上语句。例如:
grant select(user_id,username) on smp.users to mo_user@’%’ identified by ‘123345′;
grant select on smp.mo_sms to mo_user@’%’ identified by ‘123345′;
4. grant 作用在表中的列上:
grant select(id, se, rank) on testdb.apache_log to dba@localhost;
5. grant 作用在存储过程、函数上:
grant execute on procedure testdb.pr_add to ‘dba’@'localhost’
grant execute on function testdb.fn_add to ‘dba’@'localhost’


推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
author-avatar
有些浮夸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有