9月23日 二進制安裝mariadb和數(shù)據(jù)庫的增刪改查操作

1麸恍、centos7中二進制安裝mariadb

1碧查、創(chuàng)建用戶和數(shù)據(jù)庫存放的目錄
useradd -r -m -d /app/data -s /sbin/nologin mysql
2窥摄、解壓文件到相關(guān)目錄下
 tar xvf mariadb-10.2.8-linux-x86_64.tar.gz -C /usr/local
 ln -s mariadb-10.2.8-linux-x86_64/ mysql  ---也可以不創(chuàng)建軟鏈接文件夭咬,但要把mariadb-10.2.8-linux-x86_64/這個目錄的名字改為mysql恭取,這是二進制安裝的時候必須要求的盹牧,目錄名字必須為mysql
3钞瀑、創(chuàng)建配置文件
cp /usr/local/mysql/support-files/my-huge.cnf /etc/mysql/my.cnf
vim /etc/mysql/my.cnf  在這個配置文件中增加三行
datadir = /app/data    ---指定存放數(shù)據(jù)庫的目錄
innodb_file_per_table = on  ---表示每個數(shù)據(jù)庫中的每個表都有一個單獨的文件保存沈撞,便于管理
skip_name_resolve = on   ---禁止解析主機名
注意等號前后要有空格
4、創(chuàng)建數(shù)據(jù)庫文件
yum install libaio-0.3.109-13.el7.x86_64
安裝這個包會生成/usr/lib64/libaio.so.1這個庫文件雕什,沒有這個庫文件無法執(zhí)行下面的腳本
cd /usr/local/mysql   ---注意一定要進入到這個目錄下去執(zhí)行下面的腳本
./scripts/mysql_install_db --datadir=/app/data --user=mysql
5缠俺、創(chuàng)建日志文件
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown mysql /var/log/mariadb/mariadb.log
如果不創(chuàng)建這個日志文件服務(wù)起不來,會報錯
6贷岸、準備服務(wù)腳本并啟動
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld
service mysqld start
7壹士、修改PATH變量路徑開啟客戶端工具進行修改密碼等
vim /etc/profile.d/env.sh 
export PATH=/usr/local/mysql/bin:$PATH
myslq      ---不把變量寫到PATH里啟動的時候要進入到這個目錄下或者寫全路徑才能啟動客戶端工具

2、mysql客戶端工具

命令行交互式客戶端程序:mysql
mysql選項:

-uUSERNAME: 用戶名偿警;默認為root
-hHOST: 服務(wù)器主機; 默認為localhost
-pPASSWORD:用戶的密碼;建議使用-p,默認為空密碼
mysql用戶賬號由兩部分組成:
'USERNAME'@'HOST'
HOST用于限制此用戶可通過哪些遠程主機連接mysql服務(wù)
支持使用通配符:
% 匹配任意長度的任意字符
172.16.0.0/16 或172.16.%.%
_ 匹配任意單個字符

修改口令后登錄系統(tǒng):mysql –uroot –p躏救,這樣登錄的時候就會讓輸入密碼,也可以mysql –uroot –pmagedu直接在p后面寫上口令户敬,但這樣不安全落剪,查歷史都能看到密碼。

3尿庐、SQL語句分類

SQL語句:
DDL: Data Defination Language  ---數(shù)據(jù)定義語言
CREATE, DROP, ALTER   ---用于創(chuàng)建數(shù)據(jù)庫忠怖,創(chuàng)建表
DML: Data Manipulation Language  ---數(shù)據(jù)操作語言
INSERT, DELETE, UPDATE   ---可以在表中添加、刪除抄瑟、更新數(shù)據(jù)
DCL:Data Control Language   ---數(shù)據(jù)控制語言
GRANT, REVOKE     ---用于授權(quán)和取消授權(quán)
DQL:Data Query Language   ---數(shù)據(jù)查詢語言
SELECT   ---用于查詢表中的數(shù)據(jù)

4凡泣、SQL語言規(guī)范

