帶你入門mysql常用命令
約定:
本篇博文的資料庫名稱為 “test”,資料表有employees, salaries, dept_emp等資料表,方便大家理解每條命令的涵義,並根據自己的需求更改sql語句。
資料表的結構主要來源於**[牛客網](https://www.nowcoder.com)**,**特此感謝**,資料表的結構如下:
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
1. 建立資料庫
Create database test
2. 建立資料表
就employees表為例,建立流程如下:
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
primary key 代表主鍵,not null 表示值不能為空
3. 建立檢視
建立一個關於employees的檢視,命名為v_emloyees,只取emp_no, first_name, last_name屬性,操作如下:
CREATE view as v_employees as
select emp_no,first_name,last_name from employees;
4. 建立索引
以employees表為例,對emp_no建立唯一索引uni_idx_emp_no,對first_name建立普通索引idx_firstname
索引的使用:
查詢emp_no = 100000的資料:
CREATE UNIQUE INDEX uni_idx_emp_no on employees(emp_no);
CREATE INDEX idx_firstname on employees(first_name);
select * from employees FORCE INDEX uni_idx_emp_no WHERE emp_no=100000
5. 建立觸發器
構造一個觸發器audit_log,在向employees表中插入一條資料的時候,觸發插入相關的資料到audit中。
其中audit表為:
CREATE TABLE audit(
EMP_no INT NOT NULL,
NAME TEXT NOT NULL
);
建立觸發器的sql語句為:
CREATE TRIGGER audit_log after insert on employees
begin
insert into audit values(new.emp_no,new.to_date);
end;
6. 修改表名
修改employees 表名為 yuangong
alter table employees rename to yuangong
7. 增加表的屬性
在employees表中增加salary 屬性,預設值為1000000
alter table employees add column salary int(11) default 1000000;
8. 批量插入資料及如何插入帶時間欄位的資料表
批量插入employees表(時間欄位注意看):
上面是普通的手動插入操作,但我們在開發中更多情況可能是通過引數給values賦值,對於int型用’%d’萬用字元,對於char用’%s’萬用字元,對於datetime型別,用‘%s’萬用字元,但是傳入的datetime欄位一定要是時間欄位格式的!這點得注意。以下是示例sql程式碼:
insert or ignore into employees values(1,"2017-08-05","mike","jerry",'M','2017-08-16'),(1,"2017-08-05","Joe","Lily",'M','2017-08-16');
datetime字串型別如何轉成時間格式,可參考:
insert or ignore into employees values('%d','%s','%s','%s','%s','%s');
9. 聯合查詢inner join,left join,right join
聯合查詢中inner join ,left join,right join 的概念可參考: SQL中inner join、outer join和cross join的區別
這裡,我們要查詢employees表中員工對應的工資(salary),而工資在salaries表中,哈哈,這就要用到inner join 聯合查詢了,查詢語句如下:
select e.emp_no,s.salary
from employees as e inner join salaries as s on e.emp_no=s.emp_no;
10. 查詢表中最多/最少的資料(以最多查詢為例)
用max,min函式可查詢表中最多/最少資料,以salaries表為例:
select emp_no,max(salary) from salaries;
11. 查詢表中第二多/第二少的資料(以第二多查詢為例)
查詢第二多/第二少的資料有兩種方法,第一種的思想是通過limit命令,只顯示排序後的第二條資料;第二種思想是將最多/最少的資料去掉,再查詢的不就是第二多/第二少的資料啦~
#第一種寫法
select emp_no,salary from salaries order by salary desc limit 1,1;
#第二種寫法
select s1.emp_no,s1.max(salary) from salaries as s1
where s1.salary not in (select max(salary) from salaries);
12. 查詢每組中某一屬性最多的資料
比如這裡我們要查詢每個部門(dept_emp)中工資(salary)最高的員工資訊,那該怎麼做呢,根據前面的介紹,需要用到max,inner join 等函式,具體sql語句如下:
select de.dept_emp,max(s.salary)
from salaries as s inner join dept_emp as de on de.emp_no=s.emp_no
group by de.dept_emp;
13. 查詢表奇數行/偶數行的資料
查詢奇數行/偶數行資料的思想是,對每一條資料進行排序(排名),統計每條資料在第幾行,然後根據where語句進行篩選即可,實現過程對於新手來說可能比較繞,以employees表為例,sql語句如下,大家可以根據自己需求將表名替換即可。
SELECT e1.first_name FROM
(SELECT e2.first_name,
(SELECT COUNT(*) FROM employees AS e3
WHERE e3.first_name <= e2.first_name)
AS num FROM employees AS e2) AS e1
WHERE e1.num % 2 = 1;
14. 獲取某一屬性的增長情況
比如在這裡,我們要獲取每個員工的薪資(salary)漲幅,實現方法:
SELECT sCurrent.emp_no, (sCurrent.salary-sStart.salary) AS growth
FROM (SELECT s.emp_no, s.salary FROM employees e LEFT JOIN salaries s ON e.emp_no = s.emp_no) AS sCurrent
INNER JOIN (SELECT s.emp_no, s.salary FROM employees e LEFT JOIN salaries s ON e.emp_no = s.emp_no WHERE s.from_date = e.hire_date) AS sStart
ON sCurrent.emp_no = sStart.emp_no
ORDER BY growth;
15. 對employees表進行排序,按照first_name的後三個字母的規則,降序排列
這裡涉及到Substr的使用,sql語句如下:
select * from employees order by substr(first_name,-3)
select * from employees order by substr(first_name,length(first_name)-2);
16. 按照某一屬性值對錶中樣本排名
這一個的思想和查詢奇數行/偶數行的資料的思想一致,以salaries表為例,sql語句如下
SELECT s1.emp_no,s1.salary,COUNT(s2.salary) as rank
from salaries as s1,salaries as s2
where s1.salary<=s2.salary
order by s1.emp_no asc;
17. 查詢字串’10,A,B’ 中逗號’,’出現的次數cnt。
SELECT (length("10,A,B")-length(replace("10,A,B",",","")))/length(",") AS cnt;
18. 拼接資料表屬性
拼接主要用到了concat()函式,具體用法可參考:MySQL中函式CONCAT及GROUP_CONCAT
以employees為例,拼接first_name 和 last_name ,返回值為name的sql語句:
SELECT concat(first_name," ",last_name) as name from employees;
感謝:
*1.再次感謝牛客網提供的資料表,以便把具體寫法呈現給大家
2.感謝wasrehpic大犇提供的sql思路,讓我在瞭解mysql操作上少走了不少彎路*
相關推薦
帶你入門mysql常用命令
約定: 本篇博文的資料庫名稱為 “test”,資料表有employees, salaries, dept_emp等資料表,方便大家理解每條命令的涵義,並根據自己的需求更改sql語句。 資料表的結構主要來源於**[牛客網](https://www.nowcode
MySQL 安裝 + 入門大全 + 常用命令合集
MySQL 安裝與配置 MySQL 常見有兩種方式: (1)(建議) 直接下載安裝檔案安裝,會自動配置環境變數,自動安裝服務 下載地址:https://dev.mysql.com/downloads/installer/ (2)下載壓縮版檔案,自己手動
帶你玩轉Linux命令列(基礎入門篇)
一、學習前準備 幫助文件 Tab 補全 Tab 補全是非常有用的一個功能,可以用來自動補全命令或檔名,省時準確。 未輸入狀態下連按兩次 Tab 列出所有可用命令 已輸入部分命令名或檔名,按 Tab 進行自動補全,多用你就肯定會喜歡的了。
mysql 常用命令
mysql命令說明BEGIN COMMITmysql在客戶端執行更新、刪除開啟一個事務:BEGIN;UPDATE driver SET phone=‘11601620000‘ WHERE id=1;--ROLLBACK;COMMIT;DATE_FORMAT%Y-%m-%d %H-%iIFNULL(price,
mysql常用命令小結
mysq iss nal add and src http esc creat 1.命令行中鍵入 net start/stop mysql 開啟/停止mysql服務2.命令行中鍵入 mysql -u用戶名 -p密碼 連接數據庫 (以下命令後須加分號‘;‘)3.用show
MySql常用命令
查看表 pda chang font 全部 庫服務器 eache 發布 row MySQL 數據庫常用命令 1、MySQL常用命令 create database name; 創建數據庫 use databasename; 選擇數據庫 drop database nam
mysql 常用命令實例
練習 語文 inner 成績 desc ins 喬布斯 李磊 innodb -- 完成項目素材中的sql練習,並將編寫的sql文件和運行截圖保存,打包後作為作業提交。 -- 設計一個學生成績數據庫,該庫包含學生,老師,課程和成績等信息並完成後面的練習(註意主外鍵關系)。--
mysql常用命令總結
ble 刪除 常用 ima ces prim left 列名 mysq 一、約束操作 增加主鍵約束 alter table 表名 add constraint 約束名 primary key(列名) 增加外鍵約束 alter table 表名 add constrain
Linux 操作MySQL常用命令行
數據 logs 相關 entry 註意 新增 otto delet 記錄 Linux 操作MySQL常用命令行註意:MySQL中每個命令後都要以分號;結尾。 1、顯示數據庫 mysql> show databases; +----------+ | Datab
手把手教你入門MySQL零基礎入門教程!
手把手教你入門MySQL零基礎入門教程! 目前MySQL已經成為最為流行的開源關系數據庫系統,並且一步一步地占領了原有商業數據庫的市場。可以看到Google、Facebook、Yahoo、網易、久遊等大公司都在使用MySQL數據庫,甚至將其作為核心應用的數據庫系統。而My
Mysql常用命令操作之增刪改查
賬號 建立 批量插入 創建表 tab use 常用命令 default images 1.數據庫操作: 1.1 創建數據庫 : create database <數據庫名> a.建立一個名為oldboy_default的數據
python學習——day12(MySQL常用命令,連接python)alex:http://www.cnblogs.com/wupeiqi/articles/5713330.html
www base drop cal esc username prim ber .com MySQL mysql 常用命令 MySQL創建、刪除數據庫 1 create database alexdb;#創建數據庫 2 3 drop database alexdb;
mysql常用命令大全
詳細 pre denied 隱患 命令 緩存 如果 數據庫權限 磁盤空間 第一招、mysql服務的啟動和停止 net stop mysql net start mysql 第二招、登陸mysql 語法如下: mysql -u用戶名 -p用戶密碼 鍵入命令mysql -uro
設置更改root密碼、連接mysql、mysql常用命令
mysql用法設置更改root密碼1、將mysql加入環境變量中[root@centos7 ~]# grep mysql /etc/profileexport PATH=/usr/local/mysql/bin/:$PATH2、直接登錄,無密碼[root@centos7 ~]# mysql -uroot3、設
mysql 常用命令導入導出修改root密碼
mysqldump class bsp name update -s 數據庫名 pos date MySQL 忘記口令的解決辦法如果 MySQL 正在運行,首先殺之: killall -TERM mysqld。 啟動 MySQL :mysql --skip-grant-ta
MySql常用命令集Mysql常用命令5
完全 fun 謂詞 詳細 127.0.0.1 char l數據庫 pict jet 九. 交叉查詢 交叉查詢可以對數據進行總和,平均,計數或其他總和計算法的計算,這些數據通過 兩種信息進行分組:一個顯示在表的左部,另一個顯示在表的頂部. Microsoft Je
MySQL更改root密碼、連接MySQL、MySQL常用命令介紹
row all sta 一行 reg time 建表語句 slist cli 更改MySQL數據庫root密碼 1. 首次進入數據庫是不用密碼的,如下所示: [root@gary-tao ~]# /usr/local/mysql/bin/mysql -uroot //使用絕
mysql(設置/更改mysql密碼,連接MySQL,MySQL常用命令,MySQL兩種引擎區別)
export elf sdn name 啟動 inux 版本 glob 第一個 設置/更改MySQL的密碼問題一,設置mysql密碼我們安裝MySQL時,把它放在了/usr/local/mysql/下,在當前的環境中並沒有這個目錄,所以我們要把目錄添加到當前目錄下。[roo
mysql 常用命令
prim del def creat sockets sel cor inno 常用命令 #mysql -uroot -p#show variables like ‘%char%‘;mysql> create database sockets;mysql> SH
MySQL常用命令操作大全
記錄 字段 goods 輸入密碼 文件 oca xtra update 密碼 linux操作mysql數據庫 mysql -u root -p 等待輸入密碼,密碼不可見。然後輸入密碼。(root是用戶名),然後進入mysql1、顯示數據庫 show databases;