美文网首页
学习MySQL---ing

学习MySQL---ing

作者: Thor_果冻 | 来源:发表于2018-12-31 12:55 被阅读0次

    @[toc]

    Mac MySQL使用教程

    本文记录在我的GitHub
    记录使用Homebrew安装Mysql全过程 (亲测有效)
    mac安装mysql的两种方法(含配置)

    homebrew 安装完初始化

        mysql_secure_installation
    

    找mysql的配置文件方法

    输入 mysqld --verbose --help | more
    
    
    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 
    
    //其实上面这个.cnf顺序是MySQL数据库读取配置文件的顺序
    我用homebrew安装的在/usr/local/etc/my.cnf目录下
    

    修改密码

        修改密码:
        1、
        终端命令:mysqladmin -uroot -p password
        然后会弹出下面提示
        Enter password:   //这里输入上面的旧密码
        New password:    //重新输入新密码
        Confirm new password: //重新输入新密码
        
        2、
        mysqladmin -u root -p password 123456
    
        123456是我这里设置的密码,换成你自己的,运行后要输入一个密码,这个密码就是前面记录的root用户的初始密码,输入回车就更改密码成功了
    

    进入mysql数据库

    修改完就可以用mysql -u root -p命令登录了。
    也可以用mysql -h 主机名 -u 用户名 -p命令登录,但一般我们只有在远程登录的时候才会用到-h参数(远程主机的主机名或者IP地址),如果本地登录也想用主机名填写localhost就可以了。

    查看已有的数据库

    登录mysql后,输入show databases;
    注意后面的databases这个单词后面是有个s的,然后最后面是有个分";"的。

        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | mysql              |
        | performance_schema |
        | sys                |
        +--------------------+
    

    查看端口号

    登录mysql后,输入show global variables like 'port';

        +---------------+-------+
        | Variable_name | Value |
        +---------------+-------+
        | port          | 3306  |
        +---------------+-------+
    

    创建数据库

    create database study_mysql;

        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | mysql              |
        | performance_schema |
        | study_mysql        |
        | sys                |
        +--------------------+
    

    对你需要操作的数据库进行操作

    use study_mysql;

        Database changed
    

    在对应的数据库中创建表

    CREATE TABLE 数据库表名;

    CREATE TABLE study001
        -> (
        -> id char(10) not null primary key,
        -> name char(16) not null,
        -> sex char(6) not null,
        -> age int not null,
        -> address char(36) not null                                                    -> );                                                                       Query OK, 0 rows affected (0.02 sec)
    

    查看该数据库下的所有表

    show tables;

        +-----------------------+
        | Tables_in_study_mysql |
        +-----------------------+
        | study001              |
        +-----------------------+
        1 row in set (0.00 sec)
    

    查看刚创建的数据库表字段是否正确

    DESCRIBE 数据库表名;

        mysql> DESCRIBE study001;
        +---------+----------+------+-----+---------+-------+
        | Field   | Type     | Null | Key | Default | Extra |
        +---------+----------+------+-----+---------+-------+
        | id      | char(10) | NO   | PRI | NULL    |       |
        | name    | char(16) | NO   |     | NULL    |       |
        | sex     | char(6)  | NO   |     | NULL    |       |
        | age     | int(11)  | NO   |     | NULL    |       |
        | address | char(36) | NO   |     | NULL    |       |
        +---------+----------+------+-----+---------+-------+
        5 rows in set (0.00 sec)
    

    向数据库表中添加数据

    insert into 数据库表名 values(value值1,value值2,.......);
    这种必须创建了几个列就需要传几个值,少一个就会报错(Column count doesn't match value count at row 1)。
    insert into 数据库表名 (列名1,列名2,...) values(value值1,value值2,...);
    这种可以少传参数,只会赋值那些设置值的字段(前提设置了默认值或者没有加not null,如果没有设置也会报错ERROR 1364 (HY000): Field 'address' doesn't have a default value)

    INSERT INTO study001 VALUES(6, '哈哈1', 'nv1', 10, '哈哈1');
    Query OK, 1 row affected (0.01 sec)
    
    INSERT INTO study001 (name, sex, age, address) VALUES ('天天1', '男1', 111, '天国1');
    

    查询表中数据

    select 列名称 from 数据库表名 [查询条件];

    <p id="操作符">常用操作符</p>

    操作符 描述
    = 等于
    <> 或!= 不等于
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    BETWEEN 在某个范围内("11"(包括)和 "3"(不包括)之间的数据)
    LIKE 搜索某种模式

    <p id="通配符">如果使用LIKE,需要使用到下面的通配符:</p>

    通配符 描述
    % 替代一个或多个字符
    _ 仅替代一个字符
    [charlist] 字符列中的任何单一字符
    [!charlist]或[^charlist] 不在字符列中的任何单一字符

    查询所有数据

    select * from 表名;

        mysql> select * from study001;
        +----+------------+------+---------+
        | id | name       | sex  | address |
        +----+------------+------+---------+
        | 1  | 吴冬冬     | 男   | 吴国    |
        | 11 | 小哈       | 11   | 哈哈    |
        | 2  | 吴冬冬2    | 男2  | 吴国2   |
        | 3  | 吴冬冬2    | 男2  | 吴国2   |
        | 4  | 小火       | 男2  | 吴国2   |
        | 5  | 小男       | 男2  | 吴国1   |
        +----+------------+------+---------+
    

    查询指定column数据

    select id,name from study001;

        mysql> select id,name from study001;
        +----+------------+
        | id | name       |
        +----+------------+
        | 1  | 吴冬冬     |
        | 11 | 小哈       |
        | 2  | 吴冬冬2    |
        | 3  | 吴冬冬2    |
        | 4  | 小火       |
        | 5  | 小男       |
        +----+------------+
    

    查询特定条件的表中数据

    select 列名称 from 数据库表名 where 查询条件;

    查询一个固定条件

    select 列名称 from 数据库表名 where 某个column=某个值;

        mysql> select * from study001 where name='吴冬冬2';
        +----+------------+------+---------+
        | id | name       | sex  | address |
        +----+------------+------+---------+
        | 2  | 吴冬冬2    | 男2  | 吴国2   |
        | 3  | 吴冬冬2    | 男2  | 吴国2   |
        +----+------------+------+---------+
    

    查询多个固定条件

    • and 提取所有都成立的数据
    • or 提取成立一条的数据
        mysql> select * from study001 where sex='男2' and address='吴国1';
        +----+--------+------+---------+
        | id | name   | sex  | address |
        +----+--------+------+---------+
        | 5  | 小男   | 男2  | 吴国1   |
        +----+--------+------+---------+
        1 row in set (0.00 sec)
    

    查询范围条件

    需要用到常用的操作符

        mysql> select * from study001 where id between '11' and '3';
        +----+------------+------+---------+
        | id | name       | sex  | address |
        +----+------------+------+---------+
        | 11 | 小哈       | 11   | 哈哈    |
        | 2  | 吴冬冬2    | 男2  | 吴国2   |
        | 3  | 吴冬冬2    | 男2  | 吴国2   |
        +----+------------+------+---------+
    

    通配符使用

        mysql> select * from study001 where name like '小%';
        +----+--------+------+---------+
        | id | name   | sex  | address |
        +----+--------+------+---------+
        | 11 | 小哈   | 11   | 哈哈    |
        | 4  | 小火   | 男2  | 吴国2   |
        | 5  | 小男   | 男2  | 吴国1   |
        +----+--------+------+---------+
    

    修改数据表中数据

    update 表名称 set 列名称 = 新值 where 列名称 = 某值
    如果要更新多个列值update 表名称 set 列名称1 = 新值, 列名称2 = 新值 where 列名称 = 某值

        mysql> update study001 set address='吴国吴国' where address='吴国2';
        Query OK, 3 rows affected (0.01 sec)
        Rows matched: 3  Changed: 3  Warnings: 0
        
        mysql> select * from study001;
        +----+------------+------+--------------+
        | id | name       | sex  | address      |
        +----+------------+------+--------------+
        | 1  | 吴冬冬     | 男   | 吴国         |
        | 11 | 小哈       | 11   | 哈哈         |
        | 2  | 吴冬冬2    | 男2  | 吴国吴国     |
        | 3  | 吴冬冬2    | 男2  | 吴国吴国     |
        | 4  | 小火       | 男2  | 吴国吴国     |
        | 5  | 小男       | 男2  | 吴国1        |
        +----+------------+------+--------------+
    
        mysql> update study001 set address='吴国2',sex='男3'  where name='吴冬冬2';
        Query OK, 2 rows affected (0.01 sec)
        Rows matched: 2  Changed: 2  Warnings: 0
        
        mysql> select * from study001;
        +----+------------+------+--------------+
        | id | name       | sex  | address      |
        +----+------------+------+--------------+
        | 1  | 吴冬冬     | 男   | 吴国         |
        | 11 | 小哈       | 11   | 哈哈         |
        | 2  | 吴冬冬2    | 男3  | 吴国2        |
        | 3  | 吴冬冬2    | 男3  | 吴国2        |
        | 4  | 小火       | 男2  | 吴国吴国     |
        | 5  | 小男       | 男2  | 吴国1        |
        +----+------------+------+--------------+
    

    删除表中数据

    delete from 数据库表名 where 删除条件;

    mysql> delete from study001 where name='吴冬冬2';
    Query OK, 2 rows affected (0.00 sec)
    
    mysql> select * from study001;
    +----+-----------+------+--------------+
    | id | name      | sex  | address      |
    +----+-----------+------+--------------+
    | 1  | 吴冬冬    | 男   | 吴国         |
    | 11 | 小哈      | 11   | 哈哈         |
    | 4  | 小火      | 男2  | 吴国吴国     |
    | 5  | 小男      | 男2  | 吴国1        |
    +----+-----------+------+--------------+
    

    如果想直接删除表内所有数据直接输入 delete from 表名; 等同于 delete * from 表名; 就可以删除表内所有数据

    修改表中column

    修改表中字段名称

    alter table 数据库表名 change 列名称 新列名称(如果想改名称就命名不一样的) 新数据类型 [其它];

    新数据类型时必须的,不了会报错

    mysql> alter table study001 change address addr;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    
        mysql> alter table study001 change address addr char(40) not null;
        Query OK, 4 rows affected (0.02 sec)
        Records: 4  Duplicates: 0  Warnings: 0
        
        mysql> describe study001;
        +-------+----------+------+-----+---------+-------+
        | Field | Type     | Null | Key | Default | Extra |
        +-------+----------+------+-----+---------+-------+
        | id    | char(10) | NO   | PRI | NULL    |       |
        | name  | char(16) | NO   |     | NULL    |       |
        | sex   | char(6)  | NO   |     | NULL    |       |
        | addr  | char(40) | NO   |     | NULL    |       |
        +-------+----------+------+-----+---------+-------+
    

    如果只想改变数据类型而不变更名称,也可以调用alter table 数据库表名 modify 列名称 新数据类型;

    添加字段

    alter table 表名 add 列名称 数据类型;

        mysql> alter table study001 add column_name char(20);
        Query OK, 0 rows affected (0.04 sec)
        Records: 0  Duplicates: 0  Warnings: 0
        
        mysql> alter table study001 add column_name222 int;
        Query OK, 0 rows affected (0.04 sec)
        Records: 0  Duplicates: 0  Warnings: 0
        
        mysql> describe study001;
        +----------------+----------+------+-----+---------+-------+
        | Field          | Type     | Null | Key | Default | Extra |
        +----------------+----------+------+-----+---------+-------+
        | id             | char(10) | NO   | PRI | NULL    |       |
        | name           | char(20) | YES  |     | NULL    |       |
        | sex            | char(6)  | NO   |     | NULL    |       |
        | addr           | char(40) | NO   |     | NULL    |       |
        | column_name    | char(20) | YES  |     | NULL    |       |
        | column_name222 | int(11)  | YES  |     | NULL    |       |
        +----------------+----------+------+-----+---------+-------+
    

    删除字段

    alter table 表名 drop column 列名称;

        mysql> alter table study001 drop column column_name222;
        mysql> alter table study001 drop column column_name;
        Query OK, 0 rows affected (0.05 sec)
        Records: 0  Duplicates: 0  Warnings: 0
        
        mysql> describe study001;
        +-------+----------+------+-----+---------+-------+
        | Field | Type     | Null | Key | Default | Extra |
        +-------+----------+------+-----+---------+-------+
        | id    | char(10) | NO   | PRI | NULL    |       |
        | name  | char(20) | YES  |     | NULL    |       |
        | sex   | char(6)  | NO   |     | NULL    |       |
        | addr  | char(40) | NO   |     | NULL    |       |
        +-------+----------+------+-----+---------+-------+
    

    重命名数据库表名

    alter table 表名 rename 新表名;

        mysql> alter table study001 rename study;
        
        mysql> show tables;
        +-----------------------+
        | Tables_in_study_mysql |
        +-----------------------+
        | study                 |
        +-----------------------+
    

    删除表/数据库

    drop table 表名;
    drop database 数据库名;

    删除表前我先创建了一个study11的表。

        mysql> show tables;
        +-----------------------+
        | Tables_in_study_mysql |
        +-----------------------+
        | study                 |
        | study11               |
        +-----------------------+
    
        mysql> drop table study11;
        Query OK, 0 rows affected (0.01 sec)
        
        mysql> show tables;
        +-----------------------+
        | Tables_in_study_mysql |
        +-----------------------+
        | study                 |
        +-----------------------+
    

    参考文章

    相关文章

      网友评论

          本文标题:学习MySQL---ing

          本文链接:https://www.haomeiwen.com/subject/nylplqtx.html