mysql基础

MySQL数据库

一、MySQL数据库的介绍

发展史:

1996年 MySQL1.0

2008年1月16日 Sun公司收购MySQL

2009年4月20日 Oracle收购Sun公司

MySQL是一种开放源代码的关系型数据库管理系统 (RDBMS) 使用最常用的数据库管理语言 SQL(结构化查询语言) 进行数据库管理

介绍:

MySQL是一个关系型数据库管理系统 由瑞典MySQLAB公司研发 目前属于Oracle旗下产品 MySQL是最流行的关系型数据库管理系统之一 MySQL软件采用了双授权正则 分为社区版和商业版 由于体积小 速度快 总体拥有成本低 尤其是开放源代码这一个特点 一般中小型网站开发都选择MySQL作为网站数据库

社区版和企业版本的区别

主要有以下俩点的区别:

  1. 企业版只包含稳定之后的功能 社区版含所有MySQL最新的功能 也就是说 社区版是企业版的测试版 但是社区版的功能多于企业版
  2. 官方的支持服务只针对企业版 用户在使用社区版本时 出现的任何问题 MySQL官方概不负责

下载:

进入MySQL官网 : https://www.mysql.com

二、数据库的分类

关系型与非关系型数据库

关系型数据库的优势:

  1. 复杂查询

    可以使用SQL语句 很方便的在一个表以及多个表之间进行复杂的数据查询

  2. 事物处理

    对于数据安全性要求很高的功能得以实现

非关系型数据库的优势

  1. 性能

    NOSQL 是基于键值对的 可以想象成表中的主键和值对应关系 不需要经过SQL层的解析 所以性能很高

  2. 可扩展性

    同样也是因为基于键值对 数据之间没有耦合性 所以容易水平扩展

三、进入到MySQL数据库

(1)简单模式

mysql -uroot -p

输入密码 123456

(2) 标准模式

mysql -h127.0.0.1 -uroot -p

输入密码

参数:

-h host 主机

-u user 用户名

-p passsword 密码

(3) 概念理解

MySQL数据库(软件名称) ----》很多数据库(比如 想要有一个装大米的库 你就可以在mysql数据库下创建大米库 )---->表(真正存储数据的)

表:

用户表 存的就是用户信息的

地址表 存储的就是用户的地址数据

购物车表 存储的就是用户加入购物车的数据

商品表 存储当前商品数据的表

四、对于MySQL数据库的操作

对于库和表的操作的单词

**创建 ** create

删除 drop

查看 show

修改 alter

(1) 查看所有的数据库

show databases;

(2) 选择数据库

use 数据库名称

(3) 查看当前数据库下有哪些表

show tables;

(4) 查看当前所在的库

select database();

(5) 创建数据库

create database 库名;

(6) 查看当前创建库的信息

show create database 库名;

(7) 修改数据库字符编码

alter database 库名 character set utf8;

(8) 修改表的字符编码

alter table 表名 character set utf8;

(9) 修改表中字段的字符编码

alter table 表名 modify 字段名 字段类型 约束条件 character set utf8;

(10) 删除库/删除表

drop database 库名

drop table 表名

(11) 创建数据库并设置字符编码

create database 库名 character set utf8;

(12) 防止删除不存在的库报错

drop database if exists today;

(13) 查看创表的结构

show create table 表名;

show create table 表名 \G;

(14) 查看表结构

desc 表名;

(15) 撤销当前命令

\c

(16) 数据库的退出
  1. \q
  2. exit
  3. quit

注意:

  1. MySQL语句的结尾为分号
  2. 数据库的切换直接use就可以 就进行了数据库的切换
  3. 如果创建库的时候 忘记更改字符编码 那么在创建的表都是当前数据库的编码 存入中文可能会乱码 怎么解决?先改库的编码 在改表的编码 在改字段的编码 所以很麻烦 不如直接删掉 重新创建
  4. windwos下库名和表名不区分大小写 Linux下严格区分

(17)删除一个表,并将默认排序改为从1开始

delete from 表名;

alter table 表名 auto_increment=1;

五、MySQL表的创建

字段类型
(1) 数值类型
类型大小范围(有符号)范围(无符号)用途
tinyint1字节-128~1270~255小整数值
smallint2字节-32768~327670,65535大整数值
int4字节-214748364~2147483647大整数值
float4字节单精度浮点型
double8字节双精度浮点型
decimaldecimal(m,d) 为m+2依赖于m和d的值依赖于m和d的值小数值(更加精准)

