• MySQL 基础命令


    SQL语句

    mysql版本:针对mysql-5.6.36 版本 

    目录
    1.1 常用命令-查看    2
    1.2 登录mysql    2
    1.2.1 修改密码    2
    1.2.2 忘记密码-怎么办    3
    1.3 授权grant    3
    1.3.1 grant    3
    1.4 好用功能、快捷键    4
    1.4.1 mysql客户端接口自带功能    4
    1.5 增删改查-数据库SQL命令详解    5
    1.5.1 数据库    5
    1.5.2 表-table    5
    1.5.3 插入、更新数据    7
    1.5.4 查看数据-select    8
    1.6 复杂查询    8
    1.6.1 ORDER BY子句    8
    1.6.2 LIMIT子句    8
    1.6.3 子查询    9
    1.6.4 连接查询    9

    1.1 常用命令

    # 查看数据库
    mysql> show databases;
    show databases like '%pres%';      #模糊查询
    # 查看表
    mysql> use xzy
    mysql> show tables;
    #查看权限
    show grants for oldboy@'10.0.0.%';
    # 查看列
    mysql> use xzy
    mysql> desc test;

    1.2 登录mysql

    常见的特定于客户机的连接选项
    -u <user_name>或--host=<user_name>
    -p <password>
    -h <host_name>或--host=<host_name>
    --protocol=<protocol_name>
    -P <port_number> 或--port=<port_number>
    -S <socket_name> 或--socket=<socket_name>

    1.2.1 修改密码

     
    [root@db02 ~]# mysqladmin -uroot -p123 password 123456
    [root@db02 ~]# mysql -uroot -p123456
    mysql>

    1.2.2 忘记密码-怎么办

    #开启mysql  (跳过授权表)
    #--skip-grant-tables 跳过授权表  --skip-networking禁止网络登录-即本地登录
    /application/mysql/bin/mysqld_safe --skip-grant-tables  --skip-networking  &
    
    #进入MySQL修改mysql.user表的内容
    mysql        #直接登录(无需密码)
    #修改mysql.user表内容
    mysql> update mysql.user set password=PASSWORD('666666')  where user='root' and host='localhost';
    mysql> flush privileges;
    #quit  退出即可用新密码666666登录
    
    注意:5.7版本的不同
    update mysql.user set authentication_string=PASSWORD('123456')  where user='sys' and host='localhost'
    flush privileges;

    1.3 授权grant

    1.3.1 grant

    格式
    grant  权限   on  权限范围(对象)  to  用户  identified by  '';
    
    权限(角色):
    select、update、delete、insert、drop、create
    ALL 
    
    权限范围:
    *.*  所有数据库对象
    oldboy.*   oldboy单库下所有对象
    oldboy.test  单表级别
    
    
    用户:
    repl@localhost
    repl@'10.0.0.53'
    repl@'10.0.0.%'
    repl@'10.0.0.5%'
    -----
    要求:
    1、用户只能通过10网段访问,用户名为oldboy,密码为123
    2、只能对oldboy数据库下的对象进行增insert create、改update、查select
    #创建 
    grant select,insert,update,create on oldboy.* to oldboy@'10.0.0.%' identified by '123';
    #查看权限
    show grants for oldboy@'10.0.0.%';
    #收回权限
    revoke drop on oldboy.* from 'oldboy'@'10.0.0.%';
    #删除用户
    drop user oldboy@'10.0.0.%'
    
    注意:
    创建的权限信息,不在/data/下的数据库名目录下

    1.4 好用功能、快捷键

    1.4.1 mysql客户端接口自带功能

    1、h 或 help 或 ?                 获取帮助
    2、G                           格式化输出(行转列)
    3、T 或 tee                    记录操作日志  tee /tmp/mysql.log
    4、c 或 CTRL+c                    退出mysql
    5、s 或 status                    查看数据库状态信息
    6、. 或 source                    mysql> source /tmp/world.sql
    7、u 或use                        use  world 
                                show databases  看当前所有数据库的名字
                                show tables   查看当前use到的数据库所有的表
                                show  tables from world   查看目标数据库下的表
    8、    ctrl +L   清屏

    1.5 增删改查-数据库SQL命令详解

    1.5.1 数据库

    #创建库
    mysql> create database xzy character set utf8;   #或缩写 charset utf8 (推荐)
    mysql> show create  database xzy;
    +----------+--------------------------------------------------------------+
    | Database | Create Database                                              |
    +----------+--------------------------------------------------------------+
    | xzy     | CREATE DATABASE `xzy` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    +----------+--------------------------------------------------------------+
    
    #修改库
    mysql> alter database xzy charset gbk;
    
    #删除库
    mysql> drop database xzy;

    1.5.2 表-table

    1.5.2.1 查看表

    # 帮助:
    mysql> help create table;
    # 查看列
    mysql> use xzy
    mysql> desc test;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | int(11)  | YES  |     | NULL    |       |
    | name  | char(30) | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+

    1.5.2.2 操作表

    # 创建表
    mysql> use xzy
    mysql> create table test(id int,name char(30));
    # 完整:
    CREATE TABLE `test` (
      `id` int(4) NOT NULL AUTO_INCREMENT,
      `name` char(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
    
    # 修改表名(两种方法)
    mysql> rename table test to test1;   或 
    mysql> alter table test1 rename to test;
    # 添加列结构 
    mysql> alter table people add addr char(40) NOT NULL;  #默认添加到最后
    # 指定添加年龄列到name列后面的位置,示例如下:
    alter table people add age int(4) after name;
    # 通过下面的命令在第一列添加qq字段。
    alter table test add telnum int first;
    # 同时添加多个列定义:
    alter table people add id int first ,add sex char(4) after name ;
    # 删除表结构:
    alter table people drop sex;
    # 修改表定义
    alter table people modify name char(20);
    # 修改列名:
    alter table people change name people_name char(30) ;

    1.5.3 插入、更新数据

    #  insert语句:
    create table test (id int,name varchar(20));     #创建表 test
    insert into test values(1,'test');            #插入单个
    insert into test values(2,'yougboy'),(3,'youggilr'); #插入多个
    insert into test(name) values('xiaoming');      #插入指定列
    select * from test;       #查看
    
    # 创建一模一样的表
    ------------------------------------
    create table test like oldboy;
    insert into oldboy select * from oldboy;
    ------------------------------------
     
    # 修改(更新)数据 update
    update(一定要有where条件)
    update test set name='oldboy1' WHERE  id = 1;
    
    # 删除数据 delete
    delete(一定要有where条件)
    delete from oldboy where id=1;

    1.5.4 查看数据-select

    select user,password ,host from mysql.user where user='sys';
    select user,password ,host from mysql.user where user like 'sy%';
    select * from oldboy.test;
    select id,name from test where id=2;
    select id,name from test where id>2 and id<4;

    1.6 复杂查询

    1.6.1 ORDER BY子句

    ORDER BY子句用来排序行
    语法:
    SELECT expr FROM table
    [WHERE condition(s)]
    [ORDER BY {column, expr, numeric_position} [Asc|DEsc]];
    其中:
    Asc:执行升序排序。默认值
    DEsc:执行降序排序
    ORDER BY子句一般在SELECT语句的最后面
    
    #两个排序条件
    SELECT * FROM city ORDER BY population,countrycode;

    1.6.2 LIMIT子句

    LIMIT子句是SELECT语句中的最后一个子句(在order by后面)。
    它用来表示从结果集中选取最前面或最后面的几行。
    语法:
    limit <获取的行数> [OFFSET <跳过的行数>]
    或者limit [<跳过的行数>,] <获取的行数>
    SELECT * FROM city ORDER BY 5 DEsc LIMIT 4;

    1.6.3 子查询

    获取和100号球员性别相同并且居住在同一城市的球员号码。
    select playerno   
    from players   
    where (sex, town) = (  
        select sex, town   
        from players   
        where playerno = 100);

    1.6.4 连接查询

    #基础用法
    SELECT * FROM Student,Grade WHERE Student.sID = Grade.gID;
    
    #AS 别名
    SELECT ci.name AS city_name ,co.name AS country_name,co.`SurfaceArea` AS mianji
     FROM city AS ci ,country AS co
     WHERE ci.name='qingdao' AND 
     ci.`CountryCode`= co.`CountryCode`;
    
    # NATURAL JOIN子句
    自动到两张表中查找所有同名同类型的列拿来做连接列,进行相等连接
    SELECT NAME,countrycode,LANGUAGE ,population
    FROM city NATURAL JOIN countrylanguage
    WHERE population > 1000000
    ORDER BY population;
    
    # 使用using子句 (指定列连接)
    SELECT NAME,countrycode,LANGUAGE ,population
    FROM city JOIN countrylanguage
    USING(countrycode);
  • 相关阅读:
    如何面试你的面试官
    给老婆的一篇文章
    机器学习:选对时机直线超车
    面试技巧:带走面试官的节奏
    微信红包的随机算法是怎样实现的?
    全栈技术导图
    AI时代:推荐引擎正在塑造人类
    冲顶大会APP技术选型及架构设计
    多域名解析及延伸知识点
    在编程中为所欲为[圣诞版]
  • 原文地址:https://www.cnblogs.com/xzy-blog/p/8268850.html
Copyright © 2020-2023  润新知