在數(shù)據(jù)庫系統(tǒng)中,SQL語句不區(qū)分大小寫(建議用大寫)
但字符串常量區(qū)分大小寫
SQL語句可單行或多行書寫皮假,以“;”結(jié)尾
關(guān)鍵詞不能跨多行或簡寫
用空格和縮進來提高語句的可讀性
子句通常位于獨立行澎怒,便于編輯,提高可讀性
注釋:

SQL標準:
/*注釋內(nèi)容
注釋內(nèi)容
注釋內(nèi)容*/       ---多行注釋
-- 注釋內(nèi)容         ----單行注釋侠畔,注意有空格
MySQL注釋:
#

5毛萌、數(shù)據(jù)類型

1、整型
tinyint(m)1個字節(jié)范圍(-128~127)
smallint(m)2個字節(jié)范圍(-32768~32767)
mediumint(m)3個字節(jié)范圍(-8388608~8388607)
int(m)4個字節(jié)范圍(-2147483648~2147483647)
bigint(m)8個字節(jié)范圍(+-9.22*10的18次方)
取值范圍如果加了unsigned褪测,則最大值翻倍猴誊,如tinyintunsigned的取值范圍為(0~255)
int(m)里的m是表示SELECT查詢結(jié)果集中的顯示寬度潦刃,并不影響實際的取值范圍
2、浮點型(float和double)懈叹,近似值
float(m,d)單精度浮點型8位精度(4字節(jié)) m總個數(shù)乖杠,d小數(shù)位double(m,d)雙精度浮點型16位精度(8字節(jié)) m總個數(shù),d小數(shù)位
精度越高值越近似
設(shè)一個字段定義為float(6,3)澄成,如果插入一個數(shù)123.45678,實際數(shù)據(jù)庫里存的是123.457胧洒,但總個數(shù)還以實際為準,即6位
3墨状、定點數(shù)
在數(shù)據(jù)庫中存放的是精確值,存為十進制
decimal(m,d) 參數(shù)m<65 是總個數(shù)卫漫,d<30且d<m 是小數(shù)位
MySQL5.0和更高版本將數(shù)字打包保存到一個二進制字符串中(每4個字節(jié)存9個數(shù)字)。例如歉胶,decimal(18,9)小數(shù)點兩邊將各存儲9個數(shù)字汛兜,一共使用9個字節(jié):小數(shù)點前的數(shù)字用4個字節(jié),小數(shù)點后的數(shù)字用4個字節(jié)通今,小數(shù)點本身占1個字節(jié)
浮點類型在存儲同樣范圍的值時粥谬,通常比decimal使用更少的空間。float使用4個字節(jié)存儲辫塌。double占用8個字節(jié)
因為需要額外的空間和計算開銷漏策,所以應(yīng)該盡量只在對小數(shù)進行精確計算時才使用decimal——例如存儲財務(wù)數(shù)據(jù)。但在數(shù)據(jù)量比較大的時候臼氨,可以考慮使用bigint代替decimal
4掺喻、字符串(char,varchar,_text)
char(n)固定長度,最多255個字符
varchar(n)可變長度储矩,最多65535個字符
tinytext可變長度感耙,最多255個字符
text可變長度,最多65535個字符
mediumtext 可變長度持隧,最多2的24次方-1個字符
longtext可變長度即硼,最多2的32次方-1個字符
BINARY(M) 固定長度,可存二進制或字符屡拨,允許長度為0-M字節(jié)只酥,
VARBINARY(M) 可變長度,可存二進制或字符呀狼,允許長度為0-M字節(jié)
內(nèi)建類型:ENUM枚舉, SET集合
char和varchar的區(qū)別
1.char(n) 若存入字符數(shù)小于n裂允,則以空格補于其后,查詢之時再將空格去掉哥艇。所以char類型存儲的字符串末尾不能有空格绝编,varchar不限于此。
2.char(n) 固定長度,char(4)不管是存入幾個字符十饥,都將占用4個字節(jié)怎棱,varchar是存入的實際字符數(shù)+1個字節(jié),所以varchar(4),存入3個字符將占用4個字節(jié)绷跑。
3.char類型的字符串檢索速度要比varchar類型的快,但varchar節(jié)省空間
varchar和text的區(qū)別
1.varchar可指定n凡资,text不能指定砸捏,內(nèi)部存儲varchar是存入的實際字符數(shù)+1個字節(jié)(n< 255),text是實際字符數(shù)+2個字節(jié)隙赁。
2.text類型不能有默認值
3.varchar可直接創(chuàng)建索引垦藏,text創(chuàng)建索引要指定前多少個字符。varchar查詢速度快于text
5.日期時間類型
date 日期 '2008-12-2'
time 時間 '12:25:36'
datetime 日期時間 '2008-12-2 22:06:44'
timestamp 自動存儲記錄修改時間
YEAR(2), YEAR(4):年份
若定義一個字段為timestamp伞访,這個字段里的時間數(shù)據(jù)會隨其他字段修改的時候自動刷新掂骏,這個數(shù)據(jù)類型的字段可以存放這條記錄最后被修改的時間

