mysql默認端口號:3306
1.安裝mariadb數據庫
作本地mariadb的yum源,配置文件以下:文件下載源指向Mariadb的官網
[mariadb]
name=MariaDB
baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
網絡源的repo文件也不能夠移走
安裝:
# yum -y install MariaDB-server
2.啓動服務
# systemctl restart mysqld
3.修改配置文件:跳過密碼驗證
# vim /etc/my.cnf.d/server.cnf
添加 skip-grant-tables (跳過密碼驗證)
4.登陸數據庫,不須要密碼
# mysql -uroot
5.關於數據庫操做的簡單命令(命令尾巴必須加;號)
在linux界面下:
查看數據庫版本號 # mysqladmin --version
修改數據庫密碼: # mysqladmin -uroot -proot password aaaaaa
# mysqladmin -u root -p password 123
進入數據庫的界面:
# mysql -uroot -proot
給數據庫添加密碼爲123
# update user set password=password('123') where user 'root';
列示數據庫 # show databases;
查看數據庫狀態 # show create database 數據庫名;
建立數據庫(若是有特殊符號,要用` `引發來)
# create database 數據庫名;
使用指定數據庫 # use 數據庫名;
修改數據庫默認字符
# alter database 數據庫名 default character set=utf8;
查看當前用戶 # select user();
添加用戶 # create user aaa identified by bbb;
賦予權限: # grant all privileges on *.* to bbb@'%';
all:權限,全部權限,最高權限
第一個*:數據庫名字(能夠指定個別數據庫)
第二個*:數據庫裏的全部表(能夠指定個別表)
bbb:給那個用戶賦予權限
@:分隔符
%:指定登陸模式
權限有四種:
select:查詢
create:建立
update:更新
delete:刪除
all:所有權限,最高權限
登陸權限:
localhost:只能本地登陸(在數據庫的主機上登陸,在linux終端)
%:本地和第三方軟件均可以登陸
刷新權限 # flush privileges;
查看指定用戶權限 # show grants for '用戶名';
收回權限 # revoke all on *.* from 'aaa'@'%';
查看權限 # show grants
添加表 # insert into student (name,age,gid) values ('zl',12,6)
建立root遠程鏈接mysql # delete from mysql.user where user='';
刪除匿名用戶 # delete from mysql.user where user='';
查看用戶命令表 # select Host,user,password from user;
建立一個root用戶給最高權限設置密碼爲123
# grant all privileges on *.* to 'root'@'%' identified by '123';
若是root忘記密碼:
先在配置文件中添加跳過密碼驗證
重啓服務
進入mysql,設置密碼
update user set password=password('123') where user='root';
--顯示當前時間
select now();
--查看錶結構
desc table_name
--查看錶的規則
show create table table_name
--插入信息
insert into students values(0,'金星',18, 188.88, '中性', 0);
--查看錶中全部字段
select * from students;
--修改表-添加字段
--alter table 表名 add 列名 類型;
alter table students add birthday datetime;
-- 修改表-修改字段:不重命名版
-- alter table 表名 modify 列名 類型及約束;
alter table students modify birthday date;
-- 修改表-修改字段:重命名版
-- alter table 表名 change 原名 新名 類型及約束;
alter table students change birthday birth date default '2000-01-01';
-- 修改表-刪除字段
-- alter table 表名 drop 列名;
alter table students drop xxx;
-- 刪除表
-- drop table 表名;
drop table students;
--全列插入
--insert into 表名 values(..)
--主鍵字段 能夠用0 null default 來站位
insert into classes values (0, '大神班');
-- 向students表裏插入 一個學生信息
insert into students values (0, '鹿鼎記', 20, '女', 1, '1990-01-01')
insert into students values (null, '鹿鼎記', 20, '女', 1, '1990-01-01')
insert into students values (default, '鹿鼎記', 20, '女', 1, '1990-01-01')
--部分插入
insert into students(name, gender) values ('小喬', 2);
insert into students(name, gender) values ('大喬', 2),('貂蟬', 2);
--修改
--update 表名 set 列1=值1, 列2=值2... where 條件;
update students set
--刪除
-- 物理刪除
-- delete from 表名 where 條件
delete from students;
delete from students where id=17;
-- 邏輯刪除
-- 用一條字段來表示 這條信息是否已經不能在使用了
-- 給students表添加一個is_delete字段 bit 類型
alter table students add is_delete bit default 0;
update students set is_delete=1 where id=6;
alter table students add is_delete bit default 0;
--查詢基本使用(條件,排序,聚合函數,分組,分頁)
修改密碼:update user set password=password('root') where user='root';
--建立
--建立學生表
create table students (
id int unsigned not null auto_increment primary key,
name varchar(20) default '',
age tinyint unsigned default 0,
high decimal(5,2),
gender enum('男', '女', '中性', '保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
--建立班級表
create table classes(
id int unsigned auto_increment primary key not null,
name varchar(20) not null
);
--往students表裏插入數據
insert into students values
(0,'小明',18,180.00,2,1,0),
(0,'小月月',19,180.00,2,2,0),
(0,'彭于晏',28,185.00,1,1,0),
(0,'劉德華',58,175.00,1,2,0),
(0,'黃蓉',108,160.00,2,1,0),
(0,'鳳姐',44,150.00,4,2,1),
(0,'王祖賢',52,170.00,2,1,1),
(0,'周杰倫兒',34,null,1,1,0),
(0,'程坤',44,181.00,1,2,0),
(0,'和珅',55,166.00,2,2,0),
(0,'劉亦菲',29,162.00,3,3,0),
(0,'金星',45,180.00,2,4,0),
(0,'靜香',18,170.00,1,4,0),
(0,'郭靜',22,167.00,2,5,0),
(0,'周杰',33,178.00,1,1,0),
(0,'錢小豪',56,178.00,1,1,0),
(0,'錢小豪',38,175.00,1,1,0);
--向classes表裏插入數據
insert into classes values (0, '雲惟_01期'),(0, '雲惟_02期');
--查詢
-- 查詢全部列
--select * from 表名
select * from students;
--必定條件查詢
select * from students where name='周杰倫兒';
select * from students where id>3;
-- 查詢制定列
select name, gender from students;
-- 使用as給字段起別名
select name as 姓名, age as 年齡 from students;
-- 經過表名字查詢
select students.name, students.age from students;
-- 給表起別名查詢
select s.name, s.age from students as s;
--消除重複行
-- distinct
select distinct gender from students;
--條件查詢
--比較運算符
-- 查詢年紀大於18歲的信息
select * from students where age > 18;
select id, name, gender from students where age > 18;
--18歲到28歲之間(and)
select * from students where age>18 and age<28;
--在18歲以上或者身高180以上的人(or)
select * from students where age>18 or high>=180;
-- 模糊查詢
-- like
-- % 替代1個或者多個甚至是沒有
select * from students where name like '小%';
-- 查詢姓名中有‘小’的全部名字
select * from students where name like '%小%';
-- 查詢有兩個字的名字
select * from students where name like '__';
-- 查詢至少有2個字的名字
select * from students where name like '__%';
-- rlike 正則
-- 查詢以周開始的名字
select * from students where name rlike '^周.*';
select * from students where name rlike '^周.*兒$';
--範圍查詢
-- in (1,3,8)表示在一個非連續的範圍內
-- 查詢 年紀爲18,34的人
select * from students where age=18 or age=34;
select * from students where age=18 or age=34 or age=12;
select * from students where age in (12,18,34);
--查詢 年齡在17歲到34歲之間的信息
select * from students where age between 18 and 34;
--查詢 年紀不在18到34歲的信息
select * from students where age not between 18 and 34;
-- 空判斷
-- 判斷is null
-- 查詢身高爲空的信息
select * from students where high is null;
-- 判斷非空is not null
select * from students where high is not null;
-- 排序
-- order by 字段
-- asc從小到大排列,即升序
-- desc從大到小排序,即降序
-- 查詢年紀在18到34歲之間的男性,按照年紀從小到大
select * from students where age between 18 and 34 and gender=1;
select * from students where age between 18 and 34 and gender=1 order by age;
select * from students where age between 18 and 34 and gender=1 order by age asc;
select * from students where (age between 18 and 34) and gender=1 order by age desc;
-- 查詢年紀在18到34歲之間的女性,身高從高到矮
select * from students where (age between 18 and 34) and gender=2 order by high desc;
-- order by 多字段
-- 查詢年紀在18到34歲的女性,身高從高到矮排序,若是身高相同的狀況下按照年紀從小到大排序
select * from students where (age between 18 and 34) and gender=2 order by high desc, age desc;
-- 查詢年紀在18到34歲的女性,身高從高到矮排序,若是身高相同的狀況下按照年紀從小到大排序,若是年齡也相等那麼按照id從小到大排序;
select * from students where (age between 18 and 34) order by high desc, age,id;
-- 按照年紀從小到大、身高從高到矮的排序
select * from students order by age asc, high desc;
--聚合函數
-- 總數
-- count
-- 查詢男性有多少人
select * from students where gender=1;
select count(*) from students where gender=1;
select count(*) as '男性' from students where gender=1;
-- 最大值
-- max
-- 查詢最大的年紀
select age from students;
select max(age) from students;
-- 查詢女性的最高 身高
select gender,max(high) from students where gender=2;
-- 最小值
-- min
select min(age) from students;
-- 求和
-- sum
-- 計算全部人的年齡總和
select sum(age) from students;
-- 平均值
-- avg
-- 計算平均年紀
select avg(age) from students;
-- 計算平均年紀 sum(age)/count(*)
select sum(age)/count(*) from students;
-- 保留2位小數
select round(avg(age), 2) from students;
-- 分組
-- group by
-- 按照性別分組,查詢全部的性別
select gender from students group by gender;
-- 計算每組性別的人數
select gender, count(*) from students group by gender;
-- 計算男性人數
select gender, count(*) from students where gender=1 group by gender;
--把查出來的內容拼接成一個字符串concat
select concat(id,name,age) from students;
select concat(id,' ',name,' ',age) from students;
-- 查詢男性組中的姓名 group_concat
select gender, group_concat(name) from students where gender=1 group by gender;
select gender, group_concat(name,age) from students where gender=1 group by gender;
select gender, group_concat(name,age,id) from students where gender=1 group by gender;
select gender, group_concat(name,age," ",id) from students where gender=1 group by gender;
-- having
-- 查詢平均年紀超過30歲的性別,以及姓名 having avg(avg) > 30
select gender, group_concat(name), avg(age) from students group by gender having avg(age)>30;
-- 失敗操做:
select gender, group_concat(name), avg(age) from students where avg(age)>30 group by gender;
-- 查詢每種性別中的人數多於4個組的信息
select gender, group_concat(name) from students group by gender having count(*)>4;
-- 分頁
-- 顯示5頁
select * from students limit 2;
-- 分頁顯示,每頁顯示2條數據
select * from students limit 0, 2;
-- 按照身高從高到矮排序,查找出全部女性,而且分頁顯示,每頁顯示2條數據
select * from students where gender=2 order by high desc limit 0, 2;
-- 數據庫的備份與恢復
備份並非將數據庫的信息備份,而是將數據庫的sql語句備份,備份的時候在linux界面備份,還原的時候進入數據庫還原
備份一個數據庫:
# mysqldump -uroot -proot --databases 數據庫名 > 數據庫名.sql
備份全部數據庫:
# mysqldump -uroot -proot --all-databases > all_databases.sql
備份一個數據庫中的一個表:
# mysqldump -uroot -proot 數據庫名 表名 > 表名.sql
還原數據庫:
# source xxxx.sql