MySQL数据库简介与基本语法
目录
一、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’
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY