主頁 > 資料庫 > MySQL DDL 、DML、DQL陳述句

MySQL DDL 、DML、DQL陳述句

2022-09-10 08:36:42 資料庫

DDL:資料定義語言

注意:對表操作的時候需要進入到對應的資料庫里面去,

創建表:CREATE TABLE [IF NOT EXISTS] 'tbl_name' ( 欄位1 修飾符, col2 欄位2 修飾符, ...)

例如:創建一張名為stu1的表,表中包含的欄位有id,name和age,id的資料型別是int,且是主鍵并且自動增長,

mysql> create table stu1 (id int primary key auto_increment,name varchar(20) not null, age tinyint unsigned);
Query OK, 0 rows affected (0.06 sec)

mysql> show tables;
+-------------------+
| Tables_in_student |
+-------------------+
| stu1              |
+-------------------+
1 row in set (0.00 sec)
查看表
  • 查看表串列

  • 查看創建表的命令

  • 查看表結構(欄位)資訊

  • 查看表屬性資訊

查看表:show tables [from db_name]

注意:不加db_name,默認查看的是當前資料庫里面的所有表,

mysql> show tables from student;
+-------------------+
| Tables_in_student |
+-------------------+
| stu1              |
+-------------------+
1 row in set (0.00 sec)
查看創建表的命令:SHOW CREATE TABLE tbl_name
mysql> show create table stu1 \G
*************************** 1. row ***************************
       Table: stu1
Create Table: CREATE TABLE `stu1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` tinyint(3) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
查看表的結構(欄位)資訊:
  • desc tb_name

  • SHOW COLUMNS FROM [db_name.]tb_name

mysql> desc stu1;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type                | Null | Key | Default | Extra          |
+-------+---------------------+------+-----+---------+----------------+
| id    | int(11)             | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)         | NO   |     | NULL    |                |
| age   | tinyint(3) unsigned | YES  |     | NULL    |                |
+-------+---------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

查看表的屬性資訊:show table status like 'tb_name'

注意:mysq客戶端的ego--(\G)命令可以垂直顯示結果

*************************** 1. row ***************************
           Name: stu1
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 6
 Avg_row_length: 2730
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: 10
    Create_time: 2022-09-09 00:56:44
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)
修改表:
#修改表名
ALTER TABLE students RENAME s1;

#添加欄位
ALTER TABLE s1 ADD phone varchar(11) AFTER name;

#修改欄位型別
ALTER TABLE s1 MODIFY phone int;

#修改欄位名稱和型別
ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);

#洗掉欄位
ALTER TABLE s1 DROP COLUMN mobile;

#修改字符集
ALTER TABLE s1 character set utf8;

#修改資料型別和字符集
ALTER TABLE s1 change name name varchar(20) character set utf8;

#添加欄位
ALTER TABLE students ADD gender ENUM('m','f');

alter table student modify is_del bool default false;


#修改欄位名和型別
ALETR TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY;

#洗掉欄位
ALTER TABLE students DROP age;

#查看表結構
DESC students;

#新建表無主鍵,添加和洗掉主鍵
CREATE TABLE t1 SELECT * FROM students;

ALTER TABLE t1 add primary key (stuid);

ALTER TABLE t1 drop primary key ;


#添加外鍵
ALTER TABLE students add foreign key(TeacherID) references teachers(tid);

#洗掉外鍵
SHOW CREATE TABLE students 

#查看外鍵名
ALTER TABLE students drop foreign key <外鍵名>;
DML:資料操縱語言(insert、updete、delete)

注意:設計字符型別的資料型別,進行操作的時候要加上引號(單雙都可以)

INSERT 陳述句:insert tb_name(col1...coln) values (value1...valuen)

例如:

mysql> insert stu1(name,age) values('tom',10);
Query OK, 1 row affected (0.01 sec)

全值插入:不指定col

mysql> insert stu1 values(3,'BOB',20);
Query OK, 1 row affected (0.00 sec)

UPDATE 陳述句

注意:使用update陳述句的時候需要指定限制條件,不然將修改所有行的指定欄位

mysql> update stu1 set name='bob' where name='BOB';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from stu1;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | tom  |   10 |
|  2 | bob  |   20 |
|  3 | bob  |   20 |
+----+------+------+
3 rows in set (0.00 sec)

可以通過在組態檔指定選項來避免這個錯誤,

[root@centos8 ~]#vim /etc/my.cnf
[mysql]
safe-updates

洗掉指定的記錄:

ysql> delete from stu1 where id=3 ;
Query OK, 1 row affected (1.68 sec)