6、修飾符

所有類型:
NULL數(shù)據(jù)列可包含NULL值
NOT NULL數(shù)據(jù)列不允許包含NULL值
DEFAULT默認值
PRIMARY KEY主鍵
UNIQUE KEY 唯一鍵
CHARACTER SET name指定一個字符集
數(shù)值型
AUTO_INCREMENT自動遞增厚掷,適用于整數(shù)類型
UNSIGNED無符號

7弟灼、數(shù)據(jù)庫和表操作

create database zhangdb;   ---創(chuàng)建數(shù)據(jù)庫
drop database zhangdb;    ---刪除數(shù)據(jù)庫
show databases;    ---查看所有數(shù)據(jù)庫
create table student (id tinyint unsigned primary key,name varchar(20) not null,age tinyint unsigned,sex char(1) default "m");    ---創(chuàng)建表
create table student2 (id tinyint unsigned not null,name varchar(20) not null,age tinyint unsigned,sex char(1) default "m",primary key(id,name));    ---創(chuàng)建表并指定主鍵,這個主鍵有兩列組成冒黑,稱為復(fù)合主鍵
show tables;   --查看這個數(shù)據(jù)庫里有什么表
desc student;     ---查看表里都有哪些列
drop table student;     ---刪除表
alter table student add phone char(11) after name;  ---在表中增加一個字段 田绑,用first在某一列前插入
alter table student drop beizhu;    ---刪除表中某一列
show table status like 'student'\G;   --查看表的狀態(tài)
create index ageindex on student(age);    ---創(chuàng)建索引
show indexes from student;   ---查看索引
show indexes from student \G;  ---也可以這樣查看,會把列分成很多行顯示抡爹,而不是一行掩驱,如果列比較多,屏幕顯示不下冬竟,可以用這種方法
mysql> show indexes from student\G;
*************************** 1. row ***************************
       Table: student
  Non_unique: 0
    Key_name: PRIMARY   ---索引名欧穴,某一列設(shè)置為主鍵后會自動添加一個索引,并且索引名和主鍵名相同泵殴。唯一鍵也是一樣
Seq_in_index: 1
 Column_name: id    ---列名
   Collation: A
 Cardinality: 4
    Sub_part: NULL
      Packed: NULL
        Null: 
  Index_type: BTREE
     Comment: 
1 row in set (0.00 sec)

ERROR: 
No query specified
drop index ageindex on student;    ----刪除索引
修改表的一些示例
ALTER TABLE students RENAME s1;   ---修改表名
ALTER TABLE s1 MODIFY phone int;   ---修改表的數(shù)據(jù)類型
ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);  修改字段名phone為 mobile
ALTER TABLE s1 DROP COLUMN mobile;   ---刪除某一列涮帘,column可以不寫
ALTER TABLE student ADD UNIQUE KEY(name);  ---添加唯一鍵
ALTER TABLE student ADD INDEX(age);  ---添加索引
Help ALTER TABLE 查看幫助

總結(jié):數(shù)據(jù)庫和表的操作,用的是數(shù)據(jù)的定義語言create袋狞、drop焚辅、alter,添加或者創(chuàng)建主鍵和唯一鍵時會自動添加索引苟鸯。

8同蜻、對表里的數(shù)據(jù)的操作

