MySQL 基礎(chǔ)

mariadb.org
Download
Download
MariaDB 5.5.59 Stable
mariadb-5.5.59-linux-x86_64.tar.gz  224.5 MB  下載即可(no,thanks)
centos7
yum源就是本機(jī)的春霍,不用設(shè)置
yum groupinstall mariadb mariadb-client 
rpm -ql mariadb-server
rpm -ql mariadb 客戶端
ss -ntl
systemctl start mariadb 
systemctl enable mariadb 
ss -ntlp 顯示程序
cat /usr/lib/systemd/system/mariadb.service  啟動(dòng)服務(wù)的相關(guān)配置
mysql直接進(jìn)入mysql界面
show databases;
use test; 相當(dāng)于cd命令
show tables;
use mysql  這個(gè)不用分號(hào)董栽;
show tables;
select * from user;
desc user;  列出表的結(jié)構(gòu)恩急,看的清楚
select host,user,password from user;
quit 退出數(shù)據(jù)庫(kù)
mysql
select user();  以什么身份登陸
不操作:mysql -uroot -h192.168.29.127  -u是以什么身份登陸棕诵,-h連接遠(yuǎn)程主機(jī)的IP地址
quit
su -fgq
mysql
select user();  
注意區(qū)別mysql的root和Linux的root不是同一個(gè),windows里數(shù)據(jù)庫(kù)的root名字叫sa
quit
命令行操作:mysql -uxxx 匿名登陸
select user();  
show databases;  
use mysql  權(quán)限有限
quit
exit
安全:刪除匿名瓤漏,口令登陸
rpm -ql mariadb-server | grep "secure"  
cat /usr/bin/mysql_secure_installation  腳本
命令行操作:/usr/bin/mysql_secure_installation 二進(jìn)制文件
y (=回車(chē)鍵)
y
設(shè)置密碼
再輸1次
y  刪除匿名登陸
n  root遠(yuǎn)程登陸不禁止
n  test數(shù)據(jù)庫(kù)不刪除
y  表上加載權(quán)限
mysql  登陸不上
mysql -uroot -p
輸入密碼
show databases;
select host,user,password from mysql.user;  
格式:數(shù)據(jù)庫(kù)名.表名
quit
iptables -vnL
systemctl disable firewalld
systemctl stop firewalld
iptables -vnL

which mysql
rpm -qf /usr/bin/mysql
yum groupinfo mariadb  服務(wù)器包組里有個(gè)包名:mariadb-server
yum groupinfo mariadb-client  客戶端包組里有個(gè)包名:mariadb
cat /etc/my.cnf
ll /var/log/mariadb/mariadb.log 
cat /var/log/mariadb/mariadb.log 
cat /etc/my.cnf
cat /var/run/mariadb/mariadb.pid 
ps aux
cat /var/run/mariadb/mariadb.pid 
pstree -p
which mysql
which mysqld_safe
cat /etc/my.cnf
cat /etc/my.cnf.d/
cd /etc/my.cnf.d/
ls
cat client.cnf 
cat mysql-clients.cnf 
cat server.cnf 


centos7
cat /etc/passwd
cd /var/lib/mysql  數(shù)據(jù)庫(kù)的位置
cd mysql
打開(kāi)另一個(gè)終端
mysql -uroot -p
輸入密碼
create database testdb;  創(chuàng)建數(shù)據(jù)庫(kù)
cd /var/lib/mysql  看是否生成了數(shù)據(jù)庫(kù)testdb
rpm -ql mariadb-server  生成的文件
cat /var/log/mariadb/mariadb.log  生成的日志

