mysql命令速查手册
生活随笔
收集整理的這篇文章主要介紹了
mysql命令速查手册
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據準備
-- 創建數據庫 create database qianduan_test charset=utf8;-- 使用數據庫 use qianduan_test;-- students表 create table students(id int unsigned primary key auto_increment not null,name varchar(20) default '',age tinyint unsigned default 0,height decimal(5,2),gender enum('男','女','中性','保密') default '保密',cls_id int unsigned default 0,is_delete bit default 0 );-- classes表 create table classes (id int unsigned auto_increment primary key not null,name varchar(30) not null );-- 向students表中插入數據 insert into students values (0,'小明',18,180.00,2,1,0), (0,'小月月',18,180.00,2,2,1), (0,'彭于晏',29,185.00,1,1,0), (0,'劉德華',59,175.00,1,2,1), (0,'黃蓉',38,160.00,2,1,0), (0,'鳳姐',28,150.00,4,2,1), (0,'王祖賢',18,172.00,2,1,1), (0,'周杰倫',36,NULL,1,1,0), (0,'程坤',27,181.00,1,2,0), (0,'劉亦菲',25,166.00,2,2,0), (0,'金星',33,162.00,3,3,1), (0,'靜香',12,180.00,2,4,0), (0,'郭靖',12,170.00,1,4,0), (0,'周杰',34,176.00,2,5,0);-- 向classes表中插入數據 insert into classes values (0, "qianduan_01期"), (0, "qianduan_02期"); --01 mysql 數據庫的操作-- 鏈接數據庫mysql -uroot -p 回車-- 退出數據庫--quit/exit-- sql語句最后需要有分號;結尾-- 顯示數據庫版本 version-- select version();-- 查看當前使用的數據庫-- select database();-- 查看所有數據庫show databases;-- 創建數據庫-- create database 數據庫名 charset=utf8;create database qd22 charset=utf8;-- 查看創建數據庫的語句-- show create database 數據庫名show create database qd22;-- 使用數據庫-- use 數據庫的名字use qd22;-- 刪除數據庫-- drop database 數據庫名;drop database test;--02 數據表的操作-- 查看當前數據庫中所有表show tables;-- 創建表-- int unsigned 無符號整形-- auto_increment 表示自動增長跟主鍵在一起-- not null 表示不能為空-- primary key 表示主鍵-- default 默認值-- create table 數據表名字 (字段 類型 約束[, 字段 類型 約束]); 可選create table test(name varchar(30) not null, age int unsigned);-- 查看表結構(查看表的字段信息)-- desc 數據表的名字;desc test;-- 創建 classes 表(有id、name兩個字段)create table classes(id int unsigned primary key auto_increment, name varchar(30) not null);-- 創建 students 表(有id、name、age、high (decimal)、gender (enum)、cls_id這些字段)create table students(id int unsigned primary key auto_increment, name varchar(30) not null, age int unsigned, high decimal(3, 2), gender enum("男", "女", "保密", "中性") default "保密", cls_id int unsigned);-- 查看表的創建語句-- show create table 表名字;show create table students;-- 修改表-添加字段 mascot (吉祥物)-- alter table 表名 add 列名 類型; 給classes表添加mascot字段alter table classes add mascot varchar(50);-- 修改表-修改字段:不重命名版-- alter table 表名 modify 列名 類型及約束;alter table classes modify mascot varchar(100);-- 修改表-修改字段:重命名版-- alter table 表名 change 原名 新名 類型及約束;alter table classes change mascot jxw int unsigned;-- 修改表-刪除字段-- alter table 表名 drop 列名;alter table classes drop jxw;-- 刪除表-- drop table 表名;-- drop database 數據庫;drop table test;--03 增刪改查(curd)-- 增加 +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(20) | NO | | NULL | | +-------+------------------+------+-----+---------+----------------+-- 全列插入-- insert into 表名(字段1,字段2) values(值1,值2);-- 主鍵字段 可以用 0 null default 來占位-- 向classes表中插入 一個班級insert into classes(id, name) values(1, "qd22");insert into classes(id, name) values(3, "qd23");insert into classes(id, name) values(0, "qd24");insert into classes(name) values("qd25");-- 向students表插入 一個學生信息 +--------+-------------------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------------------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(20) | NO | | NULL | | | age | int(10) unsigned | YES | | NULL | | | high | decimal(3,2) | YES | | NULL | | | gender | enum('男','女','中性','保密') | YES | | 保密 | | | cls_id | int(11) | YES | | NULL | | +--------+-------------------------------------+------+-----+---------+----------------+-- 全部插入-- insert into 表名 values(值1,值2,值3...)insert into students values(1, "張三", 18, 1.83, '男', 1);-- 部分插入-- insert into 表名(列1,...) values(值1,...)insert into students(name) values("李四");insert into students(name,age) values("王五", 20);-- 多行插入-- insert into 表名(列1) values(值), (值);insert into students(name) values("趙六"),("李七");-- 修改-- update 表名 set 列1=值1,列2=值2... where 條件;-- 全部修改update students set age = 16;-- 按條件修改update students set age = 20 where id=3;update students set age = 18 where name="趙六";-- 按條件修改多個值-- update students set gender ="",age = "" where name="xxx";update students set age = 15, high=1.80 where id=2;-- 查詢基本使用-- 查詢所有列-- select * from 表名;-- 查詢students表中的所有數據信息select * from students;---定條件查詢 --查詢id為1的學生所有信息 select * from students where id = 1;-- 查詢指定列-- select 列1,列2,... from 表名;select name, age from students;select name, age from students where id = 1;-- 可以使用as為列或表指定別名-- select 字段[as 別名] , 字段[as 別名] from 數據表;select name as "姓名", age as "年齡" from students;select name as n, age as a from students;-- 字段的順序-- select age, name from students;select age, name from students;-- 刪除-- 物理刪除-- delete from 表名 where 條件delete from students where id = 4;-- 邏輯刪除-- 用一個字段來表示 這條信息是否已經不能再使用了-- 給students表添加一個 is_delete 字段 bit 類型--alter table 表名 add 字段 類型 default 默認值;alter table students add is_delete bit default 0;--update 表名 set is_delete=1 where id=;update students set is_delete=1 where id=1; --數據庫操作前的準備-- 查詢練習-- 查詢所有字段-- select * from 表名;select * from students;-- 查詢指定字段-- select 列1,列2,... from 表名;select name, age from students;-- 使用 as 給字段起別名-- select 字段 as 名字.... from 表名;select name as n, age as a from students;-- select 表名.字段 .... from 表名;select students.name,students.age from students;-- 可以通過 as 給表起別名-- select 別名.字段 .... from 表名 as 別名;select s.name, s.age from students as s;-- 消除重復行(查性別)-- distinct 字段 select gender from students;select distinct gender from students; -- 使用distinct關鍵字的做法清除重復的記錄select gender from students group by gender; -- 使用分組的做法清除重復的記錄-- 條件查詢-- 比較運算符-- select .... from 表名 where .....-- >-- 查詢年紀大于18歲的學生信息select * from students where age > 18;-- <-- 查詢年紀小于18歲的學生信息select * from students where age < 18;-- >=-- <=-- 查詢小于或者等于18歲的學生信息select * from students where age <= 18;-- =-- 查詢年齡為18歲的所有學生信息select * from students where age = 18;-- != 或者 <>-- 查詢年齡不為18歲的所有學生信息select * from students where age != 18;select * from students where age <> 18;-- 邏輯運算符-- and / between .. and ..-- 18和28之間的所有學生信息select * from students where age > 18 and age < 28; --不包含18 和28select * from students where age >= 18 and age <= 28; --包含18 和28select * from students where age between 18 and 28; --包含18 和28-- 18歲以上的女性的學生信息select * from students where age > 18 and gender="女";select * from students where age > 18 and gender=2; --枚舉的數據類型可以用數字來表示,數字從1開始-- or-- 18以上或者身高高過180(包含)以上的學生信息select * from students where age > 18 or height >= 180.00;-- not-- 不在 18歲以上的女性 這個范圍內的信息-- select * from students where not (age>18 and gender=2);select * from students where not (age > 18 and gender=2); -- 模糊查詢(where name like 要查詢的數據)-- like -- % 替換任意個-- _ 替換1個-- 查詢姓名中 以 "小" 開始的名字的學生信息select * from students where name like "小%";-- 查詢姓名中 有 "小" 所有的名字的學生信息select * from students where name like "%小%";-- 查詢有2個字的名字的學生信息select * from students where name like "__";-- 查詢有3個字的名字的學生信息select * from students where name like "___";-- 查詢至少有2個字的名字的學生信息select * from students where name like "__%";-- 范圍查詢-- in (1, 3, 8)表示在一個非連續的范圍內-- 查詢 年齡為18或34的姓名的學生信息-- select * from students where age = 18 or age = 34;select * from students where age in (18, 34); -- (18, 34)不是區間,是確切的值-- not in 不非連續的范圍之內-- 年齡不是 18或34歲的學生信息select * from students where age not in (18, 34);-- between ... and ...表示在一個連續的范圍內-- 查詢 年齡在18到34之間的學生信息select * from students where age between 18 and 34; -- not between ... and ...表示不在一個連續的范圍內-- 查詢 年齡不在18到34之間的學生信息select * from students where age not between 18 and 34;-- 空判斷-- 判空is null-- 查詢身高為空的學生信息select * from students where height is null;-- 判非空is not nullselect * from students where height is not null;-- 排序-- order by 字段-- asc-- asc從小到大排列,即升序-- desc-- desc從大到小排序,即降序-- 查詢年齡在18到34歲之間的男性,按照年齡從小到大到排序select * from students where gender=1 and age between 18 and 34 order by age asc;-- 查詢年齡在18到34歲之間的女性,身高從高到矮排序select * from students where gender=2 and age between 18 and 34 order by height desc;-- order by 多個字段-- 查詢年齡在18到34歲之間的女性,身高從高到矮排序, 如果身高相同的情況下按照年齡從小到大排序select * from students where gender=2 and age between 18 and 34 order by height desc, age asc;-- 如果年齡也相同那么按照id從大到小排序select * from students where gender=2 and age between 18 and 34 order by height desc, age asc, id desc;-- 聚合函數-- 總數-- count-- 查詢男性有多少人select count(*) from students where gender = 1;-- 最大值-- max-- 查詢最大的年齡select max(age) from students;-- 查詢女性的最高 身高select max(height) from students where gender = 2; -- 最小值-- minselect min(height) from students where gender = 2; -- 求和-- sum-- 計算所有人的年齡總和select sum(age) from students;-- 平均值-- avg-- 計算平均年齡select avg(age) from students;-- 計算平均年齡 sum(age)/count(*)select sum(age)/count(*) from students;-- 四舍五入 round(123.23 , 1) 保留1位小數-- 計算所有人的平均年齡,保留2位小數select round(avg(age), 2) from students;-- 計算男性的平均身高 保留2位小數select round(avg(height), 2) from students where gender = 1; -- 沒有算null這種情況 /4select round(sum(height)/count(*), 2) from students where gender = 1; -- 把null算進去了 /5# 聚合函數計算的時候不會把null計算進去-- 分組-- 分組的口訣-- select 分組的字段 from 表名 group by 分組字段;-- group by-- 按照性別分組,查詢所有的性別select gender from students group by gender;--# 每種、每類是分組的關鍵字眼, 以什么為分組,最好在展示的時候,把這個字段放在第一列-- 計算每種性別中的人數select gender, count(*) from students group by gender;-- group_concat(...)-- 查詢同種性別中的姓名group_concat(name)select gender, group_concat(name) from students group by gender;-- 查詢每組性別的平均年齡select gender, avg(age) from students group by gender;-- having(注意having和group by 連用 having后通常也要跟 聚合函數)-- 注意: 聚合函數如果做為條件出現,只能和having配合。不能和where配合使用。-- 查詢平均年齡超過30歲的性別,以及姓名select gender, avg(age), group_concat(name) from students group by gender having avg(age) > 30;-- 查詢每種性別中的人數多于2個的信息-- select gender, count(*) from students group by gender having count(*) > 2;select gender, count(*) from students group by gender having count(*) > 2;-- 分頁-- limit start, count-- limit 放在最后面(注意)-- 公式:limit (要顯示第幾頁-1) * 每頁分多少個, 每頁分多少個;-- 限制查詢出來的數據個數-- 查詢前5個數據select * from students limit 5;-- 每頁分2個,要顯示第1頁 (查詢前2個數據) select * from students limit 2;--通用寫法:select * from students limit 0, 2;-- 每頁分2個,要顯示第2頁select * from students limit 2, 2;-- 每頁分2個,要顯示第3頁select * from students limit 4, 2;-- 每頁分2個,要顯示第4頁select * from students limit 6, 2;-- 每頁分2個,顯示第6頁的信息, 按照年齡從小到大排序-- 先整體排序,再進行分頁!select * from students order by age asc limit 10, 2;-- select * from students where -- select 分組 from students group by 分組字段 having 條件查詢 -- select * from 表a inner join 表b on 連接的條件-- 連接查詢 (表與表之間的鏈接, 為了更好的查出有效數據)-- inner join ... on-- select ... from 表A inner join 表B;-- 查詢 有能夠對應班級的學生以及班級信息select * from studetns inner join classes on students.cls_id=classes.id;-- 按照要求顯示姓名、班級select students.name, classes.name 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.name as "姓名", c.name as "所在班級" from students as s inner join classes as c on s.cls_id=c.id;-- 查詢 有能夠對應班級的學生以及班級信息,顯示學生的所有信息 students.*,只顯示班級名稱 classes.name.select s.*, c.name from students as s inner join classes as c on s.cls_id = c.id;-- 在以上的查詢中,將班級名顯示在第1列select c.name,s.* 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.name;-- 當時同一個班級的時候,按照學生的id進行從小到大排序select c.name,s.* from students as s inner join classes as c on s.cls_id = c.id order by c.name, s.id asc;-- 子查詢 (一個查詢的結果作為另一個查詢的一部分, 會把前者的查詢稱為子查詢)-- 標量子查詢: 子查詢返回的結果是一個數據(一行一列)-- 列子查詢: 返回的結果是一列(一列多行)-- 行子查詢: 返回的結果是一行(一行多列)-- 查詢出高于平均身高的信息(height)select avg(height) from students;select * from students where height > (select avg(height) from students);-- 查詢學生的班級號能夠對應的 學生名字-- select * from students where cls_id in(1,2);-- select id from classes;select students.name from students where cls_id = 1 or cls_id = 2;select students.name from students where cls_id in (1, 2);select students.name from students where cls_id in (select id from classes);總結
以上是生活随笔為你收集整理的mysql命令速查手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五、深入理解Mybatis中的参数par
- 下一篇: 1+X web中级 Laravel学习笔