mysql> select * from stu1 ;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | tom  |   10 |
|  2 | bob  |   20 |
+----+------+------+
2 rows in set (0.00 sec)

洗掉資料: delete from tb_name where 限制條件

注意:不加限制條件會清空表里面的所有資料,

mysql> delete from stu1 where  id=5;
Query OK, 1 row affected (0.00 sec)

mysql> select * from stu1;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  4 | bob2   |   22 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
|  8 | tom2   | NULL |
+----+--------+------+
6 rows in set (0.00 sec)
清空資料表,保留表結構的方法;
  • delete from tb_name(不會縮減資料檔案的大小)

  • TRUNCATE TABLE tbl_name(會自動縮減資料檔案的大小)

  • 縮減表的大小:OPTIMIZE TABLE tb_name

DQL:資料查詢語言(select)
select查詢
  • 單表操作

  • 多表操作

針對單表操作:
簡單查詢:select 需要查詢得欄位 from tb_name where 限制條件
  • 指定欄位別名

范例:欄位顯示的時候使用別名

mysql> select id as '編號',name as '名字',age as '年齡' from stu1;
+--------+--------+--------+
| 編號   | 名字   | 年齡   |
+--------+--------+--------+
|      1 | tom    |     10 |
|      2 | bob    |     20 |
|      3 | bob    |     20 |
+--------+--------+--------+
3 rows in set (0.00 sec)
  • select可以實作加減乘除運算
mysql> select 1+2+3*4-5+9;
+-------------+
| 1+2+3*4-5+9 |
+-------------+
|          19 |
+-------------+
1 row in set (0.00 sec)

  • select可以實作比較的操作(大于、小于、等于等)
mysql> select 1>99;
+------+
| 1>99 |
+------+
|    0 |
+------+
1 row in set (0.00 sec)

mysql> select 1<99;
+------+
| 1<99 |
+------+
|    1 |
+------+
1 row in set (0.00 sec)
  • BETWEEN:查詢一個范圍: BETWEEN min_num AND max_num
mysql> select * from stu1 where age  between 20 and 25;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  2 | bob    |   20 |
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
+----+--------+------+
4 rows in set (0.00 sec)
  • IN:實作不連續的查詢: IN (element1, element2, ...)
mysql> select * from stu1 where age in(10,20,25);
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  6 | bob5=3 |   25 |
+----+--------+------+
3 rows in set (0.00 sec)

  • 空查詢: IS NULL, IS NOT NULL
mysql> select * from stu1 where age is null;
+----+------+------+
| id | name | age  |
+----+------+------+
|  8 | tom2 | NULL |
+----+------+------+
1 row in set (0.01 sec)

mysql> select * from stu1 where age is NOT null;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
+----+--------+------+
6 rows in set (0.00 sec)

  • DISTINCT: 去除重復行
mysql> select * from stu1;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
|  8 | tom2   | NULL |
|  9 | bob    |   20 |
+----+--------+------+
8 rows in set (0.00 sec)

mysql> select distinct * from stu1;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
|  8 | tom2   | NULL |
|  9 | bob    |   20 |
+----+--------+------+
8 rows in set (0.00 sec)
  • like: 模糊查詢: LIKE 使用 % 表示任意長度的任意字符 _ 表示任意單個字符
#like 后面的字符需要用引號括起來,可以是單引號,也可以是雙引號
mysql> SELECT * from stu1 where age like '1%';
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | tom  |   10 |
+----+------+------+
1 row in set (0.00 sec)
  • 邏輯運算子:NOT,AND,OR,XOR
group by:根據指定的條件把查詢結果進行"分組"以用于做"聚合"運算

group by通常結合聚合函式來使用,常用聚合函式: count(), sum(), max(), min(), avg(),注意:聚合函式不對null統計

注意:
  • 一旦對表進行分組以后,select后面的欄位要么是聚合函式要么就是分組的欄位,

  • group by(分組后)的后面加條件必須用having

  • gtoup by(分組前)的前面加條件可以用where

例如:按照姓名來進行分組,統計每個姓名都有多少人,

mysql> select * from stu1;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
|  8 | tom2   | NULL |
|  9 | bob    |   20 |
+----+--------+------+
8 rows in set (0.00 sec)

mysql> select name , count(*) from stu1 group by name;
+--------+----------+
| name   | count(*) |
+--------+----------+
| bob    |        2 |
| bob2   |        1 |
| bob2=3 |        1 |
| bob5   |        1 |
| bob5=3 |        1 |
| tom    |        1 |
| tom2   |        1 |
+--------+----------+
ORDER BY: 根據指定的欄位對查詢結果進行排序
  • 升序:ASC

  • 降序:DESC

