mysql dos常用命令
打開mysql服務
net start mysql
關閉mysql服務
net stop mysql
登陸mysql
mysql -u root -p
連接到遠程主機上的mysql
假設遠程主機ip爲: 22.22.22.22 ,用戶名爲root ,密碼爲abcd123.則鍵入以下命令
mysql -h22.22.22.22 -u root -p abc123
退出mysql
exit
修改密碼
修改root 密碼
update user set password=password("sss") where user = "root";
打開數據庫
use datatable
顯示所有數據庫
show databases;
顯示數據庫mysql裏的所有表,先切入到數據庫(如use datatables),才能看到表
show tables;
顯示錶mysql數據庫中的user表的列信息
describe user;
數據庫創建
create database db_name;
刪除數據庫
drop database db_name;刪除時可先判斷是否存在,drop database if exits db_name
建表
create table table_name(字段一 數據類型,字段二 數據類型);
添加數據 insert into 表名[(字段一,字段二)]value (值1,值2);
如果向表中的每一個字段都插入一個值,[]中括號裏面的可以不用寫
查詢表裏所有數據
select * from tbale;
更新指定數據
update table_name set 字段名 = '新值‘where id =1;
刪除表中數據
delete from table_name;
一次創建多個數據庫用戶
create user username identified by 'password' ,username2 identified by 'password'
用戶的權限控制
將某個庫中的某個表的控制權賦予某個用戶
grant all on db_name.table_name to user_name [indentified by 'password'];
表結構的修改
增加一個字段
alert table table_name add column 字段名 字段類型 alter 某字段;
修改字段名稱
alter table table_name change 舊字段名 新字段名 新字段類型;
改表的名字
alter table table_name rename to new_table_name;
一次性清空表中的所有數據
truncate table table_name;
備份數據庫
mysqldump -h host -u root -p dbname >dbname_backup.sql
sql常用函數
“Websites” 表
±—±-------------±--------------------------±------±--------+
| id | name | url | alexa | country |
±—±-------------±--------------------------±------±--------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘寶 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鳥教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
±—±--------------±--------------------------±------±--------+
"access_log"表
±----±--------±------±-----------+
| aid | site_id | count | date |
±----±--------±------±-----------+
| 1 | 1 | 45 | 2016-05-10 |
| 2 | 3 | 100 | 2016-05-13 |
| 3 | 1 | 230 | 2016-05-14 |
| 4 | 2 | 10 | 2016-05-14 |
| 5 | 5 | 205 | 2016-05-14 |
| 6 | 4 | 13 | 2016-05-15 |
| 7 | 3 | 220 | 2016-05-15 |
| 8 | 5 | 545 | 2016-05-16 |
| 9 | 3 | 201 | 2016-05-17 |
±----±--------±------±-----------+
有用的 Aggregate 函數:
- AVG() - 返回平均值
- COUNT() - 返回行數
- FIRST() - 返回第一個記錄的值
- LAST() - 返回最後一個記錄的值
- MAX() - 返回最大值
- MIN() - 返回最小值
- SUM() - 返回總和
AVG() - 返回平均值
下面的 SQL 語句選擇訪問量高於平均訪問量的 “site_id” 和 “count”:
SELECT site_id, count FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);
COUNT() - 返回行數
COUNT() 函數返回匹配指定條件的行數。適用於mysql,和Oracle
COUNT(DISTINCT column_name) 函數返回指定列的不同值的數目:
SELECT COUNT(DISTINCT column_name) FROM table_name;
MAX
下面的 SQL 語句從 “Websites” 表的 “alexa” 列獲取最大值:
SELECT MAX(alexa) AS max_alexa FROM Websites;
MIN
下面的 SQL 語句從 “Websites” 表的 “alexa” 列獲取最小值:
SELECT MIN(alexa) AS min_alexa FROM Websites;
SUM
下面的 SQL 語句查找 “access_log” 表的 “count” 字段的總數:
SELECT SUM(count) AS nums FROM access_log;
GROUP BY
GROUP BY 語句用於結合聚合函數,根據一個或多個列對結果集進行分組。
下面的 SQL 語句統計所有網站的訪問的記錄數:
SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函數一起使用。
HAVING 子句可以讓我們篩選分組後的各組數據。
下面的 SQL 語句統計所有網站的訪問的記錄數:
SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
現在我們想要查找總訪問量大於 200 的網站,並且 alexa 排名小於 200。
我們在 SQL 語句中增加一個普通的 WHERE 子句:
SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;
UCASE() 函數
UCASE() 函數把字段的值轉換爲大寫。
下面的 SQL 語句從 “Websites” 表中選取 “name” 和 “url” 列,並把 “name” 列的值轉換爲大寫:
SELECT UCASE(name) AS site_title, url
FROM Websites;
LCASE() 函數
LCASE() 函數把字段的值轉換爲小寫。
下面的 SQL 語句從 “Websites” 表中選取 “name” 和 “url” 列,並把 “name” 列的值轉換爲小寫:
SELECT LCASE(name) AS site_title, url
FROM Websites;
MID() 函數
MID() 函數用於從文本字段中提取字符。
SELECT MID(column_name,start[,length]) FROM table_name;
下面的 SQL 語句從 “Websites” 表的 “name” 列中提取前 4 個字符:
SELECT MID(name,1,4) AS ShortTitle
FROM Websites;
LEN() 函數
LEN() 函數返回文本字段中值的長度。
SELECT name, LENGTH(url) as LengthOfURL
FROM Websites;
ROUND() 函數
ROUND() 函數用於把數值字段舍入爲指定的小數位數。
SELECT ROUND(column_name,decimals) FROM table_name;
decimals 必需。規定要返回的小數位數。
ROUND(X,D): 返回參數X的四捨五入的有 D 位小數的一個數字。如果D爲0,結果將沒有小數點或小數部分。
mysql> select ROUND(1.298, 1); -> 1.3 mysql> select ROUND(1.298, 0); -> 1
FORMAT() 函數
FORMAT() 函數用於對字段的顯示進行格式化。
SELECT FORMAT(column_name,format) FROM table_name;
column_name 必需,要格式化的字段。
format 必需,規定格式。
下面的 SQL 語句從 “Websites” 表中選取 name, url 以及格式化爲 YYYY-MM-DD 的日期:
SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date
FROM Websites;
參考
快速查看