整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          ClickHouse學習筆記四ClickHouse基礎語法

          這里我們介紹ClickHouse的基本語法,使用環境是騰訊云的ClickHouse。默認情況下,ClickHouse 在進行集群緯度執行建表等 DDL 操作時需要手動添加 ON CLUSTER XXX 語法。


          下面我會介紹常用的語法 [其中 launch 為我們的數據庫名]

          創建表

          我們創建一張廣告點擊表作為演示案例,點擊表click的創建語句

          CREATE TABLE click ON CLUSTER default_cluster (
                id  UInt64,
                product_type UInt32,
                channel_type String,
                agent_name String,
                advertiser_id String,
                aid String,
                request_id String,
                imei  String,
                idfa String,
                android_id String,
                oaid String,
                os String,
                mac String,
                ip String,
                ts String,
                callback_url String,
                data String,
                expire DateTime,
                create_time date
          )
              ENGINE = MergeTree()
          		PARTITION BY toYYYYMM(create_time)
          		PRIMARY KEY id
          		ORDER BY id;

          建表語句生成

          在ClickHouse中可以通過SHOW CREATE TABLE語法來生成建表語句,例如:

          SHOW CREATE TABLE test_table

          SHOW CREATE launch.click;

          修改表名語句

          在ClickHouse中可以通過RENAME TABLE語法來修改表名語句,例如:

          RENAME TABLE table_name TO table_name_new ON CLUSTER default_cluster;

          RENAME TABLE click TO click_new ON CLUSTER default_cluster;

          查看表結構語句

          在ClickHouse中,可以使用DESCRIBE語法來查看表的結構,例如:

          DESCRIBE table_name;

          DESCRIBE launch.click;

          添加列

          修改表結構,添加一個新列:

          ALTER TABLE table_name ADD COLUMN new_column_name type;

          ALTER TABLE click ON CLUSTER default_cluster 
          ADD COLUMN channel_id String;

          字段添加備注

          ALTER TABLE table_name [on cluster cluster_name] 
          comment COLUMN column_name "message"
          ALTER TABLE click ON CLUSTER default_cluster
          comment COLUMN create_time '創建時間';

          刪除列

          刪除表中的一個列:

          ALTER TABLE table_name DROP COLUMN column_name;

          ALTER TABLE click ON CLUSTER default_cluster 
          DROP COLUMN channel_id

          修改列類型

          修改某個列的數據類型:

          ALTER TABLE table_name MODIFY COLUMN column_name new_type;

          ALTER TABLE click ON CLUSTER default_cluster 
          MODIFY COLUMN create_time DateTime;

          刪除表語法

          刪除表語法格式:DROP TABLE table_name ;

          DROP TABLE click ON CLUSTER default_cluster;

          修改表數據

          修改單條記錄

          修改表中指定記錄的某個列的值

          ALTER TABLE table_name UPDATE column_name = new_value WHERE condition;

          ALTER TABLE click
          UPDATE agent_name ='xm' where id = 271494392

          批量修改記錄

          批量修改表中的多條記錄:

          ALTER TABLE table_name UPDATE column_name = new_value WHERE condition;

          刪除記錄

          ALTER TABLE table_name DELETE WHERE condition;

          ALTER TABLE click 
          DELETE where id = 271494392

          小數類型查詢

          select * from click_cost
          where create_time>='2024-01-16' and create_time<'2024-01-17'
          and toFloat32(cost) > 0.01

          最佳實踐

          ClickHouse中的修改操作主要是通過重寫表數據來完成的,而不是更新原始數據。這也意味著點擊修改操作會帶來較大的性能損失,特別是在大表上的修改會極大地影響性能。因此,盡量避免在ClickHouse上進行大量更新操作。

          內容是《Web前端開發之Javascript視頻》的課件,請配合大師哥《Javascript》視頻課程學習。

          為了方便構建表格,HTML DOM為表格專門創建了HTMLTableElement 接口;其繼承自HTMLElement接口;

          該接口提供了專門的屬性和方法來處理表格的布局與呈現;

          HTMLTableElement接口屬性:

          • caption:返回HTMLTableCaptionElement類型的<caption>元素;
          • tHead:指向一個HTMLTableSectionElement類型的<thead>;
          • tBodies:是一個保存著<tbody>元素的HTMLCollection對象,該對象的length屬性返回了<tbody>元素的數量;
          • tFoot:指向一個HTMLTableSectionElement類型的<tfoot>元素;
          • rows:返回一個表格中所有行的HTMLCollection,也就是所有的<tr>,包含在<thead>、<tbody>和<tfoot>三者之中,該屬性是只讀的;
          var table = document.getElementsByTagName("table")[0];
          console.log(table.caption);
          console.log(table.tHead);
          console.log(table.tBodies);
          console.log(table.tFoot);
          console.log(table.rows);
          console.log(table.rows[0]);
          console.log(table.rows[table.rows.length-1]);

          另外,HTMLTableElement對象還擁有一些表現性的屬性,但這些屬性已建議不被使用,因為可以使用CSS來指定樣式,如;

          • width:表格寬度,值可以是像素也可以是百分比;注意,此寬不會返回CSS指定的寬,它只映射<table>標簽中的width特性;
          • border:邊框寬度,其以像素為單位;
          • align:表格的對齊方式,可能的值為”left”、”center”和”right”;
          • bgColor:背景顏色,該屬性也可以應用在tbody、row和cell對象上;
          • cellPadding:單元格內邊距;
          • cellSpacing:單元格間距;
          • summary:表描述;
          • frame:表格外邊框位置,可能的值為:void無邊、above頂部、below底部、hsides頂部和底部、vsides右側和左側、lhs左側、rhs右側、box四個邊、border四個邊;
          • rules:表中如何呈現單元格邊框,可能的值為:none沒有、groups組之間的線、rows行之間的線、cols列之間的線、all所有單元格之間的線;

          以上屬性除了summary,都可以使用CSS進行定義,所以盡量不要再使用;

          HTMLTableElement接口方法:

          createCaption():返回表格元素的標題,如該表沒有標題,這個方法創建并返回標題,隨后可以使用其他方法對其添加內容;

          deleteCaption():移除表格元素的<caption>;

          var table = document.getElementsByTagName("table")[0];
          // 也可以創建一個,并添加到DOM樹中
          var table = document.createElement("table");
          document.body.appendChild(table);
          var caption = table.createCaption();
          caption.innerHTML = "Web前端開發課程";
          table.deleteCaption();

          createTHead():返回表元素的tHead對象,如果表元素中沒有<thead>,則創建并返回;注意:如果不存在<thead>,該方法創建<thead>并直接插入表中;

          deleteTHead():移除表元素中的<thead>;

          var thead = table.createTHead();  // 如果不存在,則創建
          console.log(thead);
          var row = thead.insertRow(0);
          row.insertCell(0);
          row.insertCell(1);
          row.insertCell(2);
          table.deleteTHead();

          createTFoot():返回表元素的tHead對象,如果表元素中沒有<thead>,則創建并返回;

          deleteTFoot():移除表元素中的<tfoot>;

          var tfoot = table.createTFoot();
          console.log(tfoot);
          var row = tfoot.insertRow(0);
          row.insertCell(0);
          row.insertCell(1);
          row.insertCell(2);
          table.deleteTFoot();

          createTBody()方法:創建并返回表元素的<tbody>;

          注意:與createTHead()、createTFoot()方法的不同的是,createTBody()可以創建多個<tbody>元素,新創建的<tbody>在最后位置;

          新創建的<tbody>元素會被保存到tBodies集合中;

          var tbody = table.createTBody();
          console.log(tbody);
          var row = tbody.insertRow(0);
          row.insertCell(0);
          row.insertCell(1);
          row.insertCell(2);
          console.log(table.tBodies);

          insertRow(index):向rows集合中在指定位置插入行;即在表元素中index位置插入新行<tr>,并返回對該新行的類型為HTMLTableRowElement對象;

          table及tbody都可以調用該方法;

          如果一個表有多個<tbody>元素,默認情況下,新行將插入到最后的<tbody>;

          var row = table.insertRow(0);  // 第一行
          console.log(row);
          table.insertRow();  // 最后一行
          table.insertRow(-1);  // 最后一行
          table.insertRow(table.rows.length);  // 最后一行
          // 如果存在第二個<body>,并且指定的index=4位于該<body>中,則在此處添加
          table.insertRow(4);  
          console.log(table.rows);

          要將行插入特定的<tbody>,先取得該<tbody>對象,再使用該對象執行insertRow()方法;但index不能超過此<tbody>的索引下界;

          var tbody = table.tBodies[0];
          tbody.insertRow();  // 在第一個<body>的最后添加新行
          tbody.insertRow(table.rows.length); // 異常 
          deleteRow(index):刪除指定位置的行;如果 index 值為 -1,最后一行會被移除;
          table.deleteRow(1);
          var tbody = table.tBodies[1];
          tbody.deleteRow(1);

          HTMLTableRowElement接口對象:

          該類型表示表格中的一行(<tr>),它定義了若干操作當前行的屬性和方法;

          rowIndex屬性:返回該行在整個表中的邏輯位置,即索引,如果該行不屬于表,則返回-1;

          var row = table.rows[1];
          console.log(row.rowIndex);  // 1
          var tbody = table.tBodies[1];
          var row = tbody.rows[1];
          console.log(row.rowIndex);  // 4

          sectionRowIndex屬性:返回該行在所屬部分(如<thead>、<tbody>和<tfoot>部分)中的邏輯位置,如果該行不屬于某部分,則返回-1;

          var row = table.rows[1];
          console.log(row.sectionRowIndex);  // 1
          var tbody = table.tBodies[1];
          var row = tbody.rows[1];
          console.log(row.sectionRowIndex);  // 1

          cells:返回某個行中的所有單元格的HTMLCollection集合;該集合中保存著類型為HTMLTableCellElement的cell對象;

          var row = table.rows[1];
          console.log(row.cells);  // HTMLCollection
          console.log(row.cells[0]);

          insertCell(index):向cells集合中的指定位置插入一個單元格,即在<tr>的index位置插入<td>,返回對新插入單元格的引用;如果index值為空或者為-1或者等于當前行中單元格的數目,則新的單元格將被追加到當前行的最后;

          插入的新Cell對象,可以使用其他DOM方法添加子元素或內容;

          var row = table.insertRow(-1);
          var cell1 = row.insertCell(0);
          cell1.appendChild(document.createTextNode("4"));
          var cell2 = row.insertCell(1);
          cell2.innerHTML = "Web開發";

          該方法不能創建<th>元素,如果需要創建<th>,必須使用document.createElement()方法及Node.insertBefore()或相關的方法來創建和插入<th>元素;

          deleteCell(index):刪除行中給定位置的單元格;

          row.deleteCell(0);

          HTMLTableCellElement接口:

          表示表元素中的單元格,包括<th>及<td>元素;其繼承自HTMLElement接口;

          • cellIndex屬性:只讀,返回該單元格在cells集合中的位置;
          • colSpan屬性:單元格跨越的列數;
          • rowSpan屬性:單元格跨越的行數;
          var row = table.insertRow();
          var cell = row.insertCell();
          cell.innerHTML = "Web前端開發";
          console.log(cell.cellIndex); // 0
          cell.colSpan = "3";  // 跨3列
          var cell = table.rows[1].cells[1];
          cell.rowSpan = 2;  // 跨行
          table.rows[2].deleteCell(2);

          使用這些屬性和方法,可以極大地減少創建表格所需的代碼量,如:

          var table = document.createElement("table");
          table.border = "1";
          table.width = "600px";
          var caption = table.createCaption();
          caption.innerHTML = "Web前端開發課程";
          var thead = table.createTHead();
          var row = thead.insertRow();
          var th1 = document.createElement("th");
          th1.appendChild(document.createTextNode("序號"));
          row.appendChild(th1);
          var th2 = document.createElement("th");
          th2.appendChild(document.createTextNode("課程"));
          row.appendChild(th2);
          var tbody = table.createTBody();
          tbody.insertRow();
          tbody.rows[0].insertCell();
          tbody.rows[0].cells[0].appendChild(document.createTextNode("1"));
          tbody.rows[0].insertCell();
          tbody.rows[0].cells[1].appendChild(document.createTextNode("HTML"));
          tbody.insertRow();
          tbody.rows[1].insertCell();
          tbody.rows[1].cells[0].appendChild(document.createTextNode("2"));
          tbody.rows[1].insertCell();
          tbody.rows[1].cells[1].appendChild(document.createTextNode("CSS"));
          var tfoot = table.createTFoot();
          tfoot.insertRow();
          var cell = tfoot.rows[0].insertCell();
          cell.colSpan = 2;
          cell.align = "right";
          cell.innerHTML = "由大師哥王唯主講";
          document.body.appendChild(table);

          生成簡單的空表格:

          <style>
          #mytable{width: 400px; border: 1px solid lightgreen;}
          #mytable td{padding: .5em; border: 1px solid lightgreen;}
          </style>
          <script>
          function MyTable(id, caption, rows, cols){
              this.id = id ? id : "table";
              this.caption = caption ? caption : undefined;
              this.rows = rows ? rows : 2;
              this.cols = cols ? cols : 2;
              var table = document.createElement("table");
              table.id = this.id;
              if(this.caption){
                  var _caption = table.createCaption();
                  _caption.innerText = this.caption;
              }
              for(var i=0; i<this.rows; i++){
                  var _rows = table.insertRow();
                  for(var j = 0; j < this.cols; j++){
                      var _cell = _rows.insertCell();
                      _cell.appendChild(document.createTextNode(""));
                  }
              }
              return table;
          }
          var t = new MyTable("mytable","我的表格",4,3);
          document.body.appendChild(t);
          </script>

          控制臺表格:

          console.table(data [, columns])方法:

          將數據以表格的形式顯示;這個方法需要一個必須參數data,data必須是一個數組或者是一個對象;

          它會把數據data以表格的形式打印出來,數組中的每一個元素(或對象中可枚舉的屬性)將會以行的形式顯示在表格中;

          // 打印一個由字符串組成的數組
          console.table(["HTML","CSS","Javascript"]);

          表格的第一列是index,如果數據data是一個數組,那么這一列的單元格的值就是數組的索引,如果數據是一個對象,那么它們的值就是各對象的屬性名稱;;

          // 打印一個屬性值是字符串的對象
          function Person(firstName, lastName){
              this.firstName = firstName;
              this.lastName = lastName;
          }
          var p = new Person("王","唯");
          console.table(p);

          打印復合的參數類型:

          如果需要打印的元素在一個數組中,或者需要打印的屬性在一個對象,并且他們本身就是一個數組或者對象,則將會把這個元素顯示在同一行,每個元素的成員占一列;

          // 二元數組的打印
          var people = [["wang","wei"],["jing","jing"],["juan","zi"]];
          console.table(people);
          // 打印一個包含對象的數組
          var wang = new Person("王","唯");
          var jing = new Person("靜","靜");
          var juan = new Person("娟","子");
          // 如果數組中包含該對象,打印出來的列標簽將是該對象的屬性名
          console.table([wang, jing, juan]);
          // 打印屬性名是對象的對象
          var family = {};
          family.mother = jing;
          family.father = wang;
          family.daughter = juan;
          console.table(family);

          選擇要隱藏的列:

          console.table()會把所有元素羅列在每一列,可以使用columns參數選擇要顯示的列的子集;其是一個包含列的名稱的數組;

          // 一個對象數組,只打印 firstName
          console.table([wang, jing, juan],"firstName");

          按列重新排序:

          可以點擊每列的頂部標簽來重排輸出的表格;

          Web前端開發之Javascript-零點程序員-王唯

          擊鼠標這個操作,相信很多職場人都非常的熟悉。我們可以用它來快速打開某個程序。不會真的有人打開程序,還是點一下鼠標左鍵然后再點一下鼠標右鍵吧!效率太低了!

          在Excel中雙擊鼠標的作用非常多,大多數都是一些小功能,但是卻可以快速的提高我們的工作效率,今天就跟大家分享幾個Excel比較實用的雙擊小技巧吧

          想要學習Excel,這里↑↑↑↑

          1.鎖定格式刷

          選中一個格式后,雙擊格式刷,就能鎖定格式刷,這樣的話就能快速設置多個區域的格式,只有按下ESC鍵,才會退出格式刷

          2.填充公式

          公式輸入完畢后,把鼠標放在單元格的右下角,鼠標就會變為一個黑色的十字,這個時候雙擊下,就能快速地填充公式,再也不用一行一行的拖動了。

          3.設置序號

          首先在單元格中輸入1跟2,然后選擇1跟2,將鼠標放在2這個單元格的右下角,當鼠標變為黑色十字,直接雙擊填充即可快速設置序號

          4.設置為合適的列寬

          首先點擊列標號然后選擇序號的整列數據,隨后將鼠標放在兩列之間的位置,鼠標變為左右方向的黑色箭頭,直接雙擊下,就會將表格調整為合適的列寬

          5.設置為合適的行高

          與上一個操作類似,只需根據列標號來選擇數據,隨后將鼠標放在兩行之間,鼠標會變成一個上下方向的黑色箭頭,直接雙擊下即可。

          6.更改Sheet名稱

          雙擊Sheet名稱,就能快速的更改Sheet名稱,再也不用點擊鼠標右鍵來一步一步的更改的。

          7.取消隱藏區域

          只需將鼠標放在隱藏區域的行標號或者列標號處,這樣的話鼠標就會變為上下或者左右的黑色箭頭,只需雙擊一下,就能快速的取消隱藏的數據

          8.顯示與隱藏功能區

          功能區顯示狀態下,我們只需雙擊任意一個功能組名稱(在這里雙擊開始)就能將功能組隱藏掉,再次雙擊工作組名稱,隱藏的功能區就會顯示出來了

          9.縮小或者全屏顯示Excel

          全屏狀態下雙擊Excel最上面的右側區域,就能快速的將Excel縮小,再次雙擊這個位置,Excel就會又變為全屏顯示

          10.快速關閉Excel

          雙擊Excel的左上角,就能快速的調出Excel的關閉界面,這個感覺作用不是太大,聊勝于無吧~

          11.顯示公式引用

          雙擊Excel公式,被公式引用的單元格就會被設置顏色,就能快速看出公式引用了哪些單元格,

          12.打開圖表設置

          Excel圖表的元素還是比較多的,我們想要設置那一部分,就直接在其上方雙擊鼠標,就能在右側顯示它對應的設置窗口,還是非常方便的。

          以上就是今天分享的12個Excel中雙擊的小技巧,你還知道哪些實用的雙擊小技巧呢?可以留言討論哦~

          我是Excel從零到一,關注我,持續分享更多Excel技巧


          主站蜘蛛池模板: 亚洲国产成人久久综合一区| 国产精品亚洲综合一区在线观看 | 久久久不卡国产精品一区二区| 亚洲一区中文字幕久久| 国产女人乱人伦精品一区二区| 国产成人无码一区二区在线播放 | 亚洲一区二区三区无码影院| 久久蜜桃精品一区二区三区| 无码人妻精品一区二区| 国产伦精品一区二区免费| 成人精品一区二区三区校园激情 | 日本成人一区二区| 一区二区三区免费视频观看| 在线精品亚洲一区二区| 射精专区一区二区朝鲜| 国产成人精品无码一区二区三区| 国产成人一区二区三区电影网站 | 精品无人乱码一区二区三区 | 国产精品自在拍一区二区不卡| 少妇一晚三次一区二区三区| 亚洲一区在线视频| 久久久老熟女一区二区三区| 伊人久久大香线蕉av一区| 好湿好大硬得深一点动态图91精品福利一区二区| 无码日本电影一区二区网站| 亚洲AV噜噜一区二区三区| 精品一区二区视频在线观看| 69福利视频一区二区| 亚洲一区免费观看| 精品人无码一区二区三区| 一区二区三区观看免费中文视频在线播放| 韩国福利一区二区三区高清视频| 一区二区三区免费在线视频| 日韩精品午夜视频一区二区三区| 国产成人一区二区三区| 日韩在线视频一区| 国产伦精品一区二区三区无广告 | 在线播放偷拍一区精品| 日本高清一区二区三区| 国产av一区最新精品| 精产国品一区二区三产区|