创建表的语句结构:

create table 表名(
字段名称 字段类型 约束条件 可选项,
  ...
  索引名称 索引类型
  ...
)

实例:

创建表语句:

mysql> create table testnum(
    -> ttinyint tinyint,
    -> tsmallint smallint,
    -> tint int,
    -> tfloat float(6,2),
    -> tdouble double(6,2),
    -> tdecimal decimal(6,2)
    -> );

查看表结构

mysql> desc testnum;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| ttinyint  | tinyint(4)   | YES  |     | NULL    |       |
| tsmallint | smallint(6)  | YES  |     | NULL    |       |
| tint      | int(11)      | YES  |     | NULL    |       |
| tfloat    | float(6,2)   | YES  |     | NULL    |       |
| tdouble   | double(6,2)  | YES  |     | NULL    |       |
| tdecimal  | decimal(6,2) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

表插入语句:

insert into 表名(字段1,字段2…) values(值1,值2…); 可以指定想要插入值的字段

insert into 表名 values(值1,值2…); 需要将所有字段都插入值

(2) 日期和时间类型
类型大小格式用途
date3YYYY-MM-DD日期值
time3HH:MM:SS时间值
year1YYYY年分值
datetime8YYYY:MM:DD HH:MM:SS混合日期和时间值
timestamp4YYYYMMDDHHMMSS混合日期和时间值

创建表语句

mysql> create table testtime(
    -> tdate date,
    -> ttime time,
    -> tyear year,
    -> tdatetime datetime default now(),
    -> ttimestamp timestamp
    -> );
(3) 字符串类型
类型大小用途
char0-255字节定长字符串
varchar0-255变长字符串
text0-65535长文本数据
lonetext极大文本数据
enum(成员1,成员2…)65535个成员枚举:可赋予某个枚举成员
set(成员1,成员2…)64个成员集合:可赋予多个集合成员 多个集合成员用逗号隔开

创建表语句:

mysql> create table teststr(
    -> tchar char(11),
    -> tvarchar varchar(5),
    -> ttext text,
    -> tenum enum('w','m'),
    -> tset set('a','b','c','d')
    -> );

字符串类型注意事项:

  1. char和varchar的区别
  • char执行效率高于varchar (但是占用空间大)
  • varchar就相对于节省空间
  • char和varchar长度存储范围都在255
  • 当给char类型传入值的长度低于给定的长度 则使用空格填充到指定的长度
  • varchar类型传入的值小于给定的长度 不会使用空格填充

2)enum和set的区别

  • enum只能选择多个成员中的一个成员
  • set可以选择多个成员 如果存在重复的成员 则会自动去重
  • enum和set 都只能选择给定的成员

六、字段约束

  1. unsigned 无符号 只能存储正数

    只能用于设置数值类型 不允许出现负数

    最大存储长度会增加一倍

    实例:

    mysql> create table testunsigned(
        -> age1 tinyint,
        -> age2 tinyint unsigned
        -> );
    
  2. zerofill 零填充

    只能用于设置数值类型 在数值之前会自动用零补齐不足的位数

    实例:

    mysql> create table tz(
        -> num int(5),
        -> num2 int(5) zerofill
        -> );
    
  3. default 默认值 如果不给定 则为默认null

    实例:

    mysql> create table testdef(

    -> username varchar(5) default 'lucky',
    -> age tinyint unsigned
    -> );
    
  4. auto_increment 自增 配合主键使用

    用于设置字段的自动增长 每增加一条记录 那么该字段的值会自动增加

    实例:

    mysql> create table test(
        -> id int unsigned primary key auto_increment,
        -> username varchar(10) default 'lucky'
        -> );
    
    

    注意:

    插入数据的时候 自增无须给值 会从1 自动递增 (当然给值也可以)

  5. null 和 not null

    字段没有给定默认值的情况下 默认为null

    如果你设置了 not null 那么该字段就必须在插入数据的时候 给值 否则默认为null 但是又不能为null 所以报错

    实例:

    mysql> create table test(
        -> id int unsigned primary key auto_increment,
        -> username varchar(10) default 'lucky',
        -> sex tinyint not null
        -> );
    
    
  6. comment 设置说明

    mysql> create table user(
        -> id int unsigned primary key auto_increment,
        -> username varchar(20) not null default 'lucky' comment '存储用户名'
        -> );
    
    alter table 表名 comment="表说明"
    
    

