**一.數據庫的連接**
~~~
mysql -u -p -h
-u 用戶名
-p 密碼
-h host主機
~~~
* * * * *
**二.修改MySQL提示符**
1.連接客戶端時,通過參數指定
~~~
mysql -h localhost -u root --prompt 提示符
~~~
2.連接上客戶端后,通過`prompt`命令修改
~~~
prompt 提示符
~~~
######**MySQL提示符**
| 參數 | 描述 |
| --- | --- |
| \D | 完整的日期 |
| \d | 當前數據庫 |
| \h | 服務器名稱 |
| \u | 當前用戶 |
* * * * *
**三.庫級知識**
1 顯示數據庫: `show databases`;
2 選擇數據庫: `use dbname`;
3 創建數據庫: `create database dbname charset utf8`;
4 刪除數據庫: `drop database dbname`;
* * * * *
**四. 表級操作**
1 顯示庫下面的表: `show tables`;
2 查看表的結構: `desc tableName`;
3 查看表的創建過程: `show create table tableName`;
4 創建表:
~~~
create table tbName (
列名稱1 列類型 [列參數] [not null default ],
....列2...
....
列名稱N 列類型 [列參數] [not null default ]
)engine myisam/innodb charset utf8/gbk
~~~
例子:
~~~
create table user (
id int auto_increment,
name varchar(20) not null default '',
age tinyint unsigned not null default 0,
index id (id)
)engine=innodb charset=utf8;
~~~
>[info] 注:innodb是表引擎,也可以是myisam或其他,但最常用的是myisam和innodb,charset 常用的有utf8,gbk;
5 修改表
(1)修改表之增加列:
~~~
alter table tbName
add 列名稱1 列類型 [列參數] [not null default ]
~~~
>[info] 注:add之后的舊列名之后的語法和創建表時的列聲明一樣
(2)修改表之修改列
~~~
alter table tbName
change 舊列名 新列名 列類型 [列參數] [not null default ]
~~~
>[info] 注:舊列名之后的語法和創建表時的列聲明一樣
(3)修改表之減少列:
alter table tbName
drop 列名稱;
(4)修改表之增加主鍵
~~~
alter table tbName add primary key(主鍵所在列名);
~~~
例:
~~~
alter table goods add primary key(id)
~~~
該例是把主鍵建立在id列上
(5)修改表之刪除主鍵
~~~
alter table tbName drop primary key;
~~~
(6)修改表之增加索引
~~~
alter table tbName add [unique|fulltext] index 索引名(列名);
~~~
(7)修改表之刪除索引
~~~
alter table tbName drop index 索引名;
~~~
(8)清空表的數據
~~~
truncate tableName;
~~~
* * * * *
**五.列類型講解**
整型:
~~~
tinyint (0~255/-128~127) smallint (0~65535/-32768~32767) mediumint int bigint
參數解釋:
unsigned 無符號(不能為負) zerofill 0填充 M 填充后的寬度
舉例:tinyint unsigned;tinyint(6) zerofill;
~~~
數值型
~~~
浮點型:float double
格式:float(M,D) unsigned\zerofill;
~~~
字符型
~~~
char(m) 定長
varchar(m)變長
text
~~~
日期時間類型
~~~
year YYYY 范圍:1901~2155. 可輸入值2位和4位(如98,2012)
date YYYY-MM-DD 如:2010-03-14
time HH:MM:SS 如:19:26:32
datetime YYYY-MM-DD HH:MM:SS 如:2010-03-14 19:26:32
timestamp YYYY-MM-DD HH:MM:SS 特性:不用賦值,該列會為自己賦當前的具體時間
~~~
* * * * *
**六.增刪改查**
1.插入數據
~~~
insert into 表名(col1,col2,……) values(val1,val2……); -- 插入指定列
insert into 表名 values (,,,,); -- 插入所有列
insert into 表名 values -- 一次插入多行
(val1,val2……),
(val1,val2……),
(val1,val2……);
~~~
2.修改數據
~~~
update tablename set
col1=newval1,
col2=newval2,
...
...
colN=newvalN
where 條件;
~~~
3.刪除數據
~~~
delete from tablenaeme where 條件;
~~~
4.select 查詢
(1) 條件查詢 where
~~~
1 比較運算符 = ,!=,< > <= >=
2 like , not like ('%'匹配任意多個字符,'_'匹配任意單個字符)
3 in , not in , between and
4 is null , is not null
~~~
(2) 分組 `group by `一般要配合5個聚合函數使用:`max,min,sum,avg,count`
(3) 篩選 `having`
(4) 排序 `order by`
(5) 限制 `limit`
* * * * *
**七.連接查詢**
1.左連接
~~~
.. left join .. on
table A left join table B on tableA.col1 = tableB.col2 ;
~~~
例句:
~~~
select 列名 from table A left join table B on tableA.col1 = tableB.col2
~~~
2.右鏈接: `right join`
3.內連接: `inner join`
>[info] 左右連接都是以在左邊的表的數據為準,沿著左表查右表.
> 內連接是以兩張表都有的共同部分數據為準,也就是左右連接的數據之交集.
* * * * *
**八.子查詢**
where 型子查詢:內層sql的返回值在where后作為條件表達式的一部分
例句:
~~~
select * from tableA where colA = (select colB from tableB where ...);
~~~
from 型子查詢:內層sql查詢結果,作為一張表,供外層的sql語句再次查詢
例句:
~~~
select * from (select * from ...) as tableName where ....
~~~
* * * * *
**存儲引擎**
~~~
engine=Myisam\Innodb
~~~
1 Myisam 速度快 不支持事務 回滾
2 Innodb 速度慢 支持事務,回滾
①開啟事務 `start transaction`;
②運行sql;
③提交,同時生效\回滾 `commit\rollback`;
* * * * *
**觸發器 trigger**
監視地點:表
監視行為:增 刪 改
觸發時間:after\before
觸發事件:增 刪 改
創建觸發器語法
~~~
create trigger tgName
after/before insert/delete/update
on tableName
for each row
sql; -- 觸發語句
~~~
刪除觸發器:`drop trigger tgName`;
**索引**
>[info] 提高查詢速度,但是降低了增刪改的速度,所以使用索引時,要綜合考慮.
> 索引不是越多越好,一般我們在常出現于條件表達式中的列加索引.
> 值越分散的列,索引的效果越好
索引類型
`primary key`主鍵索引
` index` 普通索引
`unique index` 唯一性索引
`fulltext index` 全文索引
* * * * *
**mysql的常用命令**
顯示當前服務器版本 `select version()`;
顯示當前日期時間 `select now()`;
顯示當前用戶 `select user`;
**語法規則**
>[info] 關鍵字和函數名稱全部大寫
> 數據庫形成、表名稱、字段名稱全部小寫
> SQL語句必須以分號結尾;
- 前端
- js學習
- 瀏覽器默認樣式
- webpack+vue
- 個人常用webpack打包依賴
- vue使用學習
- vue源碼學習
- webpack5配置babel
- 瀑布流布局
- 個人常用庫
- 其他
- centos搭建ss服務器
- ios配置Universal Links
- pdf2htmlEX使用
- python
- python操作redis
- linux部署Django
- dateutil庫(datetime模塊的擴展).md
- docker部署django
- mysql
- 基礎知識
- 常用函數
- join關聯查詢技巧
- linux
- shell備份mysql數據庫
- crontab定時任務
- centos7安裝部署gitlab服務器
- nginx安裝配置
- 收藏夾
- python
- 博客
- 工具
- 其他
- 前端