mysql 相关知识与操作

账号:mysql8登陆root账号,初始密码在/var/log/mysqld.log

  建立账号:create user 用户名@‘所有者‘ identified mysql_native_password by ‘密码‘;

  授权: grant 权限 on 作用域 to 用户;
  grant all privileges on *.* to linux;
  grant select name on db.student to admin;

  撤权: revoke 权限 on 作用域 from 用户;
  revoke select on students.* from linux;

  权限:select、insert、drop、update、grant、create、revoke、alter 等
  作用域:数据库.表
  *代表所有

  改密码:mysql5.7以前密码有加密函数:password(‘密码‘)

  set password=‘密码‘;     --默认为root账户

  set password for 用户名=‘密码‘;

  查看权限:desc mysql.user;

  show grants for 用户;

  select * from mysql.user where user=‘用户名‘ and host=‘所有者‘\G;

导入、还原数据库:1、工具导入(SQLyog):导入→执行SQL脚本(ctrl+shift+Q)

            2、在mysql中导入:mysql>source d:/db.sql;

            3、在mysql外导入:mysql -uroot <d:/db.sql

导出、备份数据库:  1、工具导出(SQLyog):导出/备份→备份数据库,转储到SQL(ctrl+shift+E)

                2、在mysql外导出:①导出多个数据库:mysqldump -uroot --databases db1 ab2 db3 > d:/db.sql

                         ②导出一个数据库中多个表的数据与结构:mysqldump -uroot -p db t1 t2 > d:/m.sql

                      说明:>前面加-t是只要表的数据、加-d只要表结构(操作)

      全部数据库表示为-A

数据类型
  1、数字:  整数 tinyint、smallint、int、bigint
        小数 decimal(p,s):p为总字数限制,s为小数限制 如:decimal(3,2) 9.9

  2、字符串 :char(18) 18个字节
        varchar(50) 50个字符
        text
        longtext

  3、日期时间: datetime 时间与日期 2019-08-20 15:59:30
         date 日期 2019-08-20

  4、二进制
  5、复合类型

       enum() 枚举:  gender enum(‘男‘,‘女‘,‘保密‘);
      set()集合 :set(‘java‘,‘php‘,‘python‘);
          ‘java‘ ‘php,python‘ ‘python,php,java‘ ‘html,php‘
  6、JSON 类型 (NoSQL 特性)