七、null注意事项

(1) null 意味着没有值 或者未知值

(2) 不能对null 进行算数运算

(3) 对null进行运算 结果还是为null

(4) 0或者null 都是假值False 其余都为真

八、MySQL索引

MySQL下有四种索引

  1. 主键索引 primary key
  2. 唯一索引 unique
  3. 常规索引 index
  4. 全文索引 fulltext
(1) 主键索引

主键索引是关系型数据库中最常见的索引类型 主要作用是确定表里的一条数据的确定位置 我们可以使用 primary 可以 进行设置主键

注意事项:

  1. 最好为每张表指定一个主键索引 但不是必须的
  2. 一个表只能指定一个主键索引 值不能为null 通常和auto_increment 搭配使用

创建:

create table test(
	id int unsigned primary key auto_increment
)

自增归位

当删除掉数据库中的数据的时候 那么自增依然保持原来的增长位置 这样就浪费了之前的存储位置 所以要进行自增归位

  1. truncate 表名; 清空所有的表中数据 并进行归位
  2. alter table 表名 auto_increment=1; 将自增改为1
(2) 常规索引 index

常规索引是关系型数据库中 最重要的技术 如果要提升数据库的性能 索引优化是首先应该考虑 因为它能使我们的数据库的性能得到最大提升

缺点:

  1. 多占用磁盘空间
  2. 会减慢插入 修改 和删除的操作

创建常规索引

创建常规索引 可以和 index 或者key 关键字 进行一同创建

实例:

起索引名称

mysql> create table user(
    -> id int unsigned primary key auto_increment,
    -> username varchar(20),
    -> index u_index(username)
    -> );

索引名称为 u_index 给username字段添加常规索引

不起索引名称

mysql> create table user(
    -> id int unsigned primary key auto_increment,
    -> username varchar(20),
    -> index username
    -> );

说明:

如果给索引起名称 那么索引名就是你起的名称 如果不起则为字段名

注意:

  1. 在给mysql创建常规和唯一索引的时候 不要写在一行 否则会报错
  2. 一个表中可能会存在多个常规索引 但是要根据具体情况去设置 设置某个字段在有大量查询的时候
(3) 唯一索引 unique

唯一索引与主键索引一样 都可以防止创建重复的值 但是不同之处在于 每个数据表只可以有一个主键索引 但是可以有多个常规索引 可以使用unique进行定义唯一索引

注意:

如果在给表中插入数据的时候 出现了报错 并且数据都没有问题 那么查看一下 是否有唯一索引存在

实例:

mysql> create table user2(
    -> username varchar(10),
    -> sex tinyint,
    -> unique u_username(username)
    -> );

给username添加了唯一索引 索引名称为u_username

不起名称

mysql> create table user2(
    -> username varchar(10),
    -> sex tinyint,
    -> unique(username)
    -> );

(4) 全文索引 fulltext(了解)

全文索引 fulltext 只能用于MyISAM表类型 并且只能设置字段为char、varchar或text的字段类型上

缺点:

fulltext是不支持中文索引的

实例:

create table test_fulltext(
	article text,
	fulltext key article(article)
)

九、数据表类型与存储位置

MyISAM与innodb 是最为重要的俩种表引擎类型

MyISAM与innodb的区别:

  1. MyISAM表类型会产生三个文件 innodb有俩个
  2. MyISAM表类型效率更高
  3. innodb的安全性高于MyISAM
  4. innodb支持事物处理 MyISAM不支持
  5. MyISAM不支持外检 innodb支持

MyISAM与innodb存储文件的区别和代表的含义

修改表存储引擎

alter table 表名engine=myisam/innodb;

MyISAM与innodb引擎相同存储文件

.frm 存储数据表的框架结构 文件名与表名是相同的 每个表对应一个同名的frm文件

innodb

.ibd 存储数据库表数据和索引

MyISAM

.MYD my data 表数据文件

.MYI my index 索引文件

数据库:

数据库也是以文件形式存储在磁盘上 Data文件中

九、innodb的事物处理

如果mysql的配置文件没有更改过 那么默认为MyISAM 可以在my.ini配置文件中 更改为innodb

(1) 查询当前是否为自动提交

select @@autocommit

如果值为1则为自动提交

(2) 开启事物处理

set autocommit = 0;

(3) 开始事物

begin

(4) 执行SQL语句

insert into user2 values(‘lucky’,0)

(5) 提交或回滚

commit work;