mysql> select * from stu1 order by age desc;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  7 | bob5   |   26 |
|  6 | bob5=3 |   25 |
|  5 | bob2=3 |   24 |
|  4 | bob2   |   22 |
|  2 | bob    |   20 |
|  9 | bob    |   20 |
|  1 | tom    |   10 |
|  8 | tom2   | NULL |
+----+--------+------+
8 rows in set (0.00 sec)

mysql> select * from stu1 order by age asc;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  8 | tom2   | NULL |
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  9 | bob    |   20 |
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
+----+--------+------+
8 rows in set (0.00 sec)

LIMIT [[offset,]row_count]:對查詢的結果進行輸出行數數量限制,跳過offset,顯示row_count行,offset默為值為0

例如:limit 3,5表示的就是跳過前三個,只顯示五條記錄,實作分頁顯示,

mysql> select * from stu1;
+----+---------+------+
| id | name    | age  |
+----+---------+------+
|  1 | tom     |   10 |
|  2 | bob     |   20 |
|  4 | bob2    |   22 |
|  6 | bob5=3  |   25 |
|  7 | bob5    |   26 |
|  8 | tom2    | NULL |
| 10 | liyi    |   25 |
| 11 | lier    |   26 |
| 12 | zhangwu |   22 |
| 13 | xiaosi  |   30 |
| 14 | wuad    |   40 |
+----+---------+------+
11 rows in set (0.00 sec)

mysql> select * from stu1 limit 3,5;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
|  8 | tom2   | NULL |
| 10 | liyi   |   25 |
| 11 | lier   |   26 |
+----+--------+------+
5 rows in set (0.00 sec)

例如:顯示年齡最小的五個(會自動去掉重復的)

mysql> select * from stu1  order by age;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  8 | tom2   | NULL |
|  1 | tom    |   10 |
|  2 | bob    |   20 |
|  9 | bob    |   20 |
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
+----+--------+------+
8 rows in set (0.00 sec)

mysql> select * from stu1  order by age limit 5;
+----+------+------+
| id | name | age  |
+----+------+------+
|  8 | tom2 | NULL |
|  1 | tom  |   10 |
|  2 | bob  |   20 |
|  9 | bob  |   20 |
|  4 | bob2 |   22 |
+----+------+------+
5 rows in set (0.00 sec)

多表查詢:查詢的結果來自于多張表,
多表查詢的方法:
  • 子查詢:在SQL陳述句嵌套著查詢陳述句,性能較差,基于某陳述句的查詢結果再次進行的查詢

  • 聯合查詢:UNION ,兩張表縱向合并形成一個大表

  • 交叉連接:笛卡爾乘積 CROSS JOIN ,橫向連接,把第一個表的每條記錄都和第二張表進行組合,從而形成一個大表

  • 內連接:取兩張表得交集(都符合條件得那一部分)

  • 外連接:outer inner
    左外連接:左邊表的全部內容+交集部分,FROM tb1 LEFT JOIN tb2 ON tb1.col=tb2.col
    右外連接:右邊表的全部內容+交集部分,FROM tb1 RIGHT JOIN tb2 ON tb1.col=tb2.col

子查詢:一個查詢結果作為另一個查詢的條件,

例如:

mysql> select * from stu1 where age >(select avg(age) from stu1);
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  4 | bob2   |   22 |
|  5 | bob2=3 |   24 |
|  6 | bob5=3 |   25 |
|  7 | bob5   |   26 |
+----+--------+------+
4 rows in set (0.00 sec)

union:聯合查詢 ,將兩張表縱向合并,合成一個新的大表

前提:

  • 欄位(列)需要保持一致,

  • 資料型別要匹配

mysql> select * from stu1 union select * from teach;
+----+-----------+------+
| id | name      | age  |
+----+-----------+------+
|  1 | tom       |   10 |
|  2 | bob       |   20 |
|  4 | bob2      |   22 |
|  5 | bob2=3    |   24 |
|  6 | bob5=3    |   25 |
|  7 | bob5      |   26 |
|  8 | tom2      | NULL |
|  1 | zhang san |   40 |
|  2 | li si     |   45 |
|  3 | wang wu   |   46 |
+----+-----------+------+
10 rows in set (0.00 sec)
交叉連接: cross join (橫向笛卡爾積)
  • 橫向合并:把第一個表的每條記錄都和第二張表進行組合,從而形成一個大表,(笛卡爾乘積)

  • 最終生成的記錄數:A表的記錄數*B表的記錄數

