Maria-DB

来源:https://www.cnblogs.com/tony3154/archive/2019/01/14/10263776.html
-Advertisement-
Play Games

mysql客戶端可用選項: -A, --no-auto-rehash 禁止補全 -u, --user= 用戶名,預設為root -h, --host= 伺服器主機,預設為localhost -p, --passowrd= 用戶密碼,建議使用-p,預設為空密碼 -P, --port= 伺服器埠 -S ...


mysql客戶端可用選項:
  -A, --no-auto-rehash 禁止補全
  -u, --user= 用戶名,預設為root
  -h, --host= 伺服器主機,預設為localhost
  -p, --passowrd= 用戶密碼,建議使用-p,預設為空密碼
  -P, --port= 伺服器埠
  -S, --socket= 指定連接socket文件路徑
  -D, --database= 指定預設資料庫
  -C, --compress 啟用壓縮
  -e “SQL“ 執行SQL命令
  -V, --version 顯示版本
  -v --verbose 顯示詳細信息
  --print-defaults 獲取程式預設使用的配置

 

安全模式:

  mysql  -uroot -pcentos -U  安全模式進入,避免批量操作,沒有where條件會報錯

  可以將-U選項寫入alisa 或者腳本里或者寫入/etc/my.cnf.d/client.cnf

  vim /etc/my.cnf.d/client.cnf 

     [client]

  safe_updates

 

創建遠程用戶

create user wang@'192.168.1.%'  identified by 'centos';   創建用戶wang只能從192.168.1網段登陸,密碼為centos,也可以指定只能某IP地址登陸

用戶遠程連接

mysql -uwnag -h'192.168.1.100' -pcentos -P3306;    連接IP地址為192.168.1.100埠為3306的資料庫

 

 刪除用戶:

  delete from mysql.user where user='wang';

 

在/etc/my.cnf.d/client.cnf  里添加賬戶和密碼,將這組賬號密碼設置為預設登陸設置,登陸時可省去密碼和賬戶,預設以這組賬號密碼登陸

mysql --print-defaults; 可以查看預設賬號密碼

   update user set password=password('centos') where user='root';修改密碼,password('centos')加密centos,在資料庫中不明文顯示

在每次修改過資料庫許可權以後,都要刷新以啟用新許可權

 

授權:

  grant  select,delete on   

  grant all on *.* to wang@'192.168.1.%' identitied by 'centos';  授權wang可以在這個網段登陸,擁有所有資料庫和表的所有許可權

  show grants for wang@'192.168.1.%';  查看wanng的授權

  revoke delete on *.* from 'wang'@'192.168.1.%;   刪除wang在所有庫和表的delete許可權

在每次修改過資料庫許可權以後,刷新以確認新許可權啟用

 

 

 

 

 

支持通配符:

  % 匹配任意長度的任意字元

  _ 匹配任意單個字元

 

 

 

SQL語言規範

  在資料庫系統中,SQL語句不區分大小寫(建議用大寫)                      庫名錶名對大小寫敏感

  但字元串常量區分大小寫

  SQL語句可單行或多行書寫,以“;”結尾

  關鍵詞不能跨多行或簡寫

  用空格和縮進來提高語句的可讀性

  子句通常位於獨立行,便於編輯,提高可讀性

  註釋:

    SQL標準:

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

      -- 註釋內容 單行註釋,註意有空格

    MySQL註釋:

      #

 

    select * mysql.user\G ;     豎列顯示

  create database  [if not exists] 'db_name';    創建資料庫[如果不存在就創建]

  drop database  [if exists]  'db_name';      刪除資料庫[如果存在就刪除]

  CHARACTER SET 'character set name';      創建資料庫時設定字元集

  show variables like '%character_set%';      查看預設字元集

  SHOW COLLATION             查看排序規則

  create table [if not exists] 'table_name' (col1 type1 修飾符,col2 type2 修飾符,...)

  show table status from mysql\G;   顯示mysql資料庫裡面所有的表結構,豎列顯示

  show table status like 'table'\G;       查看表信息

  show engines;        查看資料庫支持的引擎

  mysql -uroot -pcentos -S /mysqldb/3306/socket/mysql.sock  -e 'show databases;'  不進入資料庫執行命令

  desc tlb_name;查看表格式

  select name as 姓名 from statudent;   使用as取別名,支持中文

 

  將資料庫里的表文件獨立放置

  vim /mysqldb/3306/etc/my.cnf 

  在[mysqld]下添加  innodb_file_per_table   

  導入資料庫文件,每個表將獨立存放

 

 

數據類型:

1、整型

  tinyint(m) 1個位元組 範圍(-128~127)

  smallint(m) 2個位元組 範圍(-32768~32767)

  mediumint(m) 3個位元組 範圍(-8388608~8388607)

  int(m) 4個位元組 範圍(-2147483648~2147483647)

  bigint(m) 8個位元組 範圍(+-9.22*10的18次方)

  取值範圍如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值範圍為(0~255)

  int(m)里的m是表示SELECT查詢結果集中的顯示寬度,並不影響實際的取值範圍,規定了MySQL的一些交互工具(例如MySQL命令行客戶端)用來顯示字元的個數。對於存儲和計算來說,Int(1)和Int(20)是相同的

  BOOL,BOOLEAN:布爾型,是TINYINT(1)的同義詞。zero值被視為假。非zero值視為真

 

