Mysql基本入门

作者: 采香行处蹙连钱 | 来源:发表于2018-05-03 15:06 被阅读4次

    mysql入门

    mysql与sql指令
    1. 参考文献:http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#c1

    2. Mac上安装

      $ brew install mysql
      $ mysql server start 
      $ mysql.server stop
      如果mysql server 无法启动的话,可以使用:
      $ mysqld 
      $ mysql
      
      配置mysql
      启动mysql
      $ mysqld  //改命令可以直接启动mysql
      $ mysql.server start 该命令也可以直接启动mysql
      启动mysql命令行,该命令启动mysql后直接进入mysql命令行模式
      若要进入该模式,必须先启动mysql
      $ mysql 
      //
      MySQL服务器启动错误 'The server quit without updating PID file'
      http://pein0119.github.io/2015/03/25/MySQL%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%AF%E5%8A%A8%E9%94%99%E8%AF%AF-The-server-quit-without-updating-PID-file/
      遇到该问题,我是使用这一条解决的:
      1.我通过检查我的旧mac发现/usr/local/var/mysql/的所有者是xxx
      2.但是启动报错的那台mac检查发现/usr/local/var/mysql/的所有者是root
      3.于是执行 sudo chown -R yxt /usr/local/var/mysql/  ytx为本台mac的用户名。
      于是这个纠结了大半年的问题终于迎刃而解。
      
      执行mysqld后:
      
      .....
      2016-11-12 21:29:00 33202 [Note]   - '::' resolves to '::';
      2016-11-12 21:29:00 33202 [Note] Server socket created on IP: '::'.
      2016-11-12 21:29:00 33202 [Note] Event Scheduler: Loaded 0 events
      2016-11-12 21:29:00 33202 [Note] mysqld: ready for connections.
      Version: '5.6.27'  socket: '/tmp/mysql.sock'  port: 3306  Homebrew
      
      这段运行是多么优雅啊!
      
      所以让我再次认识到服务器编程,除了是路径之外,还是权限!是路径+权限。
      使用mysql.server start 启动
      
    3. 安装好之后Mac上的一些配置

      1. mysql启动
      $ sudo mysqld #先启动mysqld
      $ sudo mysql #启动mysql
      
      2.mysql 安装路径(这里安装了mysql的全部数据库)
      /usr/local/var/mysql
      
      3. 寻找mysql配置文件路径
      ➜  ~ mysql --help | grep my.cnf 
                            order of preference, my.cnf, $MYSQL_TCP_PORT,
      /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 
      
      4.
      
    4. 使用Mysql数据库

      $ mysql -D xxx(数据库名) -h hostxx -u 用户名 -p 
      $ use xxx数据库名
      
    5. SQL

      1. 建库
      CREATE DATABASE test;
      
      2. 建表
      CREATE TABLE `cat_diary` (
      ) COMMENT '日记列表'
      
      VARCHAR 可存储65532字节大小,长文
      CHAR 
      NOT NULL (非空也占空间) if null
      TINYINT(1) 布尔类型,0,1
      AUTO_INCREMENT
      PRIMARY KEY 主键
      DEFAULT '' 或者0
      utf8mb4 COLLATE 允许表情符号,二者组合使用
      COMMENT 注释
      text 2M存储大小 除非长文,博文
      
      deleted  created_at updated_at 必备字段
       
      3.建索引 INDEX
      CREATE INDEX idx_cat_dairy_comment_cat_diary_id_user_id_parent_id ON cat_diary_comment(cat_diary_id, user_id, parent_comment_id);
      
      索引类型:主键索引,unic索引
      (索引写入的时候慢,读操作快) 一张表不要超过五个
      索引失效:NULL判断会失效,具体有九种场景索引会失效,尽量避免
      
      where 和 groupby 后的字段一般要建立索引
      
      4. 数据库权限管理表,会去掉delete,防止物理删除
      6. `cat_proverb` 数据库引号,保留关键字,需要引号 
      7. 导入数据库
      source xxxpath
      8. 导出数据库
      mysqldump -uroot -p dbname tablename > xxx.sql
      9.数据库命令
        更新  UPDATE user SET deleted = 1 WHERE id=99
        插入  INSERT user (id, type) VALUES ()
        查询 
               去重 group by 
                left join 左关联  right join右关联 full join 
                SELECT * FROM cat c LEFT JOIN user u ON c.user_id=u.id
                求和 sum SELECT sum(fishty) from cat_diary 
               计数 count 
               条件查询 where  != <> =  AND OR NOT 尽量在字段中不要出现NULL
               模糊查询、包含 like.  like '%豆%' 关联所有有豆的数据, '%豆' 以豆结尾,
               右模糊会导致关联失效。
               搜索联想一般不是查询数据库,而是用搜索引擎
               
        子查询(效率较慢)
      10. top N 前N条数据 limit 同理
      11. 
      
    sql实战
    1. sql实战训练参考:http://www.runoob.com/mysql/mysql-insert-query.html
    <pre class="md-fences md-end-block" lang="php" contenteditable="false" cid="n313" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 0.9em; white-space: pre; display: block; break-inside: avoid; text-align: left; background: var(--code-block-bg-color); background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(221, 221, 221); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit;"><?php
    ​
    // 连接数据库
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = 'xxx';
    $conn = mysqli_connect($dbhost, $dbuser,  $dbpass);
    if (!$conn) {
     die('Could not connect: '. mysqli_error());
    }
    echo '数据库连接成功';
    ​
    // 创建数据库
    $sql = 'CREATE DATABASE IF NOT EXISTS RUNOOB';
    $retval = mysqli_query($conn, $sql);
    if (!$retval) {
     die('创建数据库失败: ' . mysqli_error($conn));
    }
    echo "数据库RUNOOB 创建成功\n";
    ​
    // 创建数据表
    mysqli_select_db($conn, 'RUNOOB');
    $createTable = "CREATE TABLE runoob_tbl(".
     "runoob_id INT NOT NULL AUTO_INCREMENT, ".
     "runoob_title VARCHAR(100) NOT NULL, ".
     "runoob_author VARCHAR(40) NOT NULL, ".
     "sumission_date DATE, ".
     "PRIMARY KEY ( runoob_id )) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
    $createR = mysqli_query($conn, $createTable);
    if (!$createR) {
     die('数据表创建失败:'. mysqli_error($conn));
    }
    echo "数据表创建成功\n";
    ​
    // 删除数据表 || 删除表数据
    $deleteTable = "DROP TABLE runoob_tbl";
    $deledata = "DELETE FROM runoob_tbl where runoob_id=1";
    // delete from 表名 where 删除条件;
    // truncate table 表名;
    // drop  table  表名;
    ​
    // 插入数据
    $insertSql = "INSERT INTO runoob_tbl" . 
     "(runoob_title, runoob_author, submission_date) ".
     "VALUES ". 
     "('学习python', '高龙')";
    ​
    // 关闭数据库
    mysqli_close($conn);
    ​
     ?>
    ​</pre>
    
    1. 实战之查询user表

    相关文章

      网友评论

        本文标题:Mysql基本入门

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