mysql
基本操作
啟動mysql服務
- /usr/local/MySQL/bin/mysql -u root -p
資料庫陳述句中不區分大小寫,不過關鍵字最好大寫,
單行注釋
- – 或#(–后加空格,#后不用加空格)
多行注釋
- /注釋/
陳述句分類
DDL(操作資料庫、表)
-
操作資料庫CRUD
-
C(Create):創建
- create database db(資料庫名);
- 檢測有無重復資料庫若沒有則創建:create database if not exists db(資料庫名);
- 指定字符集創建:create database db(資料庫名) character set gbk(字符集);
-
R(Retrieve):查詢
- 查詢所有資料庫的名稱:SHOW databases;
- 查看某個資料庫的字符集:show create database db(資料庫名稱);【查詢某個資料庫創建陳述句】
-
U(Update):修改
- 修改資料庫字符集:alter database db(資料庫名稱) character set utf8(字符集名稱);
-
D(Delete):洗掉
- drop database db(資料庫名稱);
- 如果存在則洗掉:drop database if exists db(資料庫名稱);
-
使用資料庫
- 查詢當前正咋使用的資料庫名稱:select database();
- 使用資料庫:use db(資料庫名稱);
-
-
操作表
-
C(Create):創建
- create table tab(表名)(
list1(列名) int(資料型別),
list2 int,
…
listn int
); - create table tab1(表名)like tab2(b表名);
- create table tab(表名)(
-
資料型別
-
int
- age int
-
double
- score double(5.2)[表示最大5位,小數點后保留2位]
-
date:日期,只包含年月日的日期,yyyy-MM-dd
-
datetime:日期,包含年月日時分秒,yyyy-MM-dd HH:mm:ss
-
timestamp:時間錯型別,包含年月日時分秒,yyyy-MM-dd HH:mm:ss
- 如果不給這個欄位賦值,或賦值為null,自動使用系統時間賦值,
-
varchar:字串
- name varchar(20):姓名最大20個字符
-
-
R(Retrieve):查詢
- 查詢某個資料庫中所有表的名稱:show tables;
- 查詢表結構:desc tab(表名);
-
U(Update):修改
-
修改表名
- alter table tab(表名) rename to tab2(新的表名);
-
修改表的字符集
- alter table tab(表名) character set utf8(字符集);
-
添加一列
- alter table tab(表名) add list(列名)int(資料型別);
-
修改列名稱 型別
- alter table tab(表名) change list1(列名) list2 (列名) int(資料型別);
- 只改型別:alter table tab(表名) modify list(列名) int;
-
洗掉列
- alter table tab(表名) drop list(列名) ;
-
-
D(Delete):洗掉
- drop table if exists tab(表名);
-
DML(增刪改表中的資料)
-
添加資料
- insert into tab(表名) (list1(列名),list2,list3,…listn) values (value1(值),value2,value3,…valuen)
- 如果表名后,不定義列名,則默認給所有列添加值:insert into tab(表名) values (value1(值),value2,value3,…valuen)
- 除了數字型別,其他型別需要使用引號(單雙都可)引起來
-
洗掉資料
- delete from tab(表名)[where 條件]
- 如果不加條件,會將表中資料全部洗掉(有多少條就會執行多少次操作,效率較低)
- 洗掉表,然后創建一個一樣的空表:truncate table tab(表名)(洗掉全表資料操作,效率更高)
-
修改資料
- update tab(表名) set list1(列名) = value1(值名),list2 = value2,…listn = valuen[where 條件];
- 如果不加條件,會將表中記錄全部修改
DQL(查詢表中的資料)
-
查詢表中的記錄
-
select field(欄位串列) from tab(表名串列)where(條件串列) group by field(分組欄位) having cond(分組之后的條件) order by sort (排序) limit page(分頁)
-
select field(欄位串列)
-
from tab(表名串列)
-
where(條件串列)
-
運算子
-
、<、<=、>=、=、<>
- <>在 SQL 中表示不等于,在 mysql 中也可以使用!= 沒有==
-
BETWEEN…AND
- 在一個范圍之內,如:between 100 and 200 相當于條件在 100 到 200 之間,包頭又包尾
-
IN(集合)
- 集合表示多個值,使用逗號分隔
-
LIKE ‘張%’
- 占位符:_:單個任意字符
- 占位符:%:任意占位符
-
IS NULL
- 查詢某一列為 NULL 的值,注:不能寫=NULL
-
IS NOT NULL
- 查詢某一列不為 NULL 的值,注:不能寫!=NULL
-
-
邏輯運算子
-
and 或 &&
- 與,SQL 中建議使用前者,后者并不通用,
-
or 或 ||
- 或
-
not 或 !
- 非
-
-
-
group by field(分組欄位)
-
having cond(分組之后的條件)
-
order by sort (排序)
-
limit page(分頁)
-
-
如果不查詢表中所有的列,盡量避免使用 SELECT *,因為它會進行全表掃描,不能有效利用索引,增大了資料庫服務器的負擔,以及它與應用程式客戶端之間的網路IO開銷,
-
基礎查詢
-
多欄位查詢
- select field1(欄位名),field2,…fieldn from tab(表名)
-
去除重復
- select distinct field1(欄位名),field2,…fieldn from tab(表名)
-
計算列
- 一般可以使用四則運算計算一些列的值
- null參與的運算,結果均為null:ifnull(field(需要判斷是否為null的欄位名),value(如果該欄位為null的替換值))
-
別名
- field(欄位名或運算式)as name(別名)
- 也可省略as:field(欄位名或運算式)name(別名)
-
DCL(授權)
- grant授予
- revoke識訓
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/190520.html
標籤:其他
上一篇:MySQL常見問題總結