2、浮點型(float和double),近似值  

  float(m,d) 單精度浮點型 8位精度(4位元組) m總個數,d小數位

  double(m,d) 雙精度浮點型16位精度(8位元組) m總個數,d小數位

  設一個欄位定義為float(6,3),如果插入一個數123.45678,實際資料庫里存的是123.457,但總個數還以實際為準,即6位

 

3、定點數

  在資料庫中存放的是精確值,存為十進位

  decimal(m,d) 參數m<65 是總個數,d<30且 d<m 是小數位

  MySQL5.0和更高版本將數字打包保存到一個二進位字元串中(每4個位元組存9個數字)。例如,decimal(18,9)小數點兩邊將各存儲9個數字,一共使用9個位元組:小數點前的數字用4個位元組小數點後的數字用4個位元組,小數點本身占1個位元組,

  浮點類型在存儲同樣範圍的值時,通常比decimal使用更少的空間。float使用4個位元組存儲。double占用8個位元組 

  因為需要額外的空間和計算開銷,所以應該儘量只在對小數進行精確計算時才使用decimal——例如存儲財務數據。但在數據量比較大的時候,可以考慮使用bigint代替decimal

 

4、字元串(char,varchar,_text)

  char(n) 固定長度,最多255個字元

  varchar(n)可變長度,最多65535個字元

  tinytext可變長度,最多255個字元

  text 可變長度,最多65535個字元

  mediumtext 可變長度,最多2的24次方-1個字元

  longtext可變長度,最多2的32次方-1個字元

  BINARY(M) 固定長度,可存二進位或字元,長度為0-M位元組

  VARBINARY(M) 可變長度,可存二進位或字元,允許長度為0-M位元組

  內建類型:ENUM枚舉, SET集合

     ENUM枚舉:單選其中一項

     SET集合:多選,可以隨意選幾項   

修飾符:

  所有類型:

    NULL 數據列可包含NULL值

    NOT NULL 數據列不允許包含NULL值

    DEFAULT 預設值

    PRIMARY KEY 主鍵

    UNIQUE KEY 唯一鍵  

    CHARACTER SET name 指定一個字元集  

  數值型:

    AUTO_INCREMENT 自動遞增,適用於整數類型

    UNSIGNED 無符號

示例:

  CREATE TABLE students (id int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED);

  DESC students;

  CREATE TABLE students2 (id int UNSIGNED NOT NULL ,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));  

 

 

 

表操作:

  desc 'tbl_name';           查看表格式

  DROP TABLE [IF EXISTS] 'tbl_name';   刪除表

  ALTER TABLE 'tbl_name'       修改表

    欄位:

      添加欄位:add

      ADD col1 data_type [FIRST|AFTER col_name]

      刪除欄位:drop

      修改欄位:

      alter(預設值), change(欄位名), modify(欄位屬性)

    索引:

      添加索引:add index

      刪除索引: drop index

  create index index_name on students(name);   在students表的name欄位上添加索引,名為index_name   

  drop index index_name on students;   在students表上刪除索引名為index_name

  truncate table students;    刪表,速度最快的方式

 

  create table newstudents select * from students; 根據舊表創建新表,但是會丟失主鍵和一些信息,原理是根據查詢結果創建新表

  

  create database students;    創建資料庫,

  use students;    切換資料庫

  create table class1 (id int primary key,name char(20) not null , sex enum('m','f') default 'm'); 創建表

  desc class1;  查看表信息

  insert class1 (id,name) values (1,'mage');     添加表記錄

  insert class1(id,name) values (2,'zhaohuan') ,(3,'liuhuan');

  insert class1(id,name,sex) values (4,'lili','m') ,(5,'zhanghuan','m');

  update class1 set sex='f' where id=4;   修改id=4的sex記錄

  delete from class1 where id=1; 刪除id=1的記錄

  select * from students order by age; 預設asc 正序,desc倒序

  select * from students order by age asc;

  排序中NULL值預設優先最高,會排在最前面,在查詢值前加-即可處理為最低優先順序,

  如:select * from students order by -age asc;

  select * from class1 order by age limit 5;   最多顯示5行

  select * from class1 order by age limit 3,5;   跳過前三個,再顯示4個

  select id,name 姓名 from class1 where id between 10 and 20;顯示表裡id在10和20之間的id,name兩項,name使用了別名,省略了as

  select id,name 姓名 from class1 where id >=10 and id <=20; 意義同上

  select id,name 姓名 from class1 where name like 'x%'; 模糊匹配需要通配符_%配合

 

