1.Mysql概述
MySQL是一个开源的关系型数据库管理系统,在数据存储上MySQL使用表来组织和存储数据。每个表由一组行和列组成,其中每行表示一个记录,每列表示记录中的一个字段。再数据类型上支持各种数据类型,包括整数、浮点数、字符串、日期时间等。它还提供了丰富的数据类型功能,如索引、约束等。
2.将mysql/cmd中运行
mysql -uroot -p
mysql -h192.0.0.0 -u(用户名) -p
3.关于数据库的操作
3.1 创建数据库
create database 库名 character set utf8;
create database 库名 (列名 列类型 , 列名 列类型与约束)
3.2 查看所有数据库
show databases;
3.3 使用数据库
use 库名;
3.4 查看正在使用的数据库
select database();
3.5 删除数据库
drop database 库名;
4. 数据库中关于表的操作
4.1 查看所有表
show tables;
4.2 创建表
create table 表名(列名 列约束,列名 列约束);
# 约束中 可以设置 主键 primary / not null 非空 /unique 唯一 / auto_increnment 自增长
4.3 修改表名
rename table 表名 to 修改后的表名;
4.4 删除表
drop table 表名;
4.5 查看表内的列设置
desc 表名
4.6 添加列
alter table 表名 add 列名 列约束;
4.7 修改列名
alter table 表名 change 原列名 修改后的列名 列约束;
4.8 删除列
alter table 表名 drop 列名;
5.关于表中数据的操作
5.1 查看所有数据
select * from 表名;
5.2 在表中插入数据
# 全列插入 只能插入一行
insert into 表名 values(列1值,列2值,列3值)
# 插入多行
insert into 表名 values(一行值,一行值)
# 缺省插入
insert into 表名(列1名,列2名) values(列1值,列2值);
insert into 表名 set 列名 = 列值,列2名 = 列值;
5.3 修改数据
update 表名 set 列名 = 列值 where 限制条件
5.4 删除数据
delete from 表名 where 删除的条件;
6.进阶查询操作
6.1 基础查询
select *from 表名;
select 列名 from 表名;
select 列名 from 表名 where 条件;
6.2 给查询结果的列起别名
select 列名 as 别名 from 表名 where 条件;
6.3 where后的条件介绍
比较运算符:=,!=, <>,<, <= < >, >=;
成员: in 在其中 not in 不在其中
多个条件:and 并且 or 或者
范围比较: between and
模糊查询: like (% 代表任意n个字符,_ 代表一个任意字符)
判空: is null 是空 is not null 空字符串不是null
7. 关于外键的操作
7.1 添加外键
# 创建表时添加(外键的值在表中必须存在)
create table 表名(列名 类型 foreign key(外键 列名) references 主表 (主键));
# 直接添加
alter table 表名 add 列名 类型 foreign key(外键 列名) references 主表 (主键);
7.2 外键名的修改
create table 表名(列..., constraint 新列名 foreign key(外键 列名) references 主表 (主键) );
7.3 外键的修饰选项
RESTRICT : 加入外键使用的主表中的主键 , 不能直接修改主键 (拒绝)
CASCADE: 级联, 删除修改主表时 外键对用的内容 也直接删除或者更新
如何使用:
create table student(列...,constraint fk_teacher_id foreign key(外键 列名) references 主表 (主键) on update cascade on delete cascade ); 修改时使用 级联 删除时使用拒绝
7.4 删除外键
alter table 表名 drop foreign key 外键名;
8. 关联查询
8.1 嵌套查询
# 一个查询的结果作为另一个查询的内容
select * from student where tid in (select id from teacher where name = 't1' or name = 't2';)
8.2 笛卡尔连接
# 组合两个表中的所有数据(一个有m行 一个有n行 组合起来有 m*n行)
select * from 表1名,表2名;
8.3 连接查询
# 内连接 inner join on 连接条件
select 表名.列名 as 新列名 ,表2名.列名 as 新列名 from 表1名 inner join 表2名 on 条件约束;
# 左外连接(内连接内容 + 左表内容 (右侧补NULL))
select student.name , teacher.name from studeng left join teacher on studeng.id * 3 = teacher.id
# 右外连接(内连接结果 + 右表内容 (左侧补NULL))
select student.name , teacher.name from studeng right join teacher on studeng.id * 3 =teacher.id
# 全连接(左外连接 union 右外连接)
select student.name , teacher.name from studeng left join teacher on studeng.id * 3 = teacher.id union select student.name , teacher.name from studeng right join teacher on studeng.id * 3 = teacher.id
9. 常用技术
9.1 系统函数的调用
方法: select 函数名;
user() 当前用户 、version() 当前数据库版本、database() 当前数据库、current_data 当前日期、
current_time 当前时间、current_timestamp 当前日期时间
9.2 聚合函数
方法:select 聚合函数 from 表名;
max(列名) -- 最大值 min(列名) -- 最小值 avg(列名) -- 平均值 sum(列名) -- 列求和
count(列名) -- 统计行数
9.3 排序
方法:order by 列名 排序方式,列名排序方式;
# asc 默认升序 desc 降序
9.4 分页
方法: select * from 表名 limit m,n
方式一 : limit n 显示前n个
方式二:limit m , n 表示 从索引m开始显示n个
如果显示第page页 每页显示size个: limit(page -1 ) * size, size
9.5 分组
方法:select sec ,count(*) from 表名 group by 列名 having 列名 in ('''')
#group by : 针对查询结果进行分组:
select count(*) ,列名 from 表名 where 条件
#having 指的是针对分组结果进行处理:
select count(*) as count, sex from teacher where id > 3 group by sex having count >1;
10. 用户授权操作
10.1 查看当前用户
select user()
10.2 创建用户
create user 'temp'@'%'identified by '123456';
10.3 分配权限
# 所有数据库中所有表的所有权限
grant all on *.* to '用户名' @ ' % ' ;
#mydb数据库 所有表查询 ,插入权限
grant select , insert on mydb.* to' temp2'@'%';
10.4 删除用户
drop user '用户名'@'%';
10.5 刷新权限
flush privileges;
11. pysql操作
# 1.下载pymysql包
pip install pymysql
# 2.导入模块
import pymysql
# 3. 构建一个链接
con = pymysql.connect(host="localhost", port=1000, user="root", password="123456")
# 4.通过连接构建一个游标实例
# cur = con.cursor()
# 5.通过游标实例执行sql语句
sql = "show databases;"
cur.execute(sql)
# 6. 获取游标所有内容
datas = cur.fetchall()
for data in datas:
print(data[0])
# 7.释放游标与连接
cur.close()
con.close()