• mysql操作


    1. 用户相关

    1.1 创建用户

    1. # 创建一个用户,用户名是xx在什么主机上可以登录,密码是什么
    2. # 格式
    3. create user '用户名'@'主机' identified by '密码';
    4. create user 'llp'@'192.168.1.1' identified by '0528';
    5. cerate user 'llp'@'192.168.1.%' identified by '0258';
    6. # 在任意主机可以登录 % 代表任意
    7. create user 'llp'@'%' identified by '0528';

    1.2 授予权限

    1. grant 权限 在哪个数据库.表 给谁
    2. grant select,insert,update on db1.t1 to 'llp'@'%';
    3. grant all privileges on db1.* to 'llp'@'%';
    4. # 所有权限+任意库表 * 任意
    5. grant all privileges on *.* to 'llp'@'%';
    6. # 移除权限
    7. revoke all privileges from db1.t1 to 'llp'@'%';

    2. 数据库的操作

    2.1 数据库与文件夹对应关系

    1. mysql-----excel
    2. 数据库 ---- 文件夹
    3. -------- 文件
    4. 数据 ------- 数据

    2.2 数据库操作

    1. # 新建
    2. create database t1 default charset utf8;
    3. # 查看库
    4. show databases;
    5. # 删除库
    6. drop database t1;

    2.3 表操作

    1. # 查
    2. show tables;
    3. 创建表格式: not null null 可以省略 默认not null
    4. create table t1(
    5. 列名 类型 null,
    6. 列名 类型 not null,
    7. )engine=innodb default charset=utf8;
    8. # 引擎
    9. innodb 支持事务 原子性
    10. myisam 速度快
    11. create table t1(id int,name char(10)) default charset=utf8;
    12. create table t1(id,int,name char(10))engine=innodb default charset=utf8;
    13. # auto_increment 自增
    14. # primary key 主键 表约束(不能为空,不能重复),快速查找,
    15. create table t1(id int auto_increment primary key,name char(10))engine=innodb default charset=utf8;
    16. # 清空表
    17. # 新增的数据接着之前的
    18. delete from t1;
    19. # 新增的数据,从头开始,这个速度快
    20. truncate table t1

    2.4 数据操作

    1. # 插入书
    2. # 单个插入
    3. insert into t1(id,name) values(1,'liuyaping');
    4. # 多个插入
    5. insert into t1(id,name) values(1,'liuyaping'),(2,'xxx'),(3,'aaa');
    6. # 从另一张表导入进来
    7. insert into t1(id,name) select id,name from tb2;
    8. # 查看
    9. select id,name from t1;
    10. select * from t1;
    11. # 修改
    12. update t1 set age=18;
    13. update t1 set age=18 where age=17;
    14. # 删除
    15. delete from t1 where id<6;
    16. and
    17. or
    18. >=
    19. <=
    20. !=
    21. not in (1,2,3)
    22. in (1,2,3)
    23. in (select id from t2)
    24. between 5 and 7

    2.5 其他操作

    1. # desc 表名 -----------查看表结构
    2. desc class
    3. # show create table 表名 -----------查看创建表的完整sql语句
    4. show create table class;
    5. show create table class \G; 改成一列查看

    3. like

    1. like: 匹配
    2. %:匹配任意多个,
    3. a%:以a开头
    4. %a:以a结尾
    5. _:匹配一个
    6. a_:只能匹配一个 列如 ab
    7. 列子
    8. select id,name from t1 where id like "3%";
    9. select id,name from t1 where id like "3_";

    4. limit(取多少)

    1. # 取两条
    2. select * from class limit 2;
    3. # 从0开始取,闭区间
    4. select * from class limit 0,3;

    5. offset(从什么地方取)

    select * from class limit 1 offset 2;

    6. 排序

    1. select * from t1 order by id desc; 大到小
    2. select * from t1 order by id asc; 小到大(默认)
    3. 例子:
    4. 取后十条数据
    5. select * from t1 order by id desc limit 10;

    7. 分组

    1. # 坑:分完组之后不能用where 只能用having
    2. 求每一个部门最大的
    3. select max(id) from t1 group by part_id;
    4. count(id)
    5. min
    6. sum
    7. avg

    8.连表操作

    1. # 表只要连上,任意都可以使用拿数据,比如5张表连在一起,可以任意两张有关系的表,拿数据
    2. # 保证左表完整,对于左表没有,右表有的不显示
    3. left join
    4. # 保证右表完整,对于右表没有,右表有的不显示
    5. right join
    6. # 将出现一行的null隐藏
    7. inner join
    8. 例子:
    9. select t1.id,t2.id from t1 left join t2 on t1.part_id = t2.id;

    9.数据类型

    9.1 更多

    Python开发【第十七篇】:MySQL(一) - 武沛齐 - 博客园一、概述 1、什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2、什么是 MySQL、Oracle、SQLite、Access、MS SQL Servehttps://www.cnblogs.com/wupeiqi/articles/5713315.html

    9.2 类型

    1. 字符串
    2. char(10) 定长 查询速度快
    3. varchar(10) 不定长 节省空间
    4. 数字(无符号:unsigned 有符号:signed)
    5. tinyint
    6. int
    7. bigint
    8. float
    9. double
    10. decimal(精度最高,实际上存储的是char类型)
    11. decimal(10,5) 总共10位,小数点后占5
    12. 时间
    13. text
    14. enum 枚举
    15. set 集合

    9.3 int有(signed)/无符号(unsigned)创建表示例

    1. 有符号创建表示例
    2. create table t1(
    3. id int(32) signed not null auto_increment primary key,
    4. name char(32)
    5. )engine=innodb;
    6. 无符号创建表示例
    7. create table t1(
    8. id int(32) unsigned not null auto_increment primary key,
    9. name char(32)
    10. )engine=innodb;

    9.4 enum/set示例

    1. enum
    2. 枚举类型,
    3. 示例:
    4. CREATE TABLE shirts (
    5. name VARCHAR(40),
    6. size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
    7. );
    8. # 插入数据示例
    9. INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
    10. set
    11. 集合类型
    12. 示例:
    13. CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
    14. INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

    10. 外键关系及创建

    外键的种类

    一对一

    # 本质就是unique+外键

    一对多/多对一

    正常的外键

    多对多

    1. 多个外键
    2. 两种形式(具体按照业务需求)
    3. 两个外键加unique
    4. 多个外键不见unique

    外键的创建方式

    创建单个/多个外键

    1. # 格式
    2. constraint fk_usrer_depar foreign key ("department_id") references deparment('id')
    3. constraint(关键字) fk_usrer_depar(起的名字) foreign key(关键字) ("department_id")(自己的列) references(关键字) deparment('id')(关联的列)
    4. # 创建单个外键
    5. create table userinfo(
    6. uid bigint auto_increment primary key,
    7. name varchar(32),
    8. department_id int,
    9. # 外键
    10. constraint fk_usrer_depar foreign key (department_id) references deparment(id)
    11. )engine=innodb;
    12. create table deparment(
    13. id bigint auto_increment primary key,
    14. title char(32)
    15. )engine=innodb;
    16. # 创建多个外键
    17. create table userinfo(
    18. uid bigint auto_increment primary key,
    19. name varchar(32),
    20. department_id int,
    21. xx_id int,
    22. constraint fk_usrer_depar foreign key (department_id) references deparment(id),
    23. constraint fk_xx_depar foreign key (xx_id) references xx(id)
    24. )engine=innodb;
    25. create table deparment(
    26. id bigint auto_increment primary key,
    27. title char(32)
    28. )engine=innodb;
    29. create table xx(
    30. id bigint auto_increment primary key,
    31. title char(32)
    32. )engine=innodb;

    联合主键

    1. # 正常主键t1
    2. create table t1(
    3. id int(11) not null auto_increment primary key,
    4. pid int(11) defalut null,
    5. num int(11) defalut null
    6. )engine=innodb;
    7. # 联合主键t1
    8. create table t1(
    9. id int(11) not null auto_increment,
    10. pid int(11) defalut null,
    11. num int(11) defalut null
    12. primary key(id,pid)
    13. )engine=innodb;
    14. # 两个表都是联合唯一
    15. create table t2(
    16. nid int(11) not null auto_increment,
    17. name char(10) defalut null,
    18. id1 int,
    19. id2 int,
    20. primary key(id1,id2)
    21. constraint fk_t1_t2 foreign key t2(id1,id2) references t1(id,pid)
    22. )engine=innodb;

    唯一索引(unique)

    1. create table t1(
    2. id int(11) not null auto_increment,
    3. pid int(11) defalut null,
    4. unique uq1 (id,pid)
    5. )engine=innodb;

    ps主键与索引

    1. 约束不能重复且可以为空-------索引
    2. 约束不能重复且不能为空------主键
    3. 都是为了加速寻找

    外键主键unique联合示例

    1. 可以有多个外键unique
    2. 只能有一个主键
    3. create table t1(
    4. id int(11) not null auto_increment primary key,
    5. pid int(11) defalut null,
    6. num int(11) defalut null
    7. primary key(id,pid),
    8. )engine=innodb;
    9. create table t2(
    10. nid int(11) not null auto_increment primary key,
    11. name char(10) defalut null,
    12. user_id int(10),
    13. unique uq_q1(user_id)
    14. constraint fk_t1_t2 foreign key t2(user_id) references t1(id)
    15. )engine=innodb;

    联合唯一索引外键

    1. # t1
    2. create table t1(
    3. id int(11) not null auto_increment primary key,
    4. name char(32)
    5. )engine=innodb;
    6. # t2
    7. create table t2(
    8. id int(11) not null auto_increment primary key,
    9. host char(32)
    10. )engine=innodb;
    11. # t3表(外键)
    12. create table t3(
    13. nid int(11) not null auto_increment primary key,
    14. t1_id int(32) unsigned,
    15. t2_id int(32) signed,
    16. unique t1_t2_id(t1_id,t2_id)
    17. constraint fk_t1_t2 foreign key t3(t1_id) references t1(id),
    18. constraint fk_t1_t2 foreign key t3(t2_id) references t2(id),
    19. )engine=innodb;

    创建表作业

    1. # 班级 学生表 创建
    2. # 班级表创建
    3. create table class(
    4. cid int auto_increment primary key,
    5. caption char(32)
    6. )engine=innodb;
    7. # 学生表创建
    8. create table student(
    9. sid int auto_increment primary key,
    10. sname char(32),
    11. gender char(32),
    12. class_id int,
    13. constraint fk_student_class foreign key (class_id) references class(cid)
    14. )engine=innodb;
    15. # 插入班级数据
    16. insert into class(caption) value("三年级二班");
    17. insert into class(caption) value("一年级二班");
    18. insert into class(caption) value("三年级一班");
    19. # 插入学生数据
    20. insert into student(sname,gender,class_id) value("钢弹","女",1);
    21. insert into student(sname,gender,class_id) value("铁锤","女",1);
    22. insert into student(sname,gender,class_id) value("三炮","男",2);
    23. **********************
    24. # 老师---课程
    25. # 老师创建
    26. create table teacher(
    27. tid int auto_increment primary key,
    28. tname char(32)
    29. )engine=innodb;
    30. # 课程创建
    31. create table course(
    32. cid int auto_increment primary key,
    33. cname char(32),
    34. teacher_id int,
    35. constraint fk_course_teacher foreign key (teacher_id) references teacher(tid)
    36. )engine=innodb;
    37. # 老师插入数据
    38. insert into teacher(tname) value("剥夺");
    39. insert into teacher(tname) value("苍空");
    40. insert into teacher(tname) value("反到");
    41. # 课程插入
    42. insert into course(cname,teacher_id) value("生物",1);
    43. insert into course(cname,teacher_id) value("体育",1);
    44. insert into course(cname,teacher_id) value("物理",2);
    45. ********************************************
    46. # 成绩*************
    47. create table score(
    48. sid int auto_increment primary key,
    49. student_id int,
    50. course_id int,
    51. number int,
    52. constraint fk_score_student foreign key (student_id) references student(sid),
    53. constraint fk_score_course foreign key (course_id) references course(cid)
    54. )engine=innodb;
    55. # 插入数据
    56. insert into score(student_id,course_id,number) value(1,1,60);
    57. insert into score(student_id,course_id,number) value(1,2,59);
    58. insert into score(student_id,course_id,number) value(2,2,100);

    自增

    步长修改

    1. alter table class auto_increment=20 修改步长
    2. auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535
    3. auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535
    4. 基于会话级别(当前窗口有效)
    5. # 查看当前窗口的步长
    6. show session variables like 'auto_incre%';
    7. # 会话步长修改
    8. set session auto_increment_increment=2;
    9. set session auto_increment_offset=10;
    10. 基于全局变量
    11. show global variables like 'auto_incre%';
    12. # 会话步长修改
    13. set global auto_increment_increment=2;
    14. set global auto_increment_offset=10;

    临时表

    1. select * from
    2. (select * from score where number >60) as B
    3. left join
    4. student on B.student_id = student.sid;

  • 相关阅读:
    java计算机毕业设计在线考试系统源程序+mysql+系统+lw文档+远程调试
    Vue的消息订阅与发布
    LeetCode算法心得——全排列(回溯型排列)
    JavaScript 62 JavaScript 版本 62.3 JavaScript ES6
    基于Layui的提示框插件,layMin图片预览,加载中
    组函数会忽略null值
    Explain执行计划字段解释说明---ID字段说明
    6-9 二叉树的遍历 (二叉树的前历、后序、中序、层序遍历)
    MR案例 - 分科汇总求月考平均分
    Go 并发可视化解释 - Semaphore
  • 原文地址:https://blog.csdn.net/qq_52385631/article/details/126633346