mysql入門
mysql與sql指令
參考文獻(xiàn):http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#c1
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)安裝好之后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.使用Mysql數(shù)據(jù)庫(kù)
$ mysql -D xxx(數(shù)據(jù)庫(kù)名) -h hostxx -u 用戶名 -p $ use xxx數(shù)據(jù)庫(kù)名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)
- 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>
- 實(shí)戰(zhàn)之查詢user表