rollback work;

注意:

  1. 如果开启了事物 在处理数据后 没有进行提交或回滚 那么你的操作和没有操作一样 也就是相当于回滚了
  2. 只有innodb支持事物 MyISAM不支持 所以当你插入数据所有执行都没有问题 那么查看是否为MyISAM表存储引擎

十、建表的注意事项

  1. 表的字段之间要是用逗号隔开 最后一个字段的结尾 不需要添加逗号
  2. 数据表名 不要和字段名重名
  3. 字段名不要使用表类型或者数据库中的任何关键字 否则会出现问题
  4. auto_increment 属性 必须依赖于主键索引

十一、对表结构的操作

  1. 给表添加一个新的字段

    alter table 表名 add 字段名 字段类型 约束条件 说明

    alter table user add info varchar(40) default ‘个人信息’ comment ‘个人信息’;

  2. 删除一个字段

    alter table 表名 drop 字段名

    alter table user drop sex;

  3. 更改字段名

    alter table 表名 change 原字段名 新字段名 字段类型 约束条件 说明

    alter table user change username name varchar(20) default ‘xxx’ comment ‘用户名’;

  4. 修改字段信息

    alter table 表名 modify 字段名 字段类型 约束条件 说明

    alter table user modify name varchar(10) default ‘lucky’;

  5. 更改字段位置

    alter table 表名 modify 字段名 字段类型 约束条件 说明 first/after 字段名 排在第一位或者某个字段的后面 默认为最后一个

    alter table user modify sex enum(‘w’,‘m’) default ‘w’ first;

    alter table user modify sex enum(‘w’,‘m’) default ‘w’ after name;

  6. 表添加索引

    alter table 表名 add 索引类型 索引名称(字段名) 添加索引名

    alter table user add key i_name(name);

​ alter table 表名 add 索引类型(字段名) 不添加索引名

​ alter table user add unique(sex);

  1. 删除索引

    alter table 表名 drop key 索引名;

    alter table user drop key sex;

  2. 创建一个和a表一样表结构的b表

    create table b like a;

十二、数据的添加 insert

  1. 指定字段添加值

    insert into 表名(字段1,字段2…) values(值1,值2…)

    insert into user(name,sex,info) values(‘lucky’,‘w’,‘lucky的个人信息’);

  2. 不指定字段添加值

    insert into 表名 values(值1,值2…)

    insert into user values(null,‘lucky’,‘w’,‘lucky的个人信息’);

  3. 指定字段添加多个值

    insert into 表名(字段1,字段2…) values(值1,值2…),(值1,值2…)…

    insert into user(name,sex,info) values(‘lucky’,‘w’,‘lucky的个人信息’),(‘张三’,‘m’,‘张三的个人信息’);

  4. 不指定字段添加多个值

    insert into 表名 values(值1,值2…),(值1,值2…)…

    insert into user values(null,‘lucky’,‘w’,‘lucky的个人信息’),(null,‘张三’,‘m’,‘张三的个人信息’);;

注意:

指定字段与不指定字段在添加值的时候 按照从左至右依次对应添加

十三、select 查询

  1. 不指定字段的查询(不建议)

    select * from 表名

  2. 指定字段查询

    select 字段名,字段名… from 表名

  3. 对查询的字段起别名

    select name username,sex my_sex from user;

    select name as username,sex as my_sex from user;

  4. 给查询的结果添加一个新字段

    select id,name,sex,‘北京’ as address from user;

十四、update 修改

  1. 修改一个字段的值

    update user set name=‘赵四’; 错误注意写法 修改了当前user表中name字段的所有值

    update user set name=‘赵四’ where id=1; 修改id为1的name的值为赵四

  2. 修改多个字段的值

    update user set name=‘张三’,sex=‘m’ where id=2;

  3. 给字段的值在原有的基础上改变

    update user set age = age+2 where id=3; 把id为3的数据的年龄 在原有的基础上加2

注意:

在进行数据的修改的同时 一定记得给where条件 如果没有给定where 条件 则修改的为整张表当前字段的值

十五、delete 删除

主体结构:

delete from 表名 [where]

实例:

delete from 表名 删除表中的所有数据…

注意:

删除一定注意要添加where条件 否则会删除整张表中的所有数据 并且auto_increment自增字段的值 不会改变 所以需要将自增归位

十六、where条件

表结构:

+-------+---------------------+------+-----+----------+----------------+
| Field | Type                | Null | Key | Default  | Extra          |
+-------+---------------------+------+-----+----------+----------------+
| id    | int(10) unsigned    | NO   | PRI | NULL     | auto_increment |
| name  | varchar(10)         | YES  | MUL | lucky    |                |
| sex   | enum('w','m')       | YES  |     | w        |                |
| age   | tinyint(3) unsigned | YES  |     | 18       |                |
| info  | varchar(40)         | YES  |     | 个人信息 |                |
+-------+---------------------+------+-----+----------+----------------+

(1) 比较运算符
  1. >

    select * from user where age > 18;

  2. <

    select * from user where age < 28;

  3. >=

    select * from user where age >= 18;

  4. <=

    select * from user where age <= 18;

  5. =

    select * from user where age = 18;

  6. !=/<>

    select * from user where age != 18;

    select * from user where age <> 18;

(2) 逻辑运算符
  1. and 逻辑与 俩侧为真才为真

    select * from user where age=18 and sex = ‘m’; 查询性别为m并且年龄为18的数据

  2. or 逻辑或 满足一侧条件即可

    select * from user where age=18 or sex=‘w’; 查询年龄为18或者 性别为w的数据

  3. between … and … 在…范围之内 包含本身

    select * from user where age between 18 and 20;

    select * from user where age >=18 and age <=20;

  4. not between … and … 不在…之间

    select * from user where age <18 or age >20 ;

    select * from user where age not between 18 and 20;

  5. in … 在…里

    查询年龄为18或20的数据

    select * from user where age in(18,20);

    select * from user where age=18 or age=20;

  6. not in 不在…里

    查询年龄不为18或20的数据

    select * from user where age!=18 and age!=20;

    select * from user where age not in(18,20);

(3) order by 排序 升序/降序

升序(默认) asc

查询数据 按照年龄升序查询

select * from user order by age asc;

select * from user order by age;

降序 desc

查询数据 按照年龄降序

select * from user order by age desc;

(4) limit 取值

结构:

limit x; 取出x条数据

limit x,y; 从x的位置 取出y条数据

取出3条数据

select * from user limit 3;

select * from user limit 0,3;

分页实例:
每页数据展示10条

第一页 0,10

第二页 10,10

第三页 20,10

公式:

(nowPage-1)*everyPage

(5) is is not 查询为null的数据

查询name为null的数据

select * from user where name is null;

查询name为不null的数据

select * from user where name is not null;

注意:

因为 null 是特殊的值 所以不能使用= 或者!= 进行查询

(6) like 模糊查询
  1. ‘%字符’ 查询以字符结尾的数据

    查询以四结尾的name值数据

    select * from user where name like ‘%四’;

  2. ‘字符%’ 查询以字符开头的数据

    查询以赵开头的name值的数据

    select * from user where name like ‘赵%’;

  3. ‘%字符%’ 查询包含字符的数据

    查询name字段值中包含四的数据

    select * from user where name like ‘%四%’;

  4. ‘_’ 通配符 代表匹配任意一个字符

    查询name字段值 有俩个字符的数据

    select * from user where name like ‘__’;

    select * from user where name like ‘_四’; 查询第二位为四第一位为任意字符的俩位长度的数据

  5. not like

    查询name字段除了包含四以外的所有数据

    select * from user where name not like ‘%四%’;

(7) distinct 去除重复的数据

select distinct name from user;

(8) 子查询 (查询的条件 还是一条SQL语句)

select * from 表名 where 字段名 in (SQL语句)

select * from user where age in (select age from user where sex=‘w’);

十七、聚合函数

  1. count 统计个数
  2. max 最大值
  3. min 最小值
  4. sum 求和
  5. avg 求平均数

select count(*) as count,max(age) as max,min(age) as min,avg(age) as avg,sum(age) as sum from user;

注意:

如果想统计数据总条数 不建议统计某个字段 如果字段为空 则统计数据条数不准确 建议count(*)

十八、group by 分组

主体结构:

select count(字段) from 表名 group by 字段

统计 男生和女生分别有多少人

select sex,count(*) from user group by sex;

统计每班有多少人

select class,count(*) from user group by class;

统计每个班的男生和女生分别有多少人

select class,sex,count(*) from user group by class,sex;

having子句 分组的条件 相当于where

查询班级人数2人以上的班级

select class,count(*) as total from user group by class having total>2;

统计三班和四班的人数

select class,count(*) as total from user group by class having class in(‘online3’,‘online4’);