WHERE子句:指明過濾條件以實現“選擇”的功能:

  過濾條件:布爾型表達式

  算術操作符:+, -, *, /, %

  比較操作符:=, !=, <>, <=>, >, >=, <, <=  

  BETWEEN min_num AND max_num

  IN (element1, element2, ...)

  IS NULL

    select * from students where classid is null

  IS NOT NULL

    select * from students where classid is not null

 LIKE: 

  %: 任意長度的任意字元

   _:任意單個字元

  RLIKE:正則表達式,索引失效,不建議使用

  REGEXP:匹配字元串可用正則表達式書寫模式,同上

  邏輯操作符: NOT,AND,OR,XOR

 

函數計算:

  select sum(score) from scores where stuid=1; 計算學號為1的同學的總分數

  select courseid,avg(score) from scores group by courseid;計算每個科目的平均成績

  select courseid,abg(score) from scores group by courseid having crouseid=1;查看科目1的平均成績

    group by    ....    having .... 語法固定

  select courseid,abg(score) from scores group by courseid having crouseid in (1,3)查看科目1和3的平均成績

  

內連接:

  select st.name,sc.score from students as st,scores as sc where st.stuid=sc.stuid;  

  select st.name,sc.score from students as st inner join scores as sc on st.stuid=sc.stuid;   其他寫法用了inner不能用where

  select st.name,sc.score from students as st join scores as sc on st.stuid=sc.stuid;  inner可以省略

 

  select st.name,sc.score from students as st,scores as sc where st.stuid=sc.stuid and sc.score> 90;大於90分以上的學生

 

外連接:

  select st.name,sc.score from students as st right outer join scores as sc on st.stuid=sc.stuid; 右外連接,顯示右邊表所有內容

  select st.name,sc.score from students as st left outer join scores as sc on st.stuid=sc.stuid;   左外連接,顯示左邊表所有內容

 

自連接:

  select e2.name,e1.name as 上司 from emp as e1 inner join emp as e2 on e1.id=e2.leaderid; 

  

union:將兩個不同結構的表合併輸出顯示,搜索的項必須是相同的

  select t.tid,t.name from teachers as t union select s.stuid,s.name from students as s;

 cross join:  由兩個表生成第三個表,並添加了空白的評分列

  select c.course,t.name," " as 評分 from teachers as t cross join courses as c;

子查詢:查詢顯示比id=9的同學年紀更大的同學

  select * from students where age > (select age from students where stuid=9);  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 對於使用校園網的學生來說,安裝好Ubuntu之後,很多人需要用 DrClient 客戶端來上網,那麼怎麼操作呢, 這裡介紹 DrClient 客戶端在Ubuntu上的使用方法, 首先下載 對應版本的軟體包,,有 Linux 64位 和 Linux 32位,然後解壓,打開文件夾, 這個時候雙擊 DrC ...
  • 《Orange'S 一個操作系統的實現》源代碼 《Linux 0.11 內核完全註釋》源代碼 閑來無事,在 64 位 ubuntu-16 中,把 Orange'S 和 linux-0.11 又重新實現了一遍,運行無誤。 這兩本書,可在百度中搜索獲取,自不待言。 Orange‘S 需要註意的是,為 < ...
  • 目錄 一、製作linux啟動盤 1.1. 準備工作 1.2. 製作linux系統U盤 二、使用U盤安裝Centos7.6 2.1. 使用U盤啟動 2.2. 更改安裝配置 2.3. 開始安裝 回到頂部 一、製作linux啟動盤 使用光碟刻錄軟體將系統鏡像刻錄到U盤後使用U盤安裝系統。 1、 準備 1個 ...
  • 自上而下從應用層到底層分析 app: QQ、微信、游戲、控制界面 GUI圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶介面):QT(C++)、Android(java)、GTK(C) 文件系統 內核:Linux、Android、windows Bootlo ...
  • [root@nfs01 backup]# rsync -avz /backup [email protected]::backupPassword: @ERROR: auth failed on module backuprsync error: error starting clie ...
  • 博主的電腦是Win10系統,在修改完系統的用戶文件夾名後,桌面右擊出現了反應卡頓的現象,並且點擊輸入法,也變得卡頓。問題解決後,於是想簡單記錄一下。 還是註冊表的問題,使用Win+R快捷鍵,打開運行,輸入regedit,開啟註冊表編輯器,按照路徑順序打開 HKEY_CLASSES_ROOT\Dire ...
  • 一. 回憶主從複製的一些缺點 上節說到主從複製的一些問題 我們再來回憶一下 主從複製,增加了一個資料庫副本,從資料庫和主資料庫的數據最終會是一致的 之所以說是最終一致,因為mysql複製是非同步的,正常情況下主從複製數據之間會有一個微小的延遲 通過這個資料庫副本看似解決了資料庫單點問題,但並不完美 因 ...
  • 如何進行讀寫分離 由開發人員根據所執行的SQL類型連接不同的伺服器 由資料庫中間層實現讀寫分離 讀寫分離時,需要註意,對於實時性要求比較高的數據,不適合在從庫上查詢(因為主從複製存在一定延遲(毫秒級)),比如庫存就應該在主庫上查詢,如果放在從庫上查詢,可能會存在超賣的情況 由開發人員根據所執行的SQ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...