1. 程式人生 > >mysql 命令行操作命令

mysql 命令行操作命令

restart 技術分享 保密 abi tin get limit order by 管理系統

技術分享圖片

  • mysql 安裝
  • 連接
  • 導入數據
  • 導出數據
  • crud
  • 常用函數:count, avg, max, min, length

RDBMS 關系型數據庫管理系統
圖:

mysql 安裝

linux
服務端
sudo apt-get install mysql-server
sudo service mysql start 啟動數據庫服務器
ps ajx|grep mysql 查看服務器是否啟動
sudo service mysql stop
sudo service mysql restart
位置:/var/lib/mysql
mysql配置位置:/etc/mysql
mysql默認是存儲在/var/lib/mysql目錄下的
mysql> show variables like ‘%data%’;
命令行客戶端


sudo apt-get install mysql-client
啟動數據庫
mysql -u root -pmysql 密碼是mysql
命令行連接
mysql -uroot -p
回車後輸入密碼,當前設置的密碼為mysql
退出數據庫:
ctrl+d或
quit 或者 exit
windows
windows安裝mysql:
https://blog.csdn.net/zhouzezhou/article/details/52446608
註意管理環境變量添加後才可以用net start mysql80,且管理員身份執行 (mysql80是安裝時取的名字)
設置的是開機啟動
navicat連接不上:ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘yourpassword‘
註意:1.可以不用引號,2.可能需要 flush privileges

連接

遠程連接不上,常見處理:

  1. ping不通
  2. 該服務host僅localhost
  3. 有密碼等權限問題

    curd

關系型數據庫核心元素
數據行(記錄)
數據列(字段)
數據表(數據行的集合)
數據庫(數據表的集合) ==== 整個Excel 文件就好比一個數據庫,一個sheet 就 好比一個 數據表

常用數據類型如下:
整數:int,bit
小數:decimal
字符串:varchar,char
日期時間: date, time, datetime
枚舉類型(enum)
約束:
-- auto_increment表示自動增長
-- not null 表示不能為空
-- primary key 表示主鍵
-- default 默認值
登錄成功後,輸入如下命令查看效果
查看版本:select version();
顯示當前時間:select now();

  • 數據庫
    查看所有數據庫 show databases;
    使用數據庫 use 數據庫名;
    查看當前使用的數據庫 select database();
    創建數據庫 create database 數據庫名 charset=utf8; 等號可以不寫
    查看創建數據庫的語句 show create database xxx;
    刪除數據庫/表 drop database 數據庫名; drop table 表名
    刪除行(表結構還在) Delete from 表名 where xxx ; delete from 表名 或 delete * from 表名
    刪除表內的數據(表結構還在) truncate table 表名 = delete from 表名
    刪除數據的速度,一般來說: drop> truncate > delete
    使用場合:
    當你不再需要該表時, 用 drop;
    當你仍要保留該表,但要刪除所有記錄時, 用 truncate;
    當你要刪除部分記錄時(always with a where clause), 用 delete

  • 數據表
    查看當前數據庫中所有表 show tables;
    創建表 (字段 ) create table 數據表名字 (字段1 類型 約束,字段2 類型 約束...);
    查看表結構 desc 數據表的名字; 查看表的創建語句 show create table xxxx;
    查詢classes表中所有的數據 select * from xxxx;
    修改表-添加字段 alter table 表名 add 列名 類型; # 列名不可少
    修改表-修改字段:類型或約束 alter table 表名 modify 列名 類型及約束;
    修改表-修改字段:重命名 alter table 表名 change 原名 新名 類型及約束;
    修改表-刪除字段
    alter table 表名 drop 列名(字段);
    刪除表 drop table 表名
    數據 記錄 增刪改查 (curd) 代表創建(Create)、更新(Update)、讀取(Retrieve)和刪除(Delete)
    增加 記錄(插入數據,行) insert into xxxx values(0, "mike", 18, 1.45, "保密", 2); >>>>配合 desc 使用, 對應table的字段 全部都要寫 主鍵字段 可以用 0 null default 來占位

部分插入 insert into 表名(列1,...) values(值1,...);
insert into students(high) values(180.1);
多行插入
insert into students(name, high) values("李四", 180.1), ("王五", 1.22);
修改 update 表名 set 列1=值1,列2=值2... where 條件;
update students set age=18 where id=1;
刪除
物理刪除 delete from students where id=6;
邏輯刪除 alter table students add is_delete bit default 0;
update students set is_delete=1 where id=1;