insert into student (id,name,age,sex,phone)values(1,'zhang',31,'m',136);  ---給表中添加數(shù)據(jù),注意列的值如果為字母要用單引號引起來早处,否則識別不了湾蔓,數(shù)字可以不引
insert into student (id,name,age)values(2,'li',23);   ---可以挑選著進行添加數(shù)據(jù),不添加數(shù)據(jù)的列在可以為空值的前提下
select * from student;  ---查看表中的所有列
insert into student values(3,'wang',012,30,'m'),(4,'zhao',010,32,'m');   ---可以賦值多行砌梆,中間用逗號隔開
create table emp select * from student;   ---相當于復(fù)制整個表默责,復(fù)制后兩張表的結(jié)構(gòu)和數(shù)據(jù)都相同
delete from emp;   ---清空表中的數(shù)據(jù)贬循,記錄日志
truncate table emp;   ---清空表中的數(shù)據(jù),但不記錄日志桃序,速度快
 insert into emp select * from student;   ---復(fù)制表中的數(shù)據(jù)杖虾,要求兩張表的結(jié)構(gòu)要相同
update emp set age=50 where id=3;   ---修改表中的數(shù)據(jù)
update emp set age=19,sex='s' where id=4;
delete from emp where id=4;    ---刪除中的數(shù)據(jù)

總結(jié):用的是數(shù)據(jù)的操作語言,insert媒熊、delete奇适、update。

9芦鳍、查看表

DQL:SELECT數(shù)據(jù)的查詢語言
SELECT col1,col2,... FROM tbl_name[WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];
Limit m,n跳過m個嚷往,要n個
字段表示法:
*: 所有字段
as:字段別名,col1 AS alias1
WHERE clause:
操作符:
>, <, >=, <=, ==, !=
BETWEEN ... AND ...
LIKE:
%:任意長度的任意字符
_:任意單個字符柠衅;
RLIKE:正則表達式模式匹配
IS NULL 皮仁,IS NOT NULL
IN (val1,val2,…)
條件邏輯操作:
and,or菲宴,not

示例

select id as 員工編號,name as 姓名 from student;  ---以別名的形式顯示這兩列
select * from student where age between 18 and 20;
select * from student where age>=18 and age<=20;
顯示年齡在18-20歲之間的
select * from student where age between 18 and 30 order by age;   ---顯示18-30歲之間并且按年齡排序
select * from student where age between 18 and 30 order by age desc;    ---按年齡倒序排序
select * from student where age between 18 and 30 order by age desc limit 1,2;    ---年齡倒序排序跳過1個顯示2個
select * from student where name like "l%";    ---表示以l打頭的贷祈,通配符寫法
select * from student where name rlike "^l.*";   ---正則表達式寫法
setect * from student where name like "l_" =select * from student where name rlike "^l.$";   --表示以l打頭后面跟一個字符
select * from student where phone is null;    ---顯示電話號碼為空的行
select * from student where name in ("zhang","wang");   ---顯示名字那一列為zhang和wang的行
select s.id,e.name from student as s,emp as e where s.id=e.id and s.name rlike '.*[no].*';   ---顯示兩張表的內(nèi)容

10、用戶賬號管理

用戶賬號:'user'@'host'
user: 用戶名
host: 允許用戶通過哪些主機遠程連接mysqld服務(wù)
IP喝峦、網(wǎng)絡(luò)地址付燥、主機名、通配符(%和_)
創(chuàng)建用戶:
CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];
查看當前用戶:
SELECT user();
查看用戶:
SELECT User,Host,Password FROM user
刪除用戶:DROP USER 'username'@'host';
示例:刪除默認的空用戶
DROP USER ''@'localhost';
更改口令:
SET PASSWORD FOR 'user'@'host' = PASSWORD('password');
注意:上面修改表的命令不會馬上生效愈犹,需執(zhí)行FLUSH PRIVILEGES生效
示例

create user 'tom'@'172.18.%.%' identified by 'magedu';  
創(chuàng)建一個用戶賬號并設(shè)置密碼键科,允許遠程的172.18網(wǎng)段的主機,以用戶名tom連接到我的mysql服務(wù)器漩怎,注意mysql里的用戶名和系統(tǒng)里的用戶名沒有關(guān)系勋颖,也就是說tom這個用戶名在系統(tǒng)里可以沒有這個名字,這個是數(shù)據(jù)庫用的用戶名勋锤。
mysql -utom -pmagedu -h172.18.21.107   
drop user 'nihao'@'172.18.21.106';   ---刪除用戶名
set password for 'tom'@'172.18.%.%'=password('centos');  ---修改密碼

