這篇文章主要針對剛入門的開發,一般半個小時是可以學完的,當然要理解的話估計不止30分鐘,對于初學者來說隻需滿足自己需求可以增删改查等簡易的維護即可。
下面介紹下MySQL的基礎方面内容。
一、開始使用
MySQL 為關系型數據庫(Relational Database Management System),一個關系型數據庫由一個或數個表格組成, 表格一般包括以下:
- 表頭(header): 每一列的名稱;
- 列(col): 具有相同數據類型的數據的集合;
- 行(row): 每一行用來描述某個人/物的具體信息;
- 值(value): 行的具體信息, 每個值必須與該列的數據類型相同;
- 鍵(key): 表中用來識别某個特定的人\物的方法, 鍵的值在當前列中具有唯一性。
二、登錄MySQL
mysql -h 127.0.0.1 -u 用戶名 -p mysql -D 所選擇的數據庫名 -h 主機名 -u 用戶名 -p
三、創建數據庫
對于表的操作需要先進入庫use 庫名;
-- 創建一個名為 samp_db 的數據庫,數據庫字符編碼指定為 utf8 create database samp_db character set utf8; drop database samp_db; -- 删除 庫名為samp_db的庫 show databases; -- 顯示數據庫列表。 use samp_db; -- 選擇創建的數據庫samp_db show tables; -- 顯示samp_db下面所有的表名字 describe 表名; -- 顯示數據表的結構 delete from 表名; -- 清空表中記錄
四、創建數據庫表
使用 create table 語句可完成對表的創建, create table 的常見形式: 語法:create table 表名稱(列聲明);
-- 如果數據庫中存在user_accounts表,就把它從數據庫中drop掉 DROP TABLE IF EXISTS `user_accounts`; CREATE TABLE `user_accounts` ( `id` int(100) unsigned NOT NULL AUTO_INCREMENT primary key, `password` varchar(32) NOT NULL DEFAULT '' COMMENT '用戶密碼', `reset_password` tinyint(32) NOT NULL DEFAULT 0 COMMENT '用戶類型:0-不需要重置密碼;1-需要重置密碼', `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手機', `create_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `update_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), -- 創建唯一索引,不允許重複 UNIQUE INDEX idx_user_mobile(`mobile`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表信息';
數據類型的屬性解釋
- NULL:數據列可包含NULL值;
- NOT NULL:數據列不允許包含NULL值;
- DEFAULT:默認值;
- PRIMARY KEY:主鍵;
- AUTO_INCREMENT:自動遞增,适用于整數類型;
- UNSIGNED:是指數值類型隻能為正數;
- CHARACTER SET name:指定一個字符集;
- COMMENT:對表或者字段說明;
五、增删改查1、SELECT
SELECT 語句用于從表中選取數據。
語法:SELECT 列名稱 FROM 表名稱
語法:SELECT * FROM 表名稱
-- 表station取個别名叫s,表station中不包含 字段id=13或者14 的,并且id不等于4的 查詢出來,隻顯示id SELECT s.id from station s WHERE id in (13,14) and id not in (4); -- 從表 Persons 選取 LastName 列的數據 SELECT LastName FROM Persons -- 從表 users 選取 id=3 的數據,并隻拉一條數據(據說能優化性能) SELECT * FROM users where id=3 limit 1 -- 結果集中會自動去重複數據 SELECT DISTINCT Company FROM Orders -- 表 Persons 字段 Id_P 等于 Orders 字段 Id_P 的值, -- 結果集顯示 Persons表的 LastName、FirstName字段,Orders表的OrderNo字段 SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p, Orders o WHERE p.Id_P = o.Id_P -- gbk 和 utf8 中英文混合排序最簡單的辦法 -- ci是 case insensitive, 即 “大小寫不敏感” SELECT tag, COUNT(tag) from news GROUP BY tag order by convert(tag using gbk) collate gbk_chinese_ci; SELECT tag, COUNT(tag) from news GROUP BY tag order by convert(tag using utf8) collate utf8_unicode_ci;
2、UPDATE
Update 語句用于修改表中的數據。
語法:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
-- update語句設置字段值為另一個結果取出來的字段 update user set name = (select name from user1 where user1 .id = 1 ) where id = (select id from user2 where user2 .name='小蘇'); -- 更新表 orders 中 id=1 的那一行數據更新它的 title 字段 UPDATE `orders` set title='這裡是标題' WHERE id=1;
3、INSERT
INSERT INTO 語句用于向表格中插入新的行。
語法:INSERT INTO 表名稱 VALUES (值1, 值2,....)
語法:INSERT INTO 表名稱 (列1, 列2,...) VALUES (值1, 值2,....)
-- 向表 Persons 插入一條字段 LastName = JSLite 字段 Address = shanghai INSERT INTO Persons (LastName, Address) VALUES ('JSLite', 'shanghai'); -- 向表 meeting 插入 字段 a=1 和字段 b=2 INSERT INTO meeting SET a=1,b=2; -- SQL實現将一個表的數據插入到另外一個表的代碼 -- 如果隻希望導入指定字段,可以用這種方法: -- INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 來源表; INSERT INTO orders (user_account_id, title) SELECT m.user_id, m.title FROM meeting m where m.id=1; -- 向表 charger 插入一條數據,已存在就對表 charger 更新 `type`,`update_at` 字段; INSERT INTO `charger` (`id`,`type`,`create_at`,`update_at`) VALUES (3,2,'2017-05-18 11:06:17','2017-05-18 11:06:17') ON DUPLICATE KEY UPDATE `id`=VALUES(`id`), `type`=VALUES(`type`), `update_at`=VALUES(`update_at`);
4、DELETE
領取方式這份基礎的MySQL思維導圖怎麼領取呢?
1.請在評論區評論 點贊 轉發
2.點擊關注,關注本頭條号
3.進入頭條号主頁面,右上角有私信功能,私信小編:MySQL入門圖
同時希望大家多多轉發分享給更多的朋友哦!
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注下~
,