centos6.9
yum info mysql
yum list mysql  顯示已經(jīng)安裝
準(zhǔn)備一個(gè)新的機(jī)器centos6版本的
rz上傳下載的文件包
getent passwd  看是否有mysql腾夯,沒(méi)有需要?jiǎng)?chuàng)建用戶mysql
useradd -r -d /app/data -s /sbin/nologin -u 36 mysql
ll /app/data/ -d
chown mysql.mysql /app/data/  文件的權(quán)限更改
tar xvf mariadb-5.5.59-linux-x86_64.tar.gz -C /usr/local/  指定文件路徑
cd /usr/local/ ;ll
ln -s mariadb-5.5.59-linux-x86_64/ mysql  把mariadb-...的文件夾名稱改為mysql或者軟連接也可以
ll mysql/  
chgrp -R mysql mysql/  更改權(quán)限mysql屬組
cat /etc/my.cnf  其中的datadir路徑不是我們?cè)O(shè)置的/app/data/,所以自己需要重新設(shè)置蔬充。
cd mysql/support-files/;ls 里面的配置文件根據(jù)自己的需要來(lái)復(fù)制蝶俱,生產(chǎn)環(huán)境用大的配置文件,英文字母的意思來(lái)判斷即可
mkdir /etc/mysql
cp my-huge.cnf /etc/mysql/my.cnf
ll my-huge.cnf  /etc/mysql/my.cnf
vim /etc/mysql/my.cnf
[mysqld]下面添加信息
datadir = /app/data
innodb_file_per_table = on  創(chuàng)建的每個(gè)表都是獨(dú)立的數(shù)據(jù)庫(kù)
skip_name_resolve = on  禁止主機(jī)名解析饥漫,速度快
創(chuàng)建數(shù)據(jù)庫(kù)
cd /usr/local/mysql;ls
scripts/mysql_install_db --datadir=/app/data --user=mysql
ll /app/data/  文件生成
cat support-files/mysql.server  是一個(gè)服務(wù)腳本
cp support-files/mysql.server /etc/init.d/mysqld
ll /etc/init.d/mysqld  看是否有執(zhí)行權(quán)限榨呆,有即可
chkconfig --list mysqld  報(bào)錯(cuò)
chkconfig --add mysqld
chkconfig mysqld on
chkconfig --list mysql  出現(xiàn)
touch /var/log/mysqld.log
chown mysql /var/log/mysqld.log
ll /var/log/mysqld.log
service mysqld start  啟動(dòng)成功
ss -ntl  有3306這個(gè)端口
cd bin/;ls  
vim /etc/profile.d/mysql.sh  把mysql放到path變量里
export PATH=/usr/local/mysql/bin:$PATH
. /etc/profile.d/mysql.sh
mysql
show databases;
create database fgqdb;
select user();
select host,user,password from mysql.user;
quit
pwd;ls;有mysql_secure_installation
mysql_secure_installation
回車(chē)(=y)
y
密碼
再次輸入密碼
y
n
n
回車(chē)
mysql  連接不上
mysql -uroot -p
輸入密碼
quit
防火墻
iptables -vnL
iptables -F
cat /etc/my.cnf  里面的socket文件路徑
socket = /var/lib/mysql/mysql.sock
cat /etc/mysql/my.cnf  里面的socket文件路徑,后面覆蓋前面的路徑庸队,本機(jī)通信
socket = /tmp/mysql.sock
ll /tmp/mysql.sock
centos6-3
mysql連接上积蜻;
創(chuàng)建賬號(hào)
create user 'fgq'@'192.168.%.%' identified by '123456';  用戶名@網(wǎng)段identified by密碼
create user 'testuser'@'%' identified by '123456';  任何網(wǎng)段的都可以連接
create user 'testuser'@'%';
drop user 'feng'@'192.168.%.%';
更改口令
set password for 'fgq'@'192.168.%.%' = password('1234567');   用戶名@網(wǎng)段 = password('密碼')
drop 
授權(quán)
GRANT priv_type,... ON db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION]; 
priv_type: ALL [PRIVILEGES] 
db_name.tb_name:
*.*: 所有庫(kù)的所表 
db_name.*: 指定庫(kù)的所有表 
db_name.tb_name: 指定庫(kù)的指定表 
db_name.routine_name:指定庫(kù)的存儲(chǔ)過(guò)程和函數(shù) 
grant select on fgqdb.* to 'testuser'@'192.168.%.%' identified by '123456';  
用戶不存在就會(huì)立刻創(chuàng)建并授予權(quán)限,若存在彻消,則僅僅授予權(quán)限浅侨;
grant delete on fgqdb.s2 to 'testuser'@'192.168.%.%' identified by '123456';
grant all  on fgqdb.* to 'testuser'@'192.168.%.%' identified by '123456';
可以創(chuàng)建表,刪除表证膨,不能創(chuàng)建數(shù)據(jù)庫(kù),原因是授權(quán)時(shí)的限制
取消權(quán)限
REVOKE priv_type, ... ON db_name.tb_name FROM 'user'@'host'
revoke delete on fgqdb.* from 'testuser'@'192.168.%.%';
show grants for 'feng'@'192.168.%.%';
show grants for 'feng'@'192.168.%.%'\G;
show grants for current_user();
show grants for current_user()\G;

centos7上連接centos6-3的mysql
mysql -ufgq -h192.168.29.132 -p  可以連接上鼓黔,但是權(quán)限限制
show databases;  只能顯示很少的數(shù)據(jù)庫(kù)
mysql -utestuser -h192.168.29.132 -p
use fgqdb;
select * from s1;
delete from s2;  可以刪除
delete from s1;  不能刪除央勒,沒(méi)有權(quán)限
quit
msyql  再次登陸后
delete from s1; 可以刪除
create table s3 (id int unsigned primary key,name varchar(20),age tinyint unsigned,gender enum('m','f'));
drop table s2;  
drop  刪除整個(gè)表不见;
delete  刪除表中的記錄,表結(jié)構(gòu)還在崔步;

