今天是3月7日,女生節,在此先祝各位廣大女性同志節日快樂。
今天清理桌面,找到了一份MySQL的入門筆記,趁着今天清閒,我就把它倒騰過來,順便複習複習,畢竟很久沒碰過數據庫了。
下面直接進入正題:
1、入門須知:
客戶端的概念:我們存取數據都需要客戶端和服務器端進行通話,我們打開任務管理器,可以看到mysql相關的服務,可以找到mysql(客戶端)和mysqld(服務端),其實數據的存取就是這二者之間的通話。
SQL語言的特點:結構化查詢的語言、what型語言而非how型語言。
基礎操作命令:
- 連接數據庫:mysql -h 地址 -u 用戶名 -p密碼
- 查看數據庫:show databases
- 使用數據庫:use 數據庫名
- 查看數據表:show tables
- 查看錶的字段:desc 表名
- 創建數據庫:create database dbname charset utf8;
- 刪除數據庫:drop database dbname;
- 查看錶的創建過程:show create table tableName;
下面看一下我創建的一個數據庫:
create database qingshudan;
use qingshudan;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用戶名',
`phone` VARCHAR(15) NOT NULL DEFAULT '' COMMENT '手機號',
`avatar` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '頭像',
`signature` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '簽名',
`wx_id` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '微信綁定',
`qq_id` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'QQ綁定',
`wb_id` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '微博綁定',
`fans` INT(11) NOT NULL DEFAULT '0' COMMENT '粉絲數',
`followers` INT(11) NOT NULL DEFAULT '0' COMMENT '關注數',
`collections` INT(11) NOT NULL DEFAULT '0' COMMENT '收藏數',
`writ_reads` INT(11) NOT NULL DEFAULT '0' COMMENT '待看數',
`integral` INT(11) NOT NULL DEFAULT '0' COMMENT '積分',
`address` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '聯繫地址',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0 正常 1 刪除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '註冊時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `category` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '類名',
`books` INT(11) NOT NULL DEFAULT '0' COMMENT '書本數',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0 正常 1 刪除',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `book` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '書名',
`author` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '作者',
`isbn` VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'ISBN',
`publisher` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '出版社',
`publish_time` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '出版時間',
`category_id` INT(11) NOT NULL DEFAULT '0' COMMENT '分類id',
`category_name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '分類名',
`pages` INT(11) NOT NULL DEFAULT '0' COMMENT '頁數',
`price` DECIMAL(10,2) NOT NULL DEFAULT '0.00' COMMENT '定價/最低價',
`cover` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '封面',
`recommend_des` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '推薦語',
`collections` INT(11) NOT NULL DEFAULT '0' COMMENT '收藏數',
`shares` INT(11) NOT NULL DEFAULT '0' COMMENT '分享數',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`buy_link` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '購買地址',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0 正常 1 刪除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bill` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`title` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '標題',
`books` INT(11) NOT NULL DEFAULT '0' COMMENT '圖書數量',
`recommend_des` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '推薦語',
`collections` INT(11) NOT NULL DEFAULT '0' COMMENT '收藏數',
`shares` INT(11) NOT NULL DEFAULT '0' COMMENT '分享數',
`comments` INT(11) NOT NULL DEFAULT '0' COMMENT '評論數',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0 正常 1 刪除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `comment` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`user_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用戶名',
`user_avatar` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用戶頭像',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書單id',
`content` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '內容',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0 正常 1 刪除',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `share` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`type` INT(11) NOT NULL DEFAULT '0' COMMENT '類型 0 書籍 1書單',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書單id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書籍id',
`channel` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '分享渠道',
`share_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '分享時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `attention` (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`attention_id` INT(11) NOT NULL DEFAULT '0' COMMENT '關注人id(我關注)',
`attentioned_id` INT(11) NOT NULL DEFAULT '0' COMMENT '被關注人id(粉絲)',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0正常 1取消關注' ,
`attent_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '關注時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `collect`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`type` INT(11) NOT NULL DEFAULT '0' COMMENT '類型 0書籍 1書單',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書單id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書籍id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0正常 1取消收藏',
`collect_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `gift`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`img` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '禮物封面圖',
`title` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '禮物名稱',
`score` INT(11) NOT NULL DEFAULT '0' COMMENT '積分數',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0正常 1下架',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '兌換次數',
`explain` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '說明',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `gift_exchange`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`gift_id` INT(11) NOT NULL DEFAULT '0' COMMENT '禮物id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0兌換失敗 1兌換成功',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '兌換個數',
`score` INT(11) NOT NULL DEFAULT '0' COMMENT '積分',
`exchange_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '兌換時間',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `score`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '積分總數',
`remark` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '備註',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '時間',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `score_rule`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`type` INT(11) NOT NULL DEFAULT '0' COMMENT '類型 0簽到 1任務',
`name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '任務名',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0未完成 1完成',
`score` INT(11) NOT NULL DEFAULT '0' COMMENT '積分數',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `checkin`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`rule_id` INT(11) NOT NULL DEFAULT '0' COMMENT '規則id',
`progress` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '完成進度',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '完成狀態 0未完成 1完成',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '時間',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `bill_book`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`bill_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書單id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書籍id',
`status` INT(11) NOT NULL DEFAULT '0' COMMENT '狀態 0正常 1移除',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '時間',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `today_recommend`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`book_id` INT(11) NOT NULL DEFAULT '0' COMMENT '書籍id',
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '書名',
`author` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '作者',
`publisher` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '出版社',
`publish_time` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '出版時間',
`cover` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '封面',
`type` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '書籍分類',
`recommend_des` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '推薦語',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`user_phto` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用戶頭像',
`user_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用戶名',
`num` INT(11) NOT NULL DEFAULT '0' COMMENT '關注數',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '時間',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_recommend`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`recommend_id` INT(11) NOT NULL DEFAULT '0' COMMENT '推薦id',
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用戶id',
`hobby` INT(11)NOT NULL DEFAULT '0' COMMENT '興趣 0不喜歡 1喜歡',
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '時間',
PRIMARY KEY(`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、數據的增刪查改:
增加:INSERT INTO tablename ( field1, field2,...field ) VALUES ( value1, value2,...value ); 如果數據是字符型,必須使用單引號或者雙引號,如:"value"。
刪除:DROP TABLE table_name ; 刪除數據表
delete from student where T_name = "張三"; 刪除某一條數據
查詢:select * from table_name ;查詢數據表中所有
select * from book limt 0,30 後面的limit m,n (分頁:m(m=(頁數-1)*n)爲略過的條數,n爲每頁多少條)
修改:UPDATE ss SET name ='dahai' WHERE id=1;(set後爲修改值,where爲查詢條件)
3.查詢模型:
(1)、列是變量,變量是可以計算的
select name,age+1 from table_name
select substring(goods_name,3) ………
(2)、where是表達式,值爲真或者假
select * from table_name where 1
給大家介紹兩個裝逼的術語:
- 投影運算:從表中取出列
- 廣義投影:列與列再做運算
4、運算符:
1)比較運算符:
< 小於 != 或 <> 不等於
<= 小於或等於 >= 大於或等於
In 在某集合內 between 在某範圍內
2)邏輯運算符:
NOT 或者 ! 邏輯非
OR 或 || 邏輯或
AND 或者 && 邏輯與
5、模糊查詢:
like模糊匹配 %通配任意字符 _通配單一字符
select * from goods where good_name like ‘%哈哈’
select * from goods where good_name like ‘哈哈___’
6、奇怪的null
null沒有值,無法做比較 ==> null=null 返回假 null !=null 返回假
select * from goods where name=null //查不到
查詢怪癖的null我們需要通過is來查詢:
select * from goods where name is null
select * from goods where name is not null
7、group分組與統計函數
- max() 求最大值
- min() 求最小值
- avg() 求平均值
- count() 求行數
- sum() 求總和
group by cloum_name 分組統計
select * from goods group by cat_id;
8、order by 排序:
- asc 升序(默認方式)
-
desc 降序
select * from goods order by cat_id
9、having篩選結果集:
先看一個例子,大家可以動手試一試:
select (a-b) as num from goods having num>100;(此處使用where會報錯)
having:是針對內存裏的結果集的 ,where是針對磁盤裏的數據文件
這裏我就不詳細介紹這兩者的區別,畢竟這一部分就已經脫離了我們入門的概念了,作爲一名前端工程師,上述基礎知識基本夠用了。