11饭玲、授權(quán)

grant select,insert on zhangdb.* to 'tom'@'172.18.%.%';
授權(quán)tom用戶只能查看和修改表
grant all on zhangdb.* to 'tom'@172.18.%.%;
授權(quán)tom用戶所有的權(quán)限
*.*: 所有庫的所表
db_name.*: 指定庫的所有表
db_name.tb_name: 指定庫的指定表
db_name.routine_name:指定庫的存儲過程和函數(shù)
revoke insert on zhangdb.* from 'tom'@'172.18.%.%';   --收回授權(quán)
grant all on zhangdb.* to 'wang'@'172.18.21.106' identified by "magedu";    ----授權(quán)的同時創(chuàng)建賬號
show grants for wang@'172.18.21.106';   ---查看用戶獲得的授權(quán)
grant update(name) on zhangdb.students to test@'172.18.%.%' identified by 'centos';   ---只授權(quán)修改某個字段
Help SHOW GRANTS   ---查看幫助。怎么查用戶的獲得的授權(quán)
對于不能夠或不能及時重讀授權(quán)表的命令叁执,可手動讓MariaDB的服務(wù)進程重讀授權(quán)表:mysql> FLUSH PRIVILEGES
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茄厘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谈宛,更是在濱河造成了極大的恐慌次哈,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吆录,死亡現(xiàn)場離奇詭異窑滞,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門哀卫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巨坊,“玉大人,你說我怎么就攤上這事此改≈耗欤” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵共啃,是天一觀的道長鼓寺。 經(jīng)常有香客問我,道長勋磕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任敢靡,我火速辦了婚禮挂滓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啸胧。我一直安慰自己赶站,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布纺念。 她就那樣靜靜地躺著贝椿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陷谱。 梳的紋絲不亂的頭發(fā)上烙博,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音烟逊,去河邊找鬼渣窜。 笑死,一個胖子當著我的面吹牛宪躯,可吹牛的內(nèi)容都是我干的乔宿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼访雪,長吁一口氣:“原來是場噩夢啊……” “哼详瑞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起臣缀,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤坝橡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后精置,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驳庭,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了饲常。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹲堂。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柒竞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朽基,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布稼虎,位于F島的核電站,受9級特大地震影響招刨,放射性物質(zhì)發(fā)生泄漏霎俩。R本人自食惡果不足惜沉眶,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谎倔。 院中可真熱鬧柳击,春花似錦、人聲如沸片习。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藕咏。三九已至,卻和暖如春侈离,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铺坞。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工洲胖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留济榨,地道東北人绿映。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓腐晾,卻偏偏與公主長得像丐一,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子巨柒,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一柠衍、什么是數(shù)據(jù)庫:(數(shù)據(jù)庫軟件) 1).什么是"數(shù)據(jù)庫": 從字面上理解就是一個"存儲數(shù)據(jù)的倉庫",它本身是一個軟...
    七點的太陽丶夕陽閱讀 586評論 0 2
  • 計算機誕生后牺勾,數(shù)據(jù)開始在計算機中存儲并計算阵漏,并設(shè)計出了數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫系統(tǒng)解決的問題:持久化存儲袱饭,優(yōu)化讀寫,保證...
    LittlePy閱讀 766評論 0 0
  • MySQL數(shù)據(jù)庫對象與應(yīng)用 2.1-MySQL數(shù)據(jù)類型 庫建立好之后基本不動,和我們接觸最頻繁的是表. 建表就是聲...
    極客圈閱讀 2,144評論 0 8
  • 為什么宿舍里的那個奇葩做什么事都不能小聲唯一小聲的就是上廁所,因為她基本晾虑,不沖水!不沖水帜篇!不沖水!
    啦啦啦_847d閱讀 148評論 0 0
  • 你的幸福是什么洪灯!
    醉夏閱讀 58評論 0 0