注意:交叉連接慎用,同意造成資料庫死機

mysql> select * from stu1
    -> cross join
    -> teach;
+----+--------+------+-----+-----------+------+
| id | name   | age  | TID | NAME      | age  |
+----+--------+------+-----+-----------+------+
|  1 | tom    |   10 |   1 | zhang san |   40 |
|  1 | tom    |   10 |   2 | li si     |   45 |
|  1 | tom    |   10 |   3 | wang wu   |   46 |
|  2 | bob    |   20 |   1 | zhang san |   40 |
|  2 | bob    |   20 |   2 | li si     |   45 |
|  2 | bob    |   20 |   3 | wang wu   |   46 |
|  4 | bob2   |   22 |   1 | zhang san |   40 |
|  4 | bob2   |   22 |   2 | li si     |   45 |
|  4 | bob2   |   22 |   3 | wang wu   |   46 |
|  5 | bob2=3 |   24 |   1 | zhang san |   40 |
|  5 | bob2=3 |   24 |   2 | li si     |   45 |
|  5 | bob2=3 |   24 |   3 | wang wu   |   46 |
|  6 | bob5=3 |   25 |   1 | zhang san |   40 |
|  6 | bob5=3 |   25 |   2 | li si     |   45 |
|  6 | bob5=3 |   25 |   3 | wang wu   |   46 |
|  7 | bob5   |   26 |   1 | zhang san |   40 |
|  7 | bob5   |   26 |   2 | li si     |   45 |
|  7 | bob5   |   26 |   3 | wang wu   |   46 |
|  8 | tom2   | NULL |   1 | zhang san |   40 |
|  8 | tom2   | NULL |   2 | li si     |   45 |
|  8 | tom2   | NULL |   3 | wang wu   |   46 |
+----+--------+------+-----+-----------+------+
21 rows in set (0.00 sec)
內連接:inner join 取兩張表橫向合并交集(兩張表都符合條件的部分)

注意:內連接的條件要使用on來進行連接,

mysql> select * from stu1 inner join teach on stu1.id=teach.TID;
+----+------+------+-----+-----------+------+
| id | name | age  | TID | NAME      | age  |
+----+------+------+-----+-----------+------+
|  1 | tom  |   10 |   1 | zhang san |   40 |
|  2 | bob  |   20 |   2 | li si     |   45 |
+----+------+------+-----+-----------+------+
2 rows in set (0.00 sec)

#挑選對應想要的欄位
mysql> select stu1.id,stu1.name,teach.name  from stu1 inner join teach on stu1.id=teach.TID;
+----+------+-----------+
| id | name | name      |
+----+------+-----------+
|  1 | tom  | zhang san |
|  2 | bob  | li si     |
+----+------+-----------+
2 rows in set (0.00 sec)


對表起別名:直接在表名后面加別名
mysql> select s.id,s.name,t.name  from stu1 s inner join teach t on s.id=t.TID;
+----+------+-----------+
| id | name | name      |
+----+------+-----------+
|  1 | tom  | zhang san |
|  2 | bob  | li si     |
+----+------+-----------+
2 rows in set (0.00 sec)

外連接:outer join
  • 左外連接:left join

  • 右外連接:right join

左外連接:left join 左邊表的全部內容+交集部分
mysql> select stu1.id,stu1.name,teach.name  from stu1 left join teach on stu1.id=teach.TID;
+----+--------+-----------+
| id | name   | name      |
+----+--------+-----------+
|  1 | tom    | zhang san |
|  2 | bob    | li si     |
|  4 | bob2   | NULL      |
|  5 | bob2=3 | NULL      |
|  6 | bob5=3 | NULL      |
|  7 | bob5   | NULL      |
|  8 | tom2   | NULL      |
+----+--------+-----------+
7 rows in set (0.00 sec)
右外連接: right join 右邊表的全部內容+交集部分
mysql> select stu1.id,stu1.name,teach.name  from stu1 right  join teach on stu1.id=teach.TID;
+------+------+-----------+
| id   | name | name      |
+------+------+-----------+
|    1 | tom  | zhang san |
|    2 | bob  | li si     |
| NULL | NULL | wang wu   |
+------+------+-----------+
3 rows in set (0.00 sec)

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/506065.html

標籤:MySQL

上一篇:MySQL第六天

下一篇:日志:Redo Log 和 Undo Log

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more