Mysql基本入門

mysql入門

mysql與sql指令
  1. 參考文獻(xiàn):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 無(wú)法啟動(dòng)的話,可以使用:
    $ mysqld 
    $ mysql
    
    配置mysql
    啟動(dòng)mysql
    $ mysqld  //改命令可以直接啟動(dòng)mysql
    $ mysql.server start 該命令也可以直接啟動(dòng)mysql
    啟動(dòng)mysql命令行,該命令啟動(dòng)mysql后直接進(jìn)入mysql命令行模式
    若要進(jìn)入該模式,必須先啟動(dòng)mysql
    $ mysql 
    //
    MySQL服務(wù)器啟動(dòng)錯(cuò)誤 '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/
    遇到該問(wèn)題,我是使用這一條解決的:
    1.我通過(guò)檢查我的舊mac發(fā)現(xiàn)/usr/local/var/mysql/的所有者是xxx
    2.但是啟動(dòng)報(bào)錯(cuò)的那臺(tái)mac檢查發(fā)現(xiàn)/usr/local/var/mysql/的所有者是root
    3.于是執(zhí)行 sudo chown -R yxt /usr/local/var/mysql/  ytx為本臺(tái)mac的用戶名。
    于是這個(gè)糾結(jié)了大半年的問(wèn)題終于迎刃而解。
    
    執(zhí)行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
    
    這段運(yùn)行是多么優(yōu)雅?。?
    所以讓我再次認(rèn)識(shí)到服務(wù)器編程,除了是路徑之外,還是權(quán)限!是路徑+權(quán)限。
    使用mysql.server start 啟動(dòng)
    
  3. 安裝好之后Mac上的一些配置

    1. mysql啟動(dòng)
    $ sudo mysqld #先啟動(dòng)mysqld
    $ sudo mysql #啟動(dòng)mysql
    
    2.mysql 安裝路徑(這里安裝了mysql的全部數(shù)據(jù)庫(kù))
    /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數(shù)據(jù)庫(kù)

    $ mysql -D xxx(數(shù)據(jù)庫(kù)名) -h hostxx -u 用戶名 -p 
    $ use xxx數(shù)據(jù)庫(kù)名
    
  5. SQL

    1. 建庫(kù)
    CREATE DATABASE test;
    
    2. 建表
    CREATE TABLE `cat_diary` (
    ) COMMENT '日記列表'
    
    VARCHAR 可存儲(chǔ)65532字節(jié)大小,長(zhǎng)文
    CHAR 
    NOT NULL (非空也占空間) if null
    TINYINT(1) 布爾類型,0,1
    AUTO_INCREMENT
    PRIMARY KEY 主鍵
    DEFAULT '' 或者0
    utf8mb4 COLLATE 允許表情符號(hào),二者組合使用
    COMMENT 注釋
    text 2M存儲(chǔ)大小 除非長(zhǎng)文,博文
    
    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索引
    (索引寫入的時(shí)候慢,讀操作快) 一張表不要超過(guò)五個(gè)
    索引失效:NULL判斷會(huì)失效,具體有九種場(chǎng)景索引會(huì)失效,盡量避免
    
    where 和 groupby 后的字段一般要建立索引
    
    4. 數(shù)據(jù)庫(kù)權(quán)限管理表,會(huì)去掉delete,防止物理刪除
    6. `cat_proverb` 數(shù)據(jù)庫(kù)引號(hào),保留關(guān)鍵字,需要引號(hào) 
    7. 導(dǎo)入數(shù)據(jù)庫(kù)
    source xxxpath
    8. 導(dǎo)出數(shù)據(jù)庫(kù)
    mysqldump -uroot -p dbname tablename > xxx.sql
    9.數(shù)據(jù)庫(kù)命令
      更新  UPDATE user SET deleted = 1 WHERE id=99
      插入  INSERT user (id, type) VALUES ()
      查詢 
             去重 group by 
              left join 左關(guān)聯(lián)  right join右關(guān)聯(lián) full join 
              SELECT * FROM cat c LEFT JOIN user u ON c.user_id=u.id
              求和 sum SELECT sum(fishty) from cat_diary 
             計(jì)數(shù) count 
             條件查詢 where  != <> =  AND OR NOT 盡量在字段中不要出現(xiàn)NULL
             模糊查詢、包含 like.  like '%豆%' 關(guān)聯(lián)所有有豆的數(shù)據(jù), '%豆' 以豆結(jié)尾,
             右模糊會(huì)導(dǎo)致關(guān)聯(lián)失效。
             搜索聯(lián)想一般不是查詢數(shù)據(jù)庫(kù),而是用搜索引擎
             
      子查詢(效率較慢)
    10. top N 前N條數(shù)據(jù) limit 同理
    11. 
    
sql實(shí)戰(zhàn)
  1. sql實(shí)戰(zhàn)訓(xùn)練參考: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
?
// 連接數(shù)據(jù)庫(kù)
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'xxx';
$conn = mysqli_connect($dbhost, $dbuser,  $dbpass);
if (!$conn) {
 die('Could not connect: '. mysqli_error());
}
echo '數(shù)據(jù)庫(kù)連接成功';
?
// 創(chuàng)建數(shù)據(jù)庫(kù)
$sql = 'CREATE DATABASE IF NOT EXISTS RUNOOB';
$retval = mysqli_query($conn, $sql);
if (!$retval) {
 die('創(chuàng)建數(shù)據(jù)庫(kù)失敗: ' . mysqli_error($conn));
}
echo "數(shù)據(jù)庫(kù)RUNOOB 創(chuàng)建成功\n";
?
// 創(chuàng)建數(shù)據(jù)表
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('數(shù)據(jù)表創(chuàng)建失?。?. mysqli_error($conn));
}
echo "數(shù)據(jù)表創(chuàng)建成功\n";
?
// 刪除數(shù)據(jù)表 || 刪除表數(shù)據(jù)
$deleteTable = "DROP TABLE runoob_tbl";
$deledata = "DELETE FROM runoob_tbl where runoob_id=1";
// delete from 表名 where 刪除條件;
// truncate table 表名;
// drop  table  表名;
?
// 插入數(shù)據(jù)
$insertSql = "INSERT INTO runoob_tbl" . 
 "(runoob_title, runoob_author, submission_date) ".
 "VALUES ". 
 "('學(xué)習(xí)python', '高龍')";
?
// 關(guān)閉數(shù)據(jù)庫(kù)
mysqli_close($conn);
?
 ?>
?</pre>
  1. 實(shí)戰(zhàn)之查詢user表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容