机器学习&全栈

Mysql基本入门

2018-05-03  本文已影响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表
上一篇下一篇

猜你喜欢

热点阅读