對(duì)于不能夠或不能及時(shí)重讀授權(quán)表的命令稳吮,可手動(dòng)讓MariaDB的服務(wù)進(jìn) 程重讀授權(quán)表:
mysql> flush privileges;

centos6-3
mysql -uroot -p  輸入密碼,連接數(shù)據(jù)庫(kù)
help或者\(yùn)h  mysql的命令查看
status或者\(yùn)s  狀態(tài)查看
select version();  查看版本
select "haha",1+2;
select "haha" as name,1+2 as result;  只是顯示的時(shí)候更加好看點(diǎn)

SQL語(yǔ)句: 
DDL: Data Defination Language 數(shù)據(jù)定義語(yǔ)言——數(shù)據(jù)庫(kù)井濒,表灶似,索引
CREATE, DROP, ALTER 
DML: Data Manipulation Language 數(shù)據(jù)操作語(yǔ)言——針對(duì)表的
INSERT, DELETE, UPDATE  增刪改
DCL:Data Control Language  數(shù)據(jù)控制語(yǔ)言——數(shù)據(jù)庫(kù),表瑞你,用戶——授權(quán)限
GRANT, REVOKE  賦予酪惭,撤銷
DQL:Data Query Language 
SELECT
SQL標(biāo)準(zhǔn): 
/*注釋內(nèi)容*/   多行注釋 
-- 注釋內(nèi)容    單行注釋,注意有空格 
MySQL注釋:    #
create schema fengdb;  schema=database
show schemas;  =  show databases;
help
help create
help create database  查看用法
create table students (id int unsigned not null primary key,name varchar(20) not null,age tinyint unsigned );
注意int和unsigned要放在一起者甲,unsigned修飾前面的int春感;
primary key  就是非空的,所以不用加not null虏缸;
desc students;
create table bjtechan (id int unsigned not null primary key,name varchar(20) not null );
create table zztechan (id int unsigned not null primary key,name varchar(20) not null );
show tables;  進(jìn)入了fgqdb數(shù)據(jù)庫(kù)鲫懒,才這樣操作;
show tables from fgqdb;  未進(jìn)入fgqdb數(shù)據(jù)庫(kù)中
drop table zztechan;
help create table  查看創(chuàng)建表的命令
show table status like "students"\G  查看表的狀態(tài)
show indexes from fgqdb.students;  
show indexes from fgqdb.students\G;  進(jìn)入到fgqdb中刽辙,就不用加fgqdb了窥岩;
alter table students rename s1;  改表的名字
alter table s1 add phone varchar(11) after name;  在name后面增加字段phone
alter table s1 add gender enum("m","f");  增加字段gender,只能取值m或者f宰缤;
alter table s1 change id sid int unsigned not null;  改表中字段的名字:把id更改為sid颂翼,id原本就是primary key,所以此處此處更改不加即可撵溃;
alter table s1 add unique key(name);  name變?yōu)槲ㄒ绘I
show indexes from s1;
help create index
quit
cd /app/data;ls ;cd fgqdb/;ls

DML
into 可以省略
insert into s1 (sid,name,age) values (1,"flq",20);  如果只有這三個(gè)字段可以省略
insert into s1 values (1,"flq",20);  
insert into s1 (sid,name) values (3,"fyg");  不知道age疚鲤,缺少一個(gè)字段,要寫(xiě)具體缘挑;
insert into zztechan values (1,"huimian");
insert into zztechan values (2,"helaotiao");
select * from zztechan;
update zztechan set name="luomo" where id=3;
delete from zztechan where id=4;  刪除較慢集歇,一條條刪,有日志语淘;
truncate table fgqdb.bjtechan;  刪除數(shù)據(jù)诲宇,表結(jié)構(gòu)還在,快速刪除惶翻,清空表姑蓝;

select相當(dāng)于print打印
select * from zztechan order by name;  排序按照name
select * from zztechan order by name desc;  倒序
select id as 編號(hào),name as 名稱 from zztechan order by name;  as可以省略
select id 編號(hào),name 名稱 from zztechan order by name;

create table fztechan (id int unsigned not null primary key,name varchar(20));  此處的name可以為空
insert into fztechan (id,name) values (1,"shaobing");
insert into fztechan (id) values (3);
select * from fztechan where name is not null;  如果name在創(chuàng)建表的時(shí)候?yàn)榉强眨筒椴怀鰜?lái)的吕粗;
desc fztechan;  可以看見(jiàn)表的字段是否可以為空纺荧;
select * from fztechan where name is null;


