Mysql基礎01-語法

數據庫

數據的存儲:將數據放到表中,表再放到庫中。

一個數據庫中可以有多個表,每個表都有一個名字,用來標識自己。表名具有唯一性。

表由列組成,我們也稱爲字段。每個字段描述了它所含有的數據的意義表由列組成,我們也稱爲字段。每個字段描述了它所含有的數據的意義

表中的數據是按行存儲的,一行即爲一條記錄。

MySQL下載安裝略過

MySQL設置命令

net start MySQL服務名        【服務啓動

net stop MySQL服務名        【服務停止】

mysql -u root -p              【進入數據庫】

mysql -h 主機IP地址 -P 端口號 -u 用戶名 -p回車
Enter Password:密碼

除了-p與密碼之間不要空格外,其他的-h,-P,-u與後面的參數值之間可以有空格

exit;                                          【 退出】    

 mysqldump -h主機地址 -P端口號 -u用戶名 -p密碼 --database 數據名 > 文件路徑/文件名.sql  【單個數據庫備份】

source  sql腳本路徑名.sql                        【導入執行備份的sql腳本】

show create table 表名;                         【查看錶的引擎,字符集】

show table status\G                           【查看全部表的引擎,字符集】

show engines\G                             【列出數據庫支持的引擎】

alter table 表名 engine=引擎名;                      【修改表引擎】

show create database 數據庫名;                     【 查看字符集】

create database 表名 character set (gbk);                    【修改表字符集】

show character set;                             【查看字符集校隊】

DCL 數據控制
flush privileges;                               【刷新權限】
create user '用戶名' @'IP地址' identified by '密碼';              【 創建新用戶】
grant 權限1,... on 數據庫名.* to 用戶名 @ IP地址;                 【用戶授權】
[update,instert,delete...權限名]
revoke 權限1,... on 數據庫名.* from 用戶名 @IP地址;                   【撤銷權限】
所有的數據庫 就用*.* 所有的權限 就用all
show grants for 用戶名 @IP 地址                      【查看權限】
drop user 用戶名 @IP地址                         【刪除權限】
update mysql.user set password=password('新密碼') where user='root';      【 修改密碼】

數據類型

int(M),必須和unsigned zerofill一起使用纔有意義

浮點型系列:float,double

double(M,D):表示最長爲M位,其中小數點後D位

定點型系列:decimal

decimal(M,D):表示最長爲M位,其中小數點後D位

字符串類型:char,varchar(M),text

char如果沒有指定寬度,默認爲1個字符

varchar(M),必須指定寬度

其他類型:bit, xxBlob, 枚舉,集合等

運算符

1、算術運算符

加:+
減:-
乘:*
除:/   div(只保留整數部分)
模:%   mod

2、比較運算符

大於:>
小於:<
大於等於:>=
小於等於:>=
等於:=   不能用於null判斷
不等於:!= 或 <>
安全等於:<=> 可以用於null值判斷

3、邏輯運算符(建議用單詞,可讀性來說)

邏輯與:&& 或 and
邏輯或:|| 或 or
邏輯非:! 或 not
邏輯異或:^ 或 or

4、範圍

區間範圍:between  x  and  y
   not between x  and y
集合範圍:in (x,x,x)
   not  in(x,x,x)

5、模糊查詢(只針對字符串類型,日期類型)

like 'xxx'
如果想要表示0~n個字符,用%
如果想要表示確定的1個字符,用_

6、位運算符(很少使用)

左移:<<
右移:>>
按位與:&
按位或:|
按位異或:^

7、特殊的null值處理

#(1)判斷時
xx is null
xx is not null
xx <=> null

#(2)計算時
ifnull(xx,代替值) 當xx是null時,用代替值計算

字段修飾符

unsigned     (無符號)
zerofill         (使用0填充)
default         (默認值)
comment     (字段解釋說明)
not null              (非空)
null         (空)
unique         (唯一索引)
index                (普通索引)
primary key      (主鍵)
auto_increment     (自增)
as        (別名)

語法規範和要求

(1)mysql的sql語法不區分大小寫

MySQL的關鍵字和函數名等不區分大小寫,但是對於數據值是否區分大小寫,和字符集與校對規則有關。

ci(大小寫不敏感),cs(大小寫敏感),_bin(二元,即比較是基於字符編碼的值而與language無關,區分大小寫)

(2)命名時:儘量使用26個英文字母大小寫,數字0-9,下劃線,不要使用其他符號

(3)建議不要使用mysql的關鍵字等來作爲表名、字段名等,如果不小心使用,請在SQL語句中使用`(飄號)引起來

(4)數據庫和表名、字段名等對象名中間不要包含空格

(5)同一個mysql軟件中,數據庫不能同名,同一個庫中,表不能重名,同一個表中,字段不能重名

(6)標點符號:

必須成對

必須英文狀態下半角輸入方式

字符串和日期類型可以使用單引號'

列的別名可以使用雙引號""

如果列的別名沒有包含空格,可以省略雙引號,如果有空格雙引號不能省略。

(7)SQL腳本中如何加註釋

單行註釋:#註釋內容

單行註釋:--空格註釋內容 其中--後面的空格必須有

多行註釋:/* 註釋內容 */

DDL 數據定義

show databases;              【查看所有數據庫】
use (dataname);               【切換使用數據庫】
create database (dataname);      【創建數據庫】
create database 數據名 charset 'utf8'; 
drop database (dataname);        【刪除數據庫】

--------------------------------------------

show tables ;
show tables from 數據庫名;      【查看所有表格】
create table [數據名.]表名(
字段名1 數據類型 修飾符,
字段名2 數據類型 修飾符,
);                   【創建表格】
drop table [數據庫名.]表名稱;      【刪除表格】
describe [數據庫名.]表名稱;
desc [數據庫名.]表名稱;         【查看錶結構】
alter table 舊錶名 rename 新表名;
rename table 舊錶名 to 新表名;     【修改表名稱】

------------------------------------------------------

alter table 表名 add 字段名 字段類型 字段修飾;         【添加字段】
alter table 表名 add 字段名 字段類型 字段修飾 first;       【添加字段在首位】
alter table 表名 add 字段名 字段類型 字段修飾 after 字段名;    【添加新字段,並定位】
alter table 表名 drop 字段名;                 【刪除字段】
alter table 表名change 舊字段名 新字段名 字段類型 字段修飾;   【修改字段名】
alter table 表名 modify 字段名 字段類型 字段修飾;         【修改字段類型及修飾】
alter table 表名 modify 字段名 字段類型 字段修飾 first;        【修改字段類型設首位】
alter table 表名 modify 字段名 字段類型 字段修飾 after 字段名;   【修改字段類型並定位】

DML 數據操作

insert into 表名 values(值1,2,...)
insert into 表名 (字段名1,2...) values(值1,2,...);
insert into 表名 values(值列表1),(值列表2)...;
insert into 表名 (部分字段列表) values(值列表1),(值列表2)...;         【添加數據】
update 表名 set 被修改字段=值,...[多個,號隔開] where (id=1); [判斷條件id=1]    【修改數據】(如果沒有加where條件,表示修改所有行,這個字段的值)
delete from 表名 where id=1; [判斷條件id=1]                【刪除數據】(如果沒有where條件,表示刪除整張表的數據;)
truncate 表名;

truncate速度快、truncate無法回滾

--------------------------------------------------------

select * from [數據庫名.]表名;                 【查詢整張表所有數據】
select 字段列表 from [數據庫名.]表名;              【查詢部分列表】
select * from [數據庫名.]表名 [where 條件];
select 字段列表 from [數據庫名.]表名 [where 條件];

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章