MySQL_基础

Posted javasds

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL_基础相关的知识,希望对你有一定的参考价值。

MySQL是一种关系型数据库管理系统。

  关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  mysql所使用的 SQL 语言是用于访问数据库的最常用标准化语言,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

 

mysql数据的基本命令(安装步骤):

net start mysql -- 启动服务
net stop mysql  -- 停止服务


mysql -hxxx.xxx.xxx -uroot -p  -- 访问别的mysql
--
mysql --host=ip --user=root --password=...

SQL语言:

  用于访问数据库的最常用标准化语言,操作了所有的关系型数据库。

  分类:

    1.DDL:操作数据库与表

    2.DML:增删改表中数据

    3.DQL:查询表中数据

    4.DCL:用于定义数据库的访问权限和安全级别,以及创建用户

 

1.DDL

  a.操作数据库

->创建
    create database db1 -- (创建数据库db1)
    create database if not exists db1 -- (判断是否存在db1,不存在就创建)
    create database db3 character set gbk -- (指定新创建的数据库的字符集格式)
->查询
    show datebases -- (查看所有数据库的名称)
    show create databases mysql -- (查看对应数据库的字符集(查询某个数据库的创建语句))
->修改
    alter database 数据库名称 character set 字符集名称
->删除
    drop database 数据库名称
    drop database if exists 数据库名称
->使用数据库
        查询现在正在使用的数据库名称
        select database();
        use 数据库名称   (先使用后查询)

  b.操作表

->创建
        create table like 表名(复制表)
        create table 表名(
            列名 数据类型1,
            ...
        );
注:最后一列,不需要加逗号
数据类型:
int
age int
double
score double(5,2)--->共5位,小数点后2位
date:日期类型 只包含年月日
datetime:包含年月日时分秒
timestamp:时间戳类型 
    如果将来不给这个字段赋值,则默认使用现在系统时间来自动赋值
varchar:字符串
name varchar(20(//最大长多))
            
创建表(示例)
             create table stu(
                id int,
                name varchar,
                age int,
                score double(4,1),
                birthday data,
                insert_time timestamp
              );

->查询
    show tables(查询某个数据库中的所有表名称)
    desc 表名(查询表结构)
->修改
    alter table 表名 rename to 新的表名
    alter table 表名 character set utf8(修改字符集)
    alter table 表名 add 列名 数据类型(添加一列)
        
    alter table 表名 change 列名 新列名 新数据类型(修改列名)
    alter table 表名 modify 列名 新数据类型(修改类型)

    alter table 表名 drop 列名(删除列)
D->删除
    drop table 表名;
    drop    table if exists 表名;

 

2.DML

  a.添加数据

 

insert into 表名(列名1,列名2,...) values(值1,值2,...);
        注意:列名和值要一一对应
            如果表名后不定义列名,则默认给所有列添加值
            除了数字类型,其他类型需要使用引号引起来

 

  b.修改数据

update 表名 set 列名1=值1,列名2=值2,...[where 条件]
        注意:如果不加任何条件,则会修改表中的所有数据

  c.删除数据

delete from 表名 [where 条件]
        truncate from 表名 (删除表并创建一个一样的新表)
        注意:如果不加条件,则删除表中所有数据

3.DQL

1.基础查询
    1.多个字段的查询
        select 字段名1,字段名2,... from 表名;
        注意:如果查询所有字段,则可以使用*代替字段列表
    2.去除重复
        distinct
    3.计算列
        一般可以使用四则运算计算一些列的值(数值型)
        ifnull(表达式1,表达式2)
            表达式1:如果哪一个字段值为null
            表达式2:如果该字段为null后的替代值
    4.起别名
        as(也可以省略)
    
2.条件查询
    1.where后面跟条件
    2.运算符
        > < >= <= = <>
        between...and
        IN(集合)
        like:模糊查询
        占位符:
            _:单个字符
            %:多个任意字符
            isnull
            and&&
            or||
            not 或 !

3.排序查询:
        order by 排序字段1 排序方式1,排序字段2 排序方式2...
        排序方式:升序(ASC,不指定时默认)与降序(DESC)
        注意:如果有多个排序条件,当前面的条件值一样时,才会判断第二条件

4.聚合函数:
        将一列数据作为一个整体进行纵向的计算。
            1.count:计算个数
                select count(...) form 表名;
            2.maxmin:计算最大值,计算最小值
            3.sum,avg:计算和,计算平均数
            注意:聚合函数的计算会排除null(使用ifnull)

5.分组查询:
        select 分组字段,聚合函数 from 表名 (可以加限制条件where) group by 分组字段 (可以加个数限制HAVING );
        注意:
            1.分组之后查询的字段:分组字段、聚合函数
            例:SELECT sex,AVG(math),COUNT(id) FROM student3 WHERE math > 70 GROUP BY sex HAVING COUNT(id)>2;
            可以在分组前加限制条件(不满足不会分组),在分组后加上个数限制(不满足不会被查询到)

6.分页查询
        limit 开始的索引,每页查询的条数;
        select * from 表名 limit 0,3;  从第0个元素开始查询3个元素

4.DCL

  

1. 管理用户
    1. 添加用户:
        * 语法:CREATE USER 用户名@主机名 IDENTIFIED BY 密码;
    2. 删除用户:
        * 语法:DROP USER 用户名@主机名;
    3. 修改用户密码:
                
    UPDATE USER SET PASSWORD = PASSWORD(新密码) WHERE USER = 用户名;
    UPDATE USER SET PASSWORD = PASSWORD(abc) WHERE USER = lisi;
                
    SET PASSWORD FOR 用户名@主机名 = PASSWORD(新密码);
    SET PASSWORD FOR root@localhost = PASSWORD(123);

    * mysql中忘记了root用户的密码?
    1. cmd -- > net stop mysql 停止mysql服务
        * 需要管理员运行该cmd

    2. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables
    3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
    4. use mysql;
    5. update user set password = password(你的新密码) where user = root;
    6. 关闭两个窗口
    7. 打开任务管理器,手动结束mysqld.exe 的进程
    8. 启动mysql服务
    9. 使用新密码登录。
4. 查询用户:
    -- 1. 切换到mysql数据库
        USE myql;
    -- 2. 查询user表
        SELECT * FROM USER;
                
        * 通配符: % 表示可以在任意主机使用用户登录数据库

2. 权限管理:
    1. 查询权限:
        -- 查询权限
        SHOW GRANTS FOR 用户名@主机名;
        SHOW GRANTS FOR lisi@%;

    2. 授予权限:
        -- 授予权限
        grant 权限列表 on 数据库名.表名 to 用户名@主机名;
        -- 给张三用户授予所有权限,在任意数据库任意表上
            
        GRANT ALL ON *.* TO zhangsan@localhost;
    3. 撤销权限:
        -- 撤销权限:
        revoke 权限列表 on 数据库名.表名 from 用户名@主机名;
        REVOKE UPDATE ON db3.`account` FROM lisi@%;

 

 

 

 

以上是关于MySQL_基础的主要内容,如果未能解决你的问题,请参考以下文章

linux中怎么查看mysql数据库版本

这些 C++ 代码片段有啥作用?

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

VSCode 配置 用户自定义代码片段 自定义自动代码补充

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

[AndroidStudio]_[初级]_[配置自动完成的代码片段]