操作:(table后面可接if判断条件以是否执行 如:drop table if exists student;)

  导入数据库:source 文件名;

  一、建立表(先use 数据库;)
    create table 表名(
      `列名` 数据类型 约束,
      ...
    )engine=innodb charset=utf8;

    如:create table if not exists student(
      sno int unsigned auto_increment primary key,
      sname varchar(30),
      sgender enum(‘男‘,‘女‘),
      sbrithday datetime,
      smoney decimal(8,1),
      sdept varchar(50)default ‘计算机科学‘,
      sinfo text
    )engine=innodb charset =utf8 auto_increment = 201601;

  二、 查看表数据:select * from 表名;
  查看表结构:desc 表名;
  修改表:
  -- 修改表名
  alter table 表名 rename to 新名;
  rename table 表名 to 新名;

  -- 增加一列
  alter table 表名 add `列名` 数据类型;
  alter table 表名 add `列名` 数据类型 after;
  alter table 表名 add `列名` 数据类型 first;

  -- 修改列名及类型(缺一不可)
  alter table 表名 change 列名 新名 数据类型;

  -- 删除一列
  alter table 表名 drop `列名`;

  -- 删除表
  drop table 表名;
  drop table if exists 表名;

  三、增删改(where后面用索引信息定位,一般用主键的值)

    增: 插入一条:insert 表名 values(以逗号隔开,字符串用‘‘,空则填null,不可不填)
    插入多条: insert 表名 values(),(),();
    插入部分字段:insert 表名(`列名`,`列名`) values(值,值);
    insert没有插入指定位置之说,因为一般主键是int类型,而表是按主键排列的,若要‘指定’,注意插入条的主键序号

    删: delete from 表名 where `某列名`=值;

    改: update 表名 set `列名`=值 where 用字段定位;
    update 表名 set `列名`=值,`列名`=值 where 用字段定位,用字段定位;

  四、查:(重点,若语句多,可换行区分)

    普通计算:select 函数;
    如:此时:now()、往时:date_add(now(),interval 10 day)、来时:date_add(now(),interval -10 day)、小时:hour(now())、唯一字符串:uuid()

    查询数据:select 查看的字段 from 表名 条件;
    别名格式:select 查看的字段 别名 from 表名 条件;

    ①查看的字段:就是查看的内容以列名或函数计算、并以字段形式显示,写一个就显示一列,查看多个就用逗号隔开。(*表示表中所有字段)     

      1、对查看的内容消去重复:distinct+字段名,如:

        select distinct address ...

      2、普通函数:  ·计行函数:count(*)
              ·int函数:max()、min()、avg()、sum()、round()、floor()、abs()、ceil()、sqrt()
              ·字符串(时间)函数:char_length()、length()、now()、 from_unixtime(时间戳)、unix_timestamp(‘2006-11-04 12:23:00‘)、concat(连接函数)、concat_ws(分隔符写在第一个位置)、

                        repeat(重复函数)、upper()、lower()、left(字符串,取用个数)、right(str,length)、mid(截取)

            这些函数作为字段,不能直接当作值来用,若要用:如s=max(),可用子查询,用select的结果作为值,如:s=(select max(sno)...)


      3、子查询:将首先查看到的结果括起来作为 新表!用来再select
            如查看成绩最高的学生信息:select * from students where grate =(select max(grate) from student);

      4、if函数:以if()的返回值作为查看结果
            if( 条件,值1,值2)
            if(条件,值1,if(条件,值2,...))
             如:
               select 等级,count(*) 人数 from
               (select sname 姓名,
                sperformance 成绩,
                if(sperformance>=90,‘优秀‘,if(sperformance>=80,‘良好‘,if(sperformance>=60,‘及格‘,‘补考‘))) 等级
                from students
                ) ss group by 等级;

      5、排序、排名
        5.1、新增一个排序字段:select row_number() over(order by 列名 desc) 序号 from...
        5.2、新增一个排名字段:
            跳号排名:select rank() over(order by 列名 asc) from 表名 order by 列名 asc;
            不跳号 排序:select dense_rank() over(order by 列名 desc) from 表名 order by 列名 asc;
              select rank() over(order by `grate` asc) from students order by `grate` asc;

    ②条件:就是对前面字段进行要求、限制条件,从而筛选数据,好比为:前面查看的是哪些列(字段),而索引查看的就是哪些行(条),没有条件,所有条数据就全查看了

      1、指定查看哪些行:
        limit 行数;
        limit 开始行,行数;
          select * from students limit 0,10;

      2、查询语句where:where `列名` 如下+数据
            =、!=、>、<、>=、<=:判断值
            and:且
            or:或
            like、not like: 可以使用通配符:%(表示0,1或多个,如:‘%为%‘,‘王%‘) _(表示一个字符,如:‘__‘,‘李_‘)
            in()、not in()
            is、is not:表示`是非`,用于判断性质(而非判断值)!如:select * from students where name is not null;
            regrep:正则表达式,如:‘^[0-9a-zA-Z]+$‘
            between .. and .. :用于日期,数字等有序数据,如:select * from stu where `birthday` between ‘1990-1-1‘ and ‘2000-1-1‘;
            not between .. and ..
      3:分组语句group by :根据后面,相同的分为一组having
          select left(sname,1) 姓,count(*) 人数 from students group by left(sname,1) having count(*)>=5 order by count(*) desc;

      4:排序语句order by:
          升序(默认):order by `列名` asc
          降序:order by `列名` desc

    ③union:连接两个查询语句一并显示,前提是两者表结构相同

    ④外键(关联另外一个表,跨表查看):constraint fk foreign key(列名) references 表名(列名)
      外键必须都是唯一索引(一般是其他表的主键)
      在表中设立一个外键:constraint fk foreign key(tid) references teacher(id)
        select s.`id`,s.`name`,s.`grate`,t.`name` from student s,teacher t where t.`id`=s.`id`;
        select s.`id`,s.`name`,s.`grate`,t.`name` from student s,teacher t from student left join teacher on t.`id`=s.`id`;

  五、复制表(备份):
    复制表结构:create table 新表名 like 表名;
    复制表数据:insert 新表 select * from 表名;

    仅复制表数据:create table 新表 as select * from 表名;
    也可以部分复制:create table 新表 as select 列名,列名 from 表名;

