MySQL(MariaDB) 入門(mén)
MySQL(MariaDB) 入門(mén)
MariaDB是MySQL的開(kāi)源實(shí)現(xiàn)。
配置文件為/etc/my.cnf
SQL語(yǔ)句大小寫(xiě)不敏感。
SQL使用單引號(hào)環(huán)繞文本值,數(shù)字則不使用符號(hào)環(huán)繞。
登錄
安裝后需要先啟動(dòng)MySQL:
centos下: systemctl start mariadb
使用命令登錄MySQL:
mysql -u root -p
root初始無(wú)密碼可直接回車進(jìn)入。如果需要給root添加密碼:
mysqladmin -u root password "new_password";
或修改/usr/bin/mysql_secure_installation
開(kāi)機(jī)啟動(dòng)可在rc.local中加入:/etc/init.d/mysqld start
用戶管理
新建其他用戶: create user ssuser@localhost identified by 'passwd';
授權(quán): grant all on dbname.* to 'ssuser'@'localhost';
新建數(shù)據(jù)庫(kù)及數(shù)據(jù)表
新建數(shù)據(jù)庫(kù): create database dbname;
如果要存儲(chǔ)中文: CREATE DATABASE
否則會(huì)亂碼。
查看有哪些數(shù)據(jù)庫(kù): show database;
選擇數(shù)據(jù)庫(kù): use dbname;
在數(shù)據(jù)庫(kù)中新建數(shù)據(jù)表: create table tablename (row1name type,row2name type,……);
新建數(shù)據(jù)表時(shí)需指定列名,列數(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 浮點(diǎn)數(shù): float、double、real、decimal 日期和時(shí)間: date、time、datetime、timestamp、year 字符串類型 字符串: char、varchar 文本: tinytext、text、mediumtext、longtext 二進(jìn)制(可用來(lái)存儲(chǔ)圖片、音樂(lè)等): tinyblob、blob、mediumblob、longblob
括號(hào)中的數(shù)字一般是指字符長(zhǎng)度或數(shù)字最大位數(shù)。具體可見(jiàn)參考資料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 表名稱;
有時(shí)會(huì)添加條件:
select 列名稱 from 表名稱 [查詢條件];
如:
select?*?from?students?where?sex="女"; select?*?from?students?where?age?>?21; select?*?from?students?where?name?like?"%王%"; select?*?from?students?where?id20;
如果需要查詢不重復(fù)的項(xiàng)可以添加distinct:
SELECT DISTINCT 列名稱 FROM 表名稱;
對(duì)表進(jìn)行排序查詢
SELECT 列名 FROM 表名 ORDER BY 列名;
顯示對(duì)某個(gè)列名按升序排序。ORDER BY可以同時(shí)使用幾個(gè),表示第一排序項(xiàng),第二排序項(xiàng)。
如: 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?在某個(gè)范圍內(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通配符支持以下幾種:
%??替代一個(gè)或多個(gè)字符 _??僅替代一個(gè)字符 [abcdefg]?字符列中的任何單一字符 [^abcdefg]?不在字符列中的任何單一字符(也可寫(xiě)為[!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ù)庫(kù)修改 數(shù)據(jù)表的列修改
主要使用alter tabel來(lái)修改列。
添加列: alter table 表名 add 列名 列數(shù)據(jù)類型 [after 插入位置];
修改列名: alter table 表名 change 列名稱 列新名稱 新數(shù)據(jù)類型;
刪除列: alter table 表名 drop 列名稱;
數(shù)據(jù)表及數(shù)據(jù)庫(kù)的修改
重命名數(shù)據(jù)表: alter table 表名 rename 新表名;
刪除表: drop table 表名;
刪除數(shù)據(jù)庫(kù): drop database 數(shù)據(jù)庫(kù)名;
sql腳本
對(duì)于較長(zhǎng)的sql語(yǔ)句可以使用腳本的方式保存及運(yùn)行。將sql語(yǔ)句保存到擴(kuò)展名為sql的文件中,使用以下命令導(dǎo)入:
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 入門(mén)教程》http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html
?5.《MySQL 用戶權(quán)限詳細(xì)匯總》http://blog.csdn.net/mchdba/article/details/45934981#t0
?6.《MySQL 用戶管理及權(quán)限管理》http://www.libuchao.com/2013/04/06/mysql-user-and-privilege
?7.《MySql用戶創(chuàng)建、授權(quán)以及刪除》http://seawavecau.iteye.com/blog/282345
?8.《mysql數(shù)據(jù)類型》http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
?9.《10分鐘學(xué)會(huì)理解和解決MySQL亂碼問(wèn)題》http://cenalulu.github.io/mysql/mysql-mojibake/