查詢基本使用 select * from students;
一定條件的查詢 select * from students where id>=1 and id<=4; ## 要有空格
查詢指定列 select 列1,列2,... from 表名; (同樣可以加where)
字段的順序 列2 列1會對應 可以使用as為列或表指定別名
select name as 姓名, id as 學號 from students where id>=1 and id<=4;
select students.name, students.age from students; #
select s.name, s.age from students as s; ####

消除重復行
-- distinct 字段
-- 查詢students表中所有的不重復的性別
select gender from students;
select distinct gender from students;

條件查詢
比較運算符
select * from students where age>18;
select id,name,gender from students where age>18;
邏輯運算符
select * from students where age >=18 and age <= 28;
select * from students where age >=18 or height >= 180;
select * from students where not age<=18 and gender=2;
select * from students where not (age<=18 and gender=2);
模糊查詢
-- like
-- % 替換0個或者多個
-- _ 替換1個

select * from students where name like "小%";
select * from students where name like "%小%";
select * from students where name like "";
select * from students where name like "%
%";
範圍查詢
in (1, 3, 8)表示在一個非連續的範圍內
select name,age from students where age in (18, 34);
select name,age from students where age not in (18, 34);
between ... and ...表示在一個連續的範圍內
select name,age from students where age between 18 and 34;
select name,age from students where age not between 18 and 34;
失敗的select * from students where age not (between 18 and 34);
空判斷
select * from students where height is null;
判非空is not null
select * from students where height is not null;
排序
order by 字段 asc從小到大排列,即升序 ascend default;
desc從大到小排序,即降序 descend
select * from students where (age between 18 and 34) and gender=1 order by age;
order by 多個字段
select * from students where (age between 18 and 34) and gender=2 order by height desc, age asc;
聚合函數
count()統計列數,count(字段)一樣
select count(
) from students where gender=1;
select count() as "男性" from students where gender=1;
最大值 max 最小值 min 求和 sum 平均值 avg
select max(age) from students;
select sum(age)/count(
) from students;
select avg(age) from students;
四舍五入 round(123.23 , 1) 保留1位小數
select round(avg(age), 2) from students;
分組
select gender from students group by gender;
失敗select * from students group by gender;
select gender, count() from students group by gender;
select gender, count(
) from students where gender=1 or gender=2 group by gender;
--group_concat(...)
select gender, group_concat(name) from students group by gender;
select gender, group_concat(name, id) from students group by gender;
select gender, group_concat(name, "%", id) from students group by gender;
--having
select gender, group_concat(age) from students group by gender having avg(age) > 30;
select gender, group_concat(name, age) from students group by gender having avg(age) > 30;
select gender, group_concat(name) from students group by gender having count(*) > 2;

分頁
-- limit start, count 從第0行開始查 limit 3 ; >>>limit 0, 3 ;
select * from students limit 0, 3;
select * from students limit 4, 2;
select * from students where gender=2 order by height desc limit 0, 2;
連接查詢
-- inner join ... on
-- select ... from 表A inner join 表B;
select * from students inner join classes on students.cls_id=classes.id;
select * from students inner join classes on students.cls_id=classes.id;
select s.name, c.name from students as s inner join classes as c on s.cls_id=c.id;
select s., c.name from students as s inner join classes as c on s.cls_id=c.id;
select c.name, s.
from students as s inner join classes as c on s.cls_id=c.id order by c.id, s.id;
select * from students left join classes on students.cls_id=classes.id;
-- 查詢沒有對應班級信息的學生
select * from students left join classes on students.cls_id=classes.id where/having classes.id is null;
自關聯
select * from areas where pid is null;
select count() from areas where pid is null;
select p.atitle,c.atitle from areas as p inner join areas as c on c.pid=p.aid where p.atitle="廣東省";
子查詢
select
from students where age=(select max(age) from students);
-- 標量子查詢
select * from students where height>(select avg(height) from students);
-- 列級子查詢
select * from students where cls_id in (select id from classes);

事務四大特性(簡稱ACID)
事務是由一組SQL語句組成的邏輯處理單元, 銀行轉帳就是事務的一個典型例子。
原子性(Atomicity)
不被中斷
一致性(Consistency)
總數一定
隔離性(Isolation)
對方看不到
持久性(Durability)
數據被保存

圖形化界面客戶端navicat
進入解壓後的文件目錄 運行 ./start_navicat
外鍵對查詢沒影響, 插入數據時影響效率
ctrl + shift + t 終端開標簽

分組一般和聚合函數使用;
where having
order by
limit 最後

mysql 命令行操作命令