create table s2 select * from s1;  根據(jù)s1表來(lái)創(chuàng)建s2表
快速創(chuàng)建表:
create table s3 select sid,name from s1;  選擇舊表中的一部分字段來(lái)創(chuàng)建新表
desc s3;
select * from s3;  
快速創(chuàng)建表:
insert into students select sid,name,age from s1;  
注意students表中的數(shù)據(jù)和s1表中的數(shù)據(jù)要互相對(duì)應(yīng),且類型相同才可以這樣操作宙暇;students表必須存在输枯;
select * from students where name like "%f%";  name中有f字母的記錄
select * from zztechan where id in (1,4,7);  id是1,4或者7的記錄占贫,如果沒(méi)有則不顯示桃熄;
select * from zztechan where id>=6 ;  id大于等于6
select * from zztechan where id>=2 and id<=6;  id大于等于2,小于等于6
select * from zztechan where id between 2  and 6;  與上面的一條相同
select * from zztechan where id != 2;  不等于2
select * from zztechan where id <> 2;  不等于2
select * from zztechan where name != "huimian";  name不是huimian的記錄
select * from zztechan where name != "";  name非空的記錄
insert into students values (4,"lf",20),(8,"zdg",50);
insert into students (id,name) values (6,"ftl"),(9,"ftx");

等值連接
select * from zztechan,bjtechan where zztechan.id=bjtechan.id; 
將兩張表的數(shù)據(jù)按指定字段進(jìn)行連接
select z.name as zztcname,b.name as bjtcname from zztechan as z,bjtechan as b where z.id=b.id;  

內(nèi)連接
select bj.name from bjtechan as bj,zztechan as zz where bj.name=zz.name;
select bj.name from bjtechan as bj inner join zztechan as zz on  bj.name=zz.name;  
內(nèi)連接型奥,上面兩個(gè)式子的結(jié)果相同瞳收;  逗號(hào)=inner join,where=on厢汹;
select zz.id,zz.name,bj.name from zztechan as zz inner join bjtechan as bj on zz.id=bj.id ;
select zz.id,zz.name,bj.name from zztechan as zz inner join bjtechan as bj on zz.id=bj.id and bj.id=3;
product表:id螟深,name;
price表:id坑匠,price血崭;
求name與price的對(duì)應(yīng)表;
select p.id,p.name,r.price from product as p inner join price as r on p.id=r.id and r.id=1;

外連接
left
select zz.id,zz.name,bj.name from zztechan as zz left outer join bjtechan as bj on zz.id=bj.id ;
select zz.id,zz.name,bj.name from zztechan as zz left outer join bjtechan as bj on zz.name=bj.name ;
right
select zz.id,zz.name,bj.name from zztechan as zz right outer join bjtechan as bj on zz.id=bj.id ;
select zz.id,zz.name,bj.name from zztechan as zz right outer join bjtechan as bj on zz.name=bj.name ;
縱向合并
select * from zztechan union select * from bjtechan;  

求平均年齡
select avg(age) from s1;
求年齡大于平均年齡的人
select name,age from s1 where age > (select avg(age) from s1);
老師年齡=學(xué)生年齡
select name,age from students where age in (select age from teachers);
學(xué)習(xí)課程為第1厘灼,2夹纫,4或者第7門(mén)課的同學(xué)的名字;
select s.name,scores.courseid from students as s left outer join scores on scores.stuid = s.stuid where scores.courseid in (1,2,4,7);


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末设凹,一起剝皮案震驚了整個(gè)濱河市舰讹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闪朱,老刑警劉巖月匣,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異奋姿,居然都是意外死亡锄开,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)称诗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)萍悴,“玉大人,你說(shuō)我怎么就攤上這事寓免⊙⒂眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵袜香,是天一觀的道長(zhǎng)撕予。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蜈首,這世上最難降的妖魔是什么实抡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任欠母,我火速辦了婚禮,結(jié)果婚禮上澜术,老公的妹妹穿的比我還像新娘艺蝴。我一直安慰自己,他們只是感情好鸟废,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著姑荷,像睡著了一般盒延。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鼠冕,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天添寺,我揣著相機(jī)與錄音,去河邊找鬼懈费。 笑死计露,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的憎乙。 我是一名探鬼主播票罐,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泞边!你這毒婦竟也來(lái)了该押?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阵谚,失蹤者是張志新(化名)和其女友劉穎蚕礼,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體梢什,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奠蹬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嗡午。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤躁。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖翼馆,靈堂內(nèi)的尸體忽然破棺而出割以,到底是詐尸還是另有隱情,我是刑警寧澤应媚,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布严沥,位于F島的核電站,受9級(jí)特大地震影響中姜,放射性物質(zhì)發(fā)生泄漏消玄。R本人自食惡果不足惜跟伏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翩瓜。 院中可真熱鬧受扳,春花似錦、人聲如沸兔跌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坟桅。三九已至华望,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仅乓,已是汗流浹背赖舟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夸楣,地道東北人宾抓。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像豫喧,于是被迫代替她去往敵國(guó)和親石洗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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