统计三班和四班的人数 并且人数在2人以上的

只想统计三班和四班女生的人数

十九、多表联查

user表

mysql> desc user;
+-------+---------------------+------+-----+----------+----------------+
| Field | Type                | Null | Key | Default  | Extra          |
+-------+---------------------+------+-----+----------+----------------+
| id    | int(10) unsigned    | NO   | PRI | NULL     | auto_increment |
| name  | varchar(10)         | YES  | MUL | lucky    |                |
| sex   | enum('w','m')       | YES  |     | w        |                |
| age   | tinyint(3) unsigned | YES  |     | 18       |                |
| info  | varchar(40)         | YES  |     | 个人信息 |                |
| class | varchar(20)         | YES  |     | online5  |                |
+-------+---------------------+------+-----+----------+----------------+

address

+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| uid     | int(11)          | YES  |     | NULL    |                |
| address | varchar(20)      | YES  |     | NULL    |                |
| phone   | char(11)         | YES  |     | NULL    |                |
+---------+------------------+------+-----+---------+----------------+

(1) 隐示内连接

主体结构

select … from 表1,表2… where 表1.字段名=表2.字段名…

查询 id为1的用户的信息和地址信息

select * from user,address;

select * from user u,address a;

select * from user as u,address as a;

select u.id,u.name,u.sex,a.address,a.phone from user u,address a;

最终版

select u.id,u.name,u.sex,a.address,a.phone from user u,address a where u.id=1 and u.id=a.uid;

注意:

会将关联条件的数据进行查询

实例:

SELECT
	u.id,
	u. NAME,
	u.sex,
	a.address,
	a.phone
FROM
	USER u,
	address a
WHERE
	u.id = a.uid;

(2) 显示内连接 inner join

主体结构:
select … from 表1 inner join 表2 on…

查询 id为1的用户的信息和地址信息

实例:

select * from user u inner join address a;

select u.id,u.name,u.sex,a.address,a.phone from user u inner join address a;

select u.id,u.name,u.sex,a.address,a.phone from user u inner join address a on u.id = a.uid;

select u.id,u.name,u.sex,a.address,a.phone from user u inner join address a on u.id = a.uid and u.id=1;

注意:

会将关联条件的数据进行查询

(3) 左链接 left join

主体结构:

select … from 表1 left join 表2 on 条件…

查询 id为1的用户的信息和地址信息

实例:

select * from user u left join address a on u.id=1 and u.id=a.uid

注意:

左链接以做表为主表 右表为辅表 会将主表的数据都查询出来 辅表没有对应的数据 则使用 null来占位

select * from address a left join user u on u.id=1 and u.id=a.uid

(4) 右链接 right join

主体结构:

select … from 表1 right join 表2 on 条件…

查询 id为1的用户的信息和地址信息

实例:

select * from user u right join address a on u.id=1 and u.id=a.uid

select * from address a right join user u on u.id=1 and u.id=a.uid

注意:

右关联以右表为主表 左表为辅表 会将主表的数据全部查询出来 辅表没有对应的数据使用Null来占位

二十、其它操作(了解)

(1) 修改密码

set password for 用户名@localhost=password(‘新密码’);

(2) 创建其它用户分配权限
  1. 使用MySQL数据库

    user mysql

  2. 查看当前库下有哪些用户

    select user from user;

  3. 创建用户

    create user 用户名 identified by ‘密码’;

    create user lucky identified by ‘123456’;

  4. 赋予权限

    grant all on 库.* to 用户名

    all 代表增删改查

    grant all on today.* to lucky;

  5. 回收权限

    revoke all on 库.* from 用户

    revoke all on today.* from lucky;

  6. 删除用户

    drop user 用户名;

  7. 刷新权限

    flush privileges

二十一、Python操作mysql数据库

安装:

pip install pymysql

使用:

import pymysql

(1) 连接MySQL数据库

db = pymysql.connect(主机名,用户名,密码,数据库名)

(2) 设置字符集

db.set_charset(‘utf8’)

(3) 创建游标对象

cursor = db.cursor()

(4) 执行SQL语句

cursor.execute(sql语句)

(5) 获取结果集

获取所有

cursor.fetch_all()

获取一条

cursor.fetch_one()

(6) 获取受影响的行数

cursor.rowcount

(7) 关闭数据库链接

db.close()

注意:

pymysq 默认开启了事物处理 所以需要提交或回滚

db.rollback()

db.commit()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值