日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql md 123456_mysql/mysql.md · sdbxpjzq/docs - Gitee.com

發(fā)布時(shí)間:2024/3/12 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql md 123456_mysql/mysql.md · sdbxpjzq/docs - Gitee.com 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

[TOC]

# 創(chuàng)建數(shù)據(jù)庫(kù)

```sql

CREATE DATABASE zongqi;

```

每個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)有個(gè)opt文件,每個(gè)表都有frm文件.有的表有3個(gè)文件(和表設(shè)置的類型有關(guān)).

![](https://ws3.sinaimg.cn/large/006tNc79ly1fh4qlansgkj30pk0tmgoj.jpg)

# 數(shù)據(jù)庫(kù)編碼問(wèn)題

### utf8 和 utf8mb4(支持表情)

utf8mb4兼容utf8,且比utf8能表示更多的字符。在做移動(dòng)應(yīng)用時(shí),會(huì)遇到ios用戶會(huì)在文本的區(qū)域輸入emoji表情,如果不做一定處理,就會(huì)導(dǎo)致插入數(shù)據(jù)庫(kù)異常。需要 >= MySQL 5.5.3版本、從庫(kù)也必須是5.5的了、低版本不支持這個(gè)字符集、復(fù)制報(bào)錯(cuò)

### 查看字符集設(shè)置

`show variables like 'collation_%';`

`show variables like 'character_set_%';`

# 表操作

## 創(chuàng)建表

```sql

CREATE table sales_activity_honey_center {

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`uid` int(11) not null default 0 COMMENT '用戶id',

`ling_num` int(11) COMMENT '領(lǐng)取次數(shù)'

`ling_time` timestamp DEFAULT NULL COMMENT '領(lǐng)取事件'

-- 下面2行建議必須寫

`ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`mtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

}ENGINE=InnoDB DEFAULT CHARSET=utf8;

```

## 修改表

### add

```sql

alter table [tb_name] add [字段] [約束條件]

```

### change

```sql

alter table [table_name] change [舊字段] [新字段] [約束條件]

```

### drop

```sql

alter table [tb_name] drop [字段];

```

### modify

```sql

alter table [tb_name] modify [列名] [約束定義];

```

## 刪除表

```sql

drop table if exists tb_name;【若存在 刪除 推薦】 這樣不會(huì)報(bào)錯(cuò),只是警告

```

## 清空表

相當(dāng)于 delete 語(yǔ)句不寫 where 子句一樣

```sql

truncate [table_name];

```

## 查看創(chuàng)建表語(yǔ)句

```sql

Show create table [table_name]

```

# 列屬性

## unsigned

- 只能用于數(shù)值類型,表示無(wú)符號(hào)的。

- 不允許數(shù)據(jù)出現(xiàn)負(fù)數(shù)。

- 緊跟在 數(shù)字類型后面,

```sql

create table if not exists USER(

id int(10) unsigned not null auto_increment primary key ,

username varchar(20) not null

);

```

## zerofill

- 只能用于數(shù)值類型,在數(shù)值之前自動(dòng)用0 補(bǔ)齊不足的位數(shù)

- 當(dāng)給一個(gè)字段使用`zerofill`修飾時(shí),該字段自動(dòng)應(yīng)用`unsigned`。

## auto_increment

自動(dòng)增量屬性。此字段**不允許重復(fù)**,只能修飾**整數(shù)類**的字段,

設(shè)置auto_increment必須設(shè)置一個(gè)key

## null和 not null

null是特殊的值,代表無(wú)值,與0和空字符串都不相同

## default

指定一個(gè)默認(rèn)值

## 時(shí)間類型

| 類型 | 大小(字節(jié)) | 范圍 | 格式 | 用途 |

| --------- | ------ | --------------------------------------- | ------------------- | ------------ |

| DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值年月日 |

| TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 時(shí)間值或持續(xù)時(shí)間時(shí)分秒 |

| YEAR | 1 | 1901/2155 | YYYY | 年份值 |

| DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和時(shí)間值 |

| TIMESTAMP | 8 | 1970-01-01 00:00:00/2038 年某時(shí) | YYYYMMDD HHMMSS | 混合日期和時(shí)間值,時(shí)間戳 |

- timestamp

需要經(jīng)常插入或者更新日期為當(dāng)前系統(tǒng)時(shí)間,推薦使用 timestamp來(lái)標(biāo)識(shí).返回String.

# 索引

### 主鍵索引 primary key

一個(gè)表只能指定一個(gè)主鍵,且主鍵的值不能為空。

### 唯一索引 unique

一個(gè)表中可以有多個(gè)唯一索引。

主要是為了避免數(shù)據(jù)出現(xiàn)重復(fù)。

主鍵和唯一鍵約束是通過(guò)參考索引實(shí)施的,如果插入的值均為NULL,則根據(jù)索引的原理,全NULL值不被記錄在索引上,所以插入全NULL值時(shí),可以有重復(fù)的,而其他的則不能插入重復(fù)值。

alter table t add constraint uk_t_1 unique (a,b);

insert into t (a ,b ) values (null,1); # 不能重復(fù)

insert into t (a ,b ) values (null,null);#可以重復(fù) .

1. 創(chuàng)建表的時(shí)候直接指定

```sql

CREATE TABLE `sales_activity_honey` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`type` tinyint(4) DEFAULT '0' COMMENT '活動(dòng)類型ID',

`uid` int(11) NOT NULL DEFAULT '0' COMMENT '用戶id',

`num` int(11) DEFAULT NULL COMMENT '連續(xù)領(lǐng)取次數(shù)',

`honey` int(11) DEFAULT NULL COMMENT '總領(lǐng)取數(shù)量',

`last_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`id`),

