MySQL(MariaDB) 入門
MariaDB是MySQL的開源實現(xiàn)。
配置文件為/etc/my.cnf
SQL語句大小寫不敏感。
SQL使用單引號環(huán)繞文本值,數(shù)字則不使用符號環(huán)繞。
登錄
安裝后需要先啟動MySQL:
centos下: systemctl start mariadb
使用命令登錄MySQL:
mysql -u root -p
root初始無密碼可直接回車進入。如果需要給root添加密碼:
mysqladmin -u root password "new_password";
或修改/usr/bin/mysql_secure_installation
開機啟動可在rc.local中加入:/etc/init.d/mysqld start
用戶管理
新建其他用戶: create user ssuser@localhost identified by 'passwd';
授權: grant all on dbname.* to 'ssuser'@'localhost';
新建數(shù)據(jù)庫及數(shù)據(jù)表
新建數(shù)據(jù)庫: create database dbname;
如果要存儲中文: CREATE DATABASE
否則會亂碼。
查看有哪些數(shù)據(jù)庫: show database;
選擇數(shù)據(jù)庫: use dbname;
在數(shù)據(jù)庫中新建數(shù)據(jù)表: create table tablename (row1name type,row2name type,……);
新建數(shù)據(jù)表時需指定列名,列數(shù)據(jù)類型。
如:
create?table?students ????( ????????id?int?unsigned?not?null?auto_increment?primary?key, ????????name?char(8)?not?null, ????????sex?char(4)?not?null, ????????age?tinyint?unsigned?not?null, ????????tel?char(13)?null?default?"-" ????);
其中數(shù)據(jù)類型有:
整數(shù): tinyint、smallint、mediumint、int、bigint 浮點數(shù): float、double、real、decimal 日期和時間: date、time、datetime、timestamp、year 字符串類型 字符串: char、varchar 文本: tinytext、text、mediumtext、longtext 二進制(可用來存儲圖片、音樂等): tinyblob、blob、mediumblob、longblob
括號中的數(shù)字一般是指字符長度或數(shù)字最大位數(shù)。具體可見參考資料8。
查看已創(chuàng)建的數(shù)據(jù)表: show tables;
數(shù)據(jù)操作 向數(shù)據(jù)表中插入值
INSERT INTO 表名稱 VALUES (值1, 值2,....);
或者指定插入的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);
如:
insert?into?students?(name,?sex,?age)?values("孫麗華",?"女",?21); insert?into?students?values(NULL,?"王剛",?"男",?20,?"13811371377");
查詢數(shù)據(jù)
SELECT 列名稱 FROM 表名稱;
如果要查詢所有列:
select * from 表名稱;
有時會添加條件:
select 列名稱 from 表名稱 [查詢條件];
如:
select?*?from?students?where?sex="女"; select?*?from?students?where?age?>?21; select?*?from?students?where?name?like?"%王%"; select?*?from?students?where?id20;
如果需要查詢不重復的項可以添加distinct:
SELECT DISTINCT 列名稱 FROM 表名稱;
對表進行排序查詢
SELECT 列名 FROM 表名 ORDER BY 列名;
顯示對某個列名按升序排序。ORDER BY可以同時使用幾個,表示第一排序項,第二排序項。
如: SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber;
如果要降序排序的話可使用ORDER BY 列名 DESC
。如:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC;
如果要按數(shù)字升序排序可使用ORDER BY 列名 ASC
。如:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC;
where條件
where可限制條件。
where可使用以下操作符:
=??等于 <>?不等于(有些版本可用!=取代) >??大于 <??小于 >=?大于等于 <=?小于等于 BETWEEN?在某個范圍內(nèi) LIKE?搜索某種模式(常用%通配符)
如:
SELECT?*?FROM?Persons?WHERE?FirstName='Bush'; SELECT?*?FROM?Persons?WHERE?Year>1965; SELECT?*?FROM?Persons?WHERE?City?LIKE?'%lon%'; SELECT?*?FROM?Persons?WHERE?City?NOT?LIKE?'%lon%';
通配符
SQL通配符支持以下幾種:
%??替代一個或多個字符 _??僅替代一個字符 [abcdefg]?字符列中的任何單一字符 [^abcdefg]?不在字符列中的任何單一字符(也可寫為[!abcdefg])
更新數(shù)據(jù)
更新: UPDATE 表名稱 SET 列名稱 = 新值 WHERE 更新條件
如: update students set tel=default where id=5;
刪除數(shù)據(jù)
delete from 表名稱 where 刪除條件;
如: delete from students where age<20;
數(shù)據(jù)表及數(shù)據(jù)庫修改 數(shù)據(jù)表的列修改
主要使用alter tabel來修改列。
添加列: alter table 表名 add 列名 列數(shù)據(jù)類型 [after 插入位置];
修改列名: alter table 表名 change 列名稱 列新名稱 新數(shù)據(jù)類型;
刪除列: alter table 表名 drop 列名稱;
數(shù)據(jù)表及數(shù)據(jù)庫的修改
重命名數(shù)據(jù)表: alter table 表名 rename 新表名;
刪除表: drop table 表名;
刪除數(shù)據(jù)庫: drop database 數(shù)據(jù)庫名;
sql腳本
對于較長的sql語句可以使用腳本的方式保存及運行。將sql語句保存到擴展名為sql的文件中,使用以下命令導入:
mysql -D samp_db -u root -p < createtable.sql
參考資料:
1.《SQL 教程》http://www.runoob.com/sql/sql-tutorial.html
?2.《SQL 教程》http://www.w3school.com.cn/sql/index.asp
?3.《MySQL 教程》http://www.runoob.com/mysql/mysql-tutorial.html
?4.《21分鐘 MySQL 入門教程》http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html
?5.《MySQL 用戶權限詳細匯總》http://blog.csdn.net/mchdba/article/details/45934981#t0
?6.《MySQL 用戶管理及權限管理》http://www.libuchao.com/2013/04/06/mysql-user-and-privilege
?7.《MySql用戶創(chuàng)建、授權以及刪除》http://seawavecau.iteye.com/blog/282345
?8.《mysql數(shù)據(jù)類型》http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
?9.《10分鐘學會理解和解決MySQL亂碼問題》http://cenalulu.github.io/mysql/mysql-mojibake/