说明:
0、 用户尽量用像 [email protected]%、[email protected]‘192.168.10.11‘ 这样的格式
列名最好用``包住
1、一列称为一个字段(field),其名叫做列名
2、建立字段的约束条件有: ①auto_increment primary key(主键:唯一索引)
②注释:comment,默认:default,无负号:unsigned
3、表名用->可用数据库.表名<- 实现跨库操作表
4、单元格内容不可啥都不填,若想表示‘无数据’填null ,若想表示‘空数据’,填0或‘‘
5、drop 删除:数据库 、表、账号,delete删除数据
6、查看多个表:select *from stu1,stu2,stu3;
7、赋予权限后及时刷新权限:flush privileges
8、普及:角色是权限的集合

原文地址:https://www.cnblogs.com/shuangfeike/p/11443395.html

时间: 2024-11-06 10:35:21

mysql 相关知识与操作的相关文章

知识回顾、进程的相关知识和操作

1.编程语言的发展: 机器语言:二进制 汇编语言:指令,命令形式的 高级语言:面向过程(C)面向对象(python,c++,java) 2.操作系统的目标: 为了使用户更方便的使用系统 3.计算机的组成: cpu,主板,存储,输入,输出 4.并行.并发 并发:指两件或多件事情,在同一时间间隔内同时执行(宏观上是并行,微观上是串行) 并行:指两件或多件事情,在同一时间间隔内同时执行 5.进程有三部分组成: 代码段,数据段,PCB(进程控制块) 6.进程的三种基本状态: 就绪状态:除了cpu之外,进

mysql相关知识

1.开启与关闭mysql服务: 在运行中输入 services.msc 查看mysql是否开启 在命令行中通过命令来开启和关闭数据库 开启 net start mysql 关闭 net stop mysql 2.Mysql数据库root密码重置 1) 停止mysql服务器 运行输入services.msc 停止mysql服务 2) 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口) 3) 新打开cmd 输入mysql -u root

Mysql基础知识:操作数据库

Mysql操作数据库 1.创建数据库 CREATE DATABASE 数据库名; 2.显示已创建数据库 SHOW DATABASES; 3.选择已创建数据库 USE 数据库名; 4.删除数据库 DROP DATABASE 数据库名; 5.数据库存储引擎 InnoDB: 是一个可靠的事务处理引擎,它不支持全文本搜索: MyISAM: 在功能等同于 MyISAM ,但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表): MEMORY:是一个性能极高的引擎,它支持全文本搜索,但不支持事务处

数据库MySQL相关知识

数据库的三种常见类型: 1.文件数据库 AQLite 2.关系型数据库 Oracle MySQL SQLServer 3.NoSQL数据库 Redis HBase MongoDB 在用SQLyog操作MySQL数据库时,一定不要修改information_schema  mysql  performance_schema这三个数据库,否则会导致程序崩溃 三种常见的数据类型:int varchar(字符串类型) date 列的属性:length  主键(Primary Key)  自增 lengt

MySQL相关知识总结

1. 显示所有表 show tables; 还有information_schema数据库里面有tables表,记录了所有表信息 use information_schema; select * from tables; 2. MySQL联合查询更新 update  a , b set a.name= b.username where a.id= b.id;

MySQL 相关知识细节及解析

1,删除表中所有记录使用delete from 表名:还是用truncate table 表名 删除方式:delete 一条一条删除,不清空auto_increment记录数 truncate 直接将表删除,重新建表,auto_increment 将置为零,从新开始. 事务方面:delete 删除的数据,如果在一个事务中可以找回. truncate删除的数据找不回来.

MySQL相关操作知识

1.解决客户端联不上MySQL服务器的问题: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION; FLUSH PRIVILEGES; 2.登陆MySQL: mysql -u root -p 123456 3.查看所有数据库:show databases; //注意s和分号 4.选择数据库:use 库名 5.查看当前选择的数据库:select database(); //注意分号 6.列出所选数

svn常规操作与相关知识

Svn常规操作与相关知识 一.何谓版本控制 它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本 二.可供我们选择的版本控制系统 1.VCS  (本地版本控制) 2.VSS.CVS(集中版本控制) 3.ClearCase.SVN.Perforce.TFS(集中版本控制) 4.Mercurial(水银/水星).Git(分布式版本控制) 差异: 1.Git和其他版本控制系统的主要

Docker-1.相关知识+安装+镜像相关操作

Docker 相关知识它是一个轻量级的虚拟化技术,相比传统的虚拟化,具有启动速度快.资源需求少.性能高,并且单机可以支持上千个容器. 镜像(Image)    类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统.它是创建容器的基础 容器(Container)    类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用.    容器是从镜像创建的应用实例,可以将其启动.开始.停止.删除,而这些容器都是相互隔离.不可见的.它自身是只读的.容器从镜像启动的时候,