UNIQUE KEY `unq_uid_type` (`uid`,`type`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

```

2. 創(chuàng)建索引

```sql

CREATE UNIQUE INDEX indexName ON mytable(username(length))

// length注意:

如果是CHAR,VARCHAR類型,length可以小于字段實(shí)際長(zhǎng)度;

如果是BLOB和TEXT類型,必須指定 length。

```

3. 修改表結(jié)構(gòu)

```sql

ALTER table mytable ADD UNIQUE [uniq_name] ([字段1,字段2])

```

4. 刪除索引

```sql

alter table [table_name] drop key [key_name]

```

?

### 常規(guī)索引 index || key

關(guān)鍵字 index 或 key

索引應(yīng)該建立在搜索,排序,分組等操涉及的數(shù)據(jù)列上,就是在 where字句,from字句,order by字句,group by字句

不要建立太多索引,索引會(huì)消耗系統(tǒng)資源。

1. 創(chuàng)建表的時(shí)候直接指定

```sql

create table if not exists you(

id int not null ,

youname CHAR(20),

index indexname(youname(20))

);

```

2. 創(chuàng)建索引

```sql

CREATE INDEX indexName ON mytable(username(length));

```

3. 修改表結(jié)構(gòu)

```sql

ALTER mytable ADD INDEX [indexName] ON (username(length))

```

### 刪除索引

```sql

DROP INDEX [indexName] ON mytable;

```

# CURD

## 插入數(shù)據(jù)

```sql

insert into [tables_name](column1,column2,...) values(value1, value2,..)

```

### 更新數(shù)據(jù)

```sql

update [tables_name]set column1 = new_value1,column2 = new_value2,… WHERE definition

```

**update 表達(dá)式**

```sql

UPDATE article SET pv = pv+1 WHERE id = 123

```

**同時(shí)更新多個(gè)表**

```sql

update emp as a,dept as b set

```

## 查詢數(shù)據(jù)

```sql

select column1,column1,... FROM tb_name

```

## 替換數(shù)據(jù)

【主鍵或唯一索引沖突,執(zhí)行替換,否則插入】

# 連表查詢

![](https://ws2.sinaimg.cn/large/006tKfTcly1figufzvzo3j30fd09zglt.jpg)

## 內(nèi)連接

選出兩張表中相互匹配的記錄,連接的多個(gè)數(shù)據(jù)必須存在才能進(jìn)行連接 .

方式一:

```sql

select a.ename, b.deptname from emp as a,dept as b where a.deptno=b.deptno; //在沒有用關(guān)鍵字的情況下,使用on條件會(huì)報(bào)錯(cuò)

```

方式二:

`inner join`關(guān)鍵字

```sql

select * from news inner join you on news.id = you.id;

```

方式三:

`using()`關(guān)鍵字

要求:**連接的兩個(gè)實(shí)體之間的字段名稱一致**

```sql

select * from news inner join you using(id);

```

## 外連接

### 左連接(left outer join)

包含所有左邊表中的記錄,甚至是右表中沒有和他相匹配的記錄.

### 右連接(right outer join)

包含所有的右邊的記錄,甚至是左邊表中沒有與他相匹配的記錄

### 注意事項(xiàng)

1. 不支持`where`作為連接條件, 使用 `on`

2. `using`:會(huì)去掉結(jié)果中的重復(fù)字段,并將判斷條件放在第一列

3. 外連接不能缺少連接條件,否則會(huì)報(bào)錯(cuò)

```sql

A left join B ON 條件表達(dá)式;

select * from news left join you on news.id=you.id;

```

## 自然連接(natural join)

通過(guò)mysql自己的判斷完成連接的過(guò)程,不需要指定連接條件,mysql會(huì)使用多表內(nèi)的,相同的字段,作為連接條件。

```sql

select * from table1 natrual join table2;

```

分類:

- 內(nèi)連接:`natural join`

- 左外連接:`natural left join`

- 右外連接:`natural right join`

# SQL中on條件與where條件的區(qū)別

數(shù)據(jù)庫(kù)在通過(guò)連接兩張或多張表來(lái)返回記錄時(shí),都會(huì)生成一張中間的臨時(shí)表,然后再將這張臨時(shí)表返回給用戶。

在使用`left jion`時(shí),`on`和`where`條件的區(qū)別如下:

1、 `on`條件是在生成臨時(shí)表時(shí)使用的條件,它不管on中的條件是否為真,都會(huì)返回左邊表中的記錄。

2、`where`條件是在臨時(shí)表生成好后,再對(duì)臨時(shí)表進(jìn)行過(guò)濾的條件。這時(shí)已經(jīng)沒有`left join`的含義(必須返回左邊表的記錄)了,條件不為真的就全部過(guò)濾掉。

# 聯(lián)合查詢 - union ,union all

合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集

`union` 、`union all`

## union和union all的區(qū)別

- union all是把結(jié)果直接合并在一起

- union是將union all的后的結(jié)果進(jìn)行一次`distinct`(去重),之后的結(jié)果

栗子:

```sql

(select id from news)

union all

(select id from you);//推薦將select語(yǔ)句用()包起來(lái)

```

```txt

id

--------

2

3

4

5

2

3

```

```sql

(select id from news)

union

(select id from you);

```

```txt

id

--------

2

3

4

5

```

## 注意事項(xiàng)

1. **子語(yǔ)句的 order by,只有在配合limit時(shí),才會(huì)生效**.

原因:union會(huì)對(duì)沒有l(wèi)imit 的 order by 忽略。

```sql

(SELECT id,name FROM table_name1 order by id limit 100)

union

(SELECT id,name FROM table_name2 order by id limit 100);

```

對(duì)union結(jié)果排序

```sql

(SELECT id, name FROM table_name1)

union

(SELECT id,name FROM table_name2)order by id asc|desc;

```

2. **UNION 內(nèi)部的 SELECT 語(yǔ)句必須擁有相同數(shù)量的列**

3. **列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語(yǔ)句中的列的順序必須相同**

# 用戶

## 創(chuàng)建用戶

```sql

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

```

username - 你將創(chuàng)建的用戶名,

host - 指定該用戶在哪個(gè)主機(jī)上可以登陸.`%` 表示任意主機(jī)

password - 該用戶的登陸密碼

## 授權(quán)

```sql

GRANT privileges ON databasename.tablename TO 'username'@'host'

```

privileges - 用戶的操作權(quán)限,如SELECT , INSERT , UPDATE 等. `ALL`表示授予所的權(quán)限.

databasename - 數(shù)據(jù)庫(kù)名

tablename-表名,

如果要授予該用戶對(duì)所有數(shù)據(jù)庫(kù)和表的相應(yīng)操作權(quán)限則可用`*`表示

栗子:

```sql

GRANT ALL ON zongqi.* TO 'zongqi'@'%'

```

## 撤銷用戶權(quán)限

```sql

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

```

注意: 假如你在給用戶'pig'@'%'授權(quán)的時(shí)候是這樣的(或類似的):

`GRANT SELECT ON test.user TO 'pig'@'%'`, 則在使用`REVOKE SELECT ON *.* FROM 'pig'@'%'`;命令并不能撤銷該用戶對(duì)test數(shù)據(jù)庫(kù)中user表的SELECT 操作.

如果授權(quán)使用的是`GRANT SELECT ON *.* TO 'pig'@'%'`;則`REVOKE SELECT ON test.user FROM 'pig'@'%'`;命令也不能撤銷該用戶對(duì)test數(shù)據(jù)庫(kù)中user表的Select 權(quán)限.

## 設(shè)置與更改用戶密碼

```sql

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是當(dāng)前登陸用戶用SET PASSWORD = PASSWORD("newpassword");

```

例子:

```sql

SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

```

## 刪除用戶

```sql

DROP USER 'username'@'host';

```

# 模式問(wèn)題

## 查看模式

```sql

select @@sql_mode;

SELECT @@GLOBAL.sql_mode;

```

## 修改模式

需要root權(quán)限

### 修改配置文件

` vim /etc/my.cnf`

在`[mysqld]`下面添加如下列:

`sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES`

### 執(zhí)行sql

```sql

SET @@sql_mode="NO_ENGINE_SUBSTITUTION";

SET @@GLOBAL.sql_mode="NO_ENGINE_SUBSTITUTION";

```

http://www.ywnds.com/?p=8865

一鍵復(fù)制

編輯

Web IDE

原始數(shù)據(jù)

按行查看

歷史

總結(jié)

以上是生活随笔為你收集整理的mysql md 123456_mysql/mysql.md · sdbxpjzq/docs - Gitee.com的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品无码人妻 | 可以免费看的黄色网址 | 美女操操操| 91丝袜呻吟高潮美腿白嫩 | 亚洲国产精品18久久久久久 | 国产伦精品一区二区三区视频痴汉 | 天天干天天舔天天操 | 在线观看成人小视频 | www色视频 | 国产不卡在线播放 | 最新中文字幕在线观看视频 | 视频在线一区二区三区 | 黄色大全免费看 | 亚洲专区第一页 | 懂色tv | 亚洲欧洲日韩av | 亚洲激情社区 | 国产伦理吴梦梦伦理 | 免费黄色a | 日韩一区二区三区在线看 | 国产精品粉嫩 | 欧美日韩一级视频 | 爽爽影院在线免费观看 | 在线观看日韩欧美 | 在线观看福利视频 | 日韩黄色在线视频 | 亚洲欧美制服丝袜 | 日韩欧美中文字幕在线视频 | 2022国产精品 | 脱裤吧导航 | 欧美乱子伦 | 秋霞久久精品 | 91超碰在线免费观看 | 青草青草视频 | 色综合日韩| a久久久久久| 国产a免费| 九九福利| 老司机深夜福利视频 | 特级西西人体wwwww | 国产精品久久久久三级 | 性欧美videos另类艳妇3d | 鸥美毛片| 亚洲成av人片在线观看无码 | www.av在线| 女女同性被吸乳羞羞 | 日韩精品成人一区 | 麻豆免费在线 | 天天操天天干天天 | 成年人免费看毛片 | 国产三区在线观看 | 国产综合在线播放 | 亚洲超丰满肉感bbw 悠悠av | 亚洲AV无码AV吞精久久中文版 | 欧美精品国产一区二区 | 精品国产欧美日韩 | 四虎影视成人永久免费观看亚洲欧美 | 日韩一区二区三区四区 | 亚洲黄色网络 | 日韩精品免费一区二区夜夜嗨 | 草草影院在线观看 | 毛片直接看 | 日本人妻不卡一区二区三区中文字幕 | 国产高清视频一区二区 | 国产无遮挡免费观看视频网站 | 丨国产丨调教丨91丨 | 激情拍拍拍 | 亚洲av午夜精品一区二区三区 | 天天色综合色 | 三级理论电影 | 欧美午夜理伦三级在线观看 | 免费av不卡在线观看 | 久久久午夜精品福利内容 | 日韩爱爱网站 | 另类小说欧美 | 国产一区二区三区观看 | 国产精品综合一区二区 | 亚洲中文字幕无码不卡电影 | 欧美日本色图 | 欧美xxxx精品 | 久久网站视频 | 精品久久一区二区三区 | 波多野结衣喷潮 | 少妇aa| 一区二区三区中文字幕 | 99热2| 中文字幕一区二区三区不卡 | 看黄色小视频 | 色婷婷小说 | 浴室里强摁做开腿呻吟男男 | 超碰国产91 | 一区二区三区四区五区在线视频 | 无码熟妇人妻av | 日日干夜夜骑 | 色一区二区三区四区 | 97久久精品人人澡人人爽 | 98国产精品 | 日本黄色片免费 | 久久久久久穴 |