Mysql高級05-SQL語句

来源:https://www.cnblogs.com/Open-ing/archive/2020/07/24/12105305.html
-Advertisement-
Play Games

SQL 庫結構操作SQL 1、查看所有資料庫 show databases; 2、切換使用資料庫 use 資料庫名; 3、創建資料庫 create database 資料庫名; create database 資料庫名 charset 'utf8'; 4、刪除資料庫 drop database 數據 ...


SQL

庫結構操作SQL

 1、查看所有資料庫

show databases;

2、切換使用資料庫

use 資料庫名;

 3、創建資料庫

create database 資料庫名;
create database 資料庫名 charset 'utf8';

4、刪除資料庫

drop database 資料庫名;

表結構操作SQL

 1、在某資料庫中查看所有表格

show tables; 

 2、查看表結構

desc 表名稱;

3、刪除表結構

drop table 表名稱;

4、修改表名稱

rename table 舊名稱 to 新名稱;

5、修改表欄位

(1)增加一個欄位

alter table 表名稱 add  欄位名稱  數據類型; #預設在最後
alter table 表名稱 add  欄位名稱  數據類型 after 另一個欄位名; 
alter table 表名稱 add  欄位名稱  數據類型 first;

(2)刪除一個欄位

alter table 表名稱 drop  欄位名稱;

(3)修改欄位的名稱

alter table 表名稱 change  舊欄位名稱  新欄位名稱 數據類型;

(4)修改欄位的數據類型

alter table 表名稱 modify  欄位名稱  數據類型;

(5)修改欄位的位置

alter table 表名稱 modify  欄位名稱  數據類型 after 另一個欄位名; #指定特定位置
alter table 表名稱 modify  欄位名稱  數據類型 first;

6、創建表格

create table 表名稱(
   欄位名 數據類型 primary key auto_increment,   #(自增)必須是整數列、必須是鍵列、只能有一列
   欄位名 數據類型 unique key not null,          #(非空)值是非空、可以有多列
 欄位名 數據類型
default 預設值,          #(預設值)設置預設值、可以有多列 primary key(欄位名...),               #(主鍵)必須唯一、非空、只能有一個  unique key(欄位名...),     #(唯一鍵)值唯一、不要求必須非空、可以有多個 foreign key(參考列名) references 主表名(被參考列名) 【on update xxx on delete yyy】 #從表上   #(外鍵)限定兩個表的兩個欄位之間的值或一個表的兩個欄位之間的值的約束關係              );

7、建表後修改表約束

(1)修改主鍵

alter table 表名稱 add primary key (欄位名...);

(2)刪除主鍵

alter table 表名稱 drop primary key;

(3)修改唯一鍵

alter table 表名稱 add unique key(欄位列表);

(4)刪除唯一鍵,是通過刪除對應的索引來刪除的

alter table 表名稱 drop index 索引名;

(5)修改表非空

alter table 表名稱 modify 欄位名 數據類型 not null;

(6)取消非空約束

alter table 表名稱 modify 欄位名 數據類型 【default 預設值】;

(7)修改預設值

alter table 表名稱 modify 欄位名 數據類型 default 預設值;

(8)取消預設值

alter table 表名稱 modify 欄位名 數據類型 【not null】;

註意:當通過修改語句,增加或取消預設值或非空,如果要保留預設值或非空約束,還得寫上。

(9)修改自增

alter table 表名稱 modify 欄位名 數據類型 auto_increment;

(10)刪除自增

alter table 表名稱 modify 欄位名 數據類型;

(11)修改外鍵

alter table 主表名稱  add foreign key (主表列) references 被引用表名(被引用列名) 【on update xx on delete yy】;

(12)刪除外鍵

alter table 主表名稱 drop foreign key 外鍵約束名;    約束英文名為(CONSTRAINT_NAME)

數據操作

1、為所有欄位賦值,一次添加多行或一行

insert into 表名稱 values(值1,值2...);  
insert into 表名稱 values(值1,值2...),(值1,值2...),...;

2、為指定欄位賦值,一次添加多行或一行

insert into 表名稱(欄位1,欄位2...) values(值1,值2...);
insert into 表名稱(欄位1,欄位2...) values(值1,值2...),(值1,值2...),...;

#要求值的數量、順序與表結構的數量、順序一一對應

#預設值的位置可以寫default,自增的位置寫null

1、刪除整張表的數據

delete from 表名稱;
truncate 表名稱;

2、刪除滿足條件的行

delete from 表名稱 where 條件; 

#delete是一條一條刪除。truncate是把整張表drop掉,重新建一張。
#delete如果在事務中,可以回滾。truncate是無法回滾。

1、修改所有行的部分欄位

update 表名稱 set 欄位名 = 欄位值, 欄位名 = 欄位值...; 

2、修改滿足條件的行

update 表名稱 set 欄位名 = 欄位值, 欄位名 = 欄位值... where 條件;

select * from 表名稱;

運算符

is null
is not null

與:&& and
或:|| or

between .. and ..
in(....)

not between .. and ..
not in(....)

like 配合 '%或_'
_代表一個字
%代表任意個字

條件查詢

只返回不同的值

select distinct name from users;

返回按照第1列的升序排序,desc降序,如果想在多個列上進行降序排序,必須對每一列指定DESC關鍵字。

select *  from  users order by 1desc】;

返回從第1行起的5行數據,第一個被檢索的行是第0行

select * from users limit 0,5;

返回 “xiaoming-小明” 拼接字樣的一列數據

select concat (username,'-',NAME) from users;

查看某個表的索引

show index from 表名稱;

查看某個表的所有約束

select * from information_schema.table_constraints where table_name = '表名稱';

完整語句

select distinct
    <select_list>
from
    <left_table> <join_type>
join <right_table> on <join_condition>
where
    <where_condition>
group by
    <group_by_list>
having
    <having_condition>
order by
    <order_by_condition>
limit <limit_number>

 

1、外鍵約束的等級
(1)Restrict方式:嚴格模式,預設的模式
(2)No action方式:在mysql和Restrict方式一樣
(3)Set null方式:置空
(4)Cascade方式:級聯

可以分別設置on update xxx on delete yyy。
修改和刪除的約束等級可以相同也可以不同。

2、外鍵約束的操作
(1)建表的順序:先建立主表,再建立從表
(2)添加和修改從表的記錄時,參考列的值必須在被參考列的值的範圍內選擇
例如:添加和修改員工表記錄時,員工所在的部門的選擇,要在部門表的編號範圍內
(3)修改和刪除主表的記錄時,要看約束等級,
如果是Restrict方式,那麼只要被參考列的某個值被引用了,就不能隨意刪或改。
如果是Set null方式方式,那麼主表對應的值被修改和刪除了,從表對應的記錄就設置為null
如果是Cascade方式,那麼主表對應的值被修改或刪除了,從表對應的記錄跟著修改或刪除。
(4)刪除表順序:先刪從表,再刪主表

 


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

-Advertisement-
Play Games
更多相關文章
  • 目錄 一、目的 二、準備 2.1 硬體 2.2 軟體 2.3 網路 結果 三、過程 3.1 鏡像製作 1.選擇鏡像 2. 製作啟動盤 3.2 安裝系統 1. 換源 2. 配置SSH 3. 設置靜態IP 4. 宿主機配置 5. 查看網卡 6. 修改配置文件 6.1 修改 6.2 新增 7. 重啟網路 ...
  • 痞子衡這幾天在支持一個i.MXRT1050客戶項目,客戶遇到了軟複位無法從32MB NOR Flash重新啟動的問題。這個客戶是做醫療設備的,已經基於i.MXRT做出一款成功的產品了,所以客戶其實有豐富的i.MXRT使用經驗。目前調試的項目是客戶的第二款產品,這個軟複位無法啟動問題已經困擾他們很久,... ...
  • 大家都知道,當我們的 Linux 系統電腦出現問題時,需要對其排除故障,首先需要做的是找出電腦的硬體信息。下麵介紹一個簡單易用的應用程式——HardInfo,你可以利用它來顯示你電腦的每個硬體方面的信息,它的好處就是不必去拆分電腦單獨查看每個部件。 安裝HardInfo工具 有的小伙伴會問如何去 ...
  • 最近,使用ubuntu 發現預設不能使用 x11轉發。配置修改如下: sudo vim /etc/ssh/sshd_config:修改服務端的sshd X11Forwarding yes sudo systemctl restart sshd.service sudo vim /etc/ssh/ss ...
  • 最近出現的許多記憶體問題都以3D Xpoint的形式出現在ReRAM,MRAM和PCRAM上。但是鐵電RAM(FRAM)在小型利基設備中得到了成功。去年對新興記憶體年報,吹捧的ReRAM,MRAM和PCRAM的三個關鍵新興的記憶保持在眼睛上。但它也指出,FRAM已在諸如大眾運輸卡,游戲系統和功率計之類的 ...
  • ​Nginx 是一個很強大的高性能Web和反向代理服務,它具有很多非常優越的特性,在連接高併發的情況下,Nginx是Apache服務不錯的替代品。其特點是占有記憶體少,併發能力強,事實上nginx的併發能力在同類型的網頁伺服器中表現較好,因此國內知名大廠例如:淘寶,京東,百度,新浪,網易,騰訊等等都在 ...
  • 1、下載https://github.com/alibaba/nacos/releases nacos-server-1.3.1.tar.gz 源碼包2、上傳到liunx伺服器 /usr/local下3、 解壓tar -zxvf nacos-server-1.3.1.tar.gz4、進入解壓後的na ...
  • 一 查看證書 1.1 查看過期時間-方式一 1 [root@master01 ~]# tree /etc/kubernetes/pki/ 2 [root@master01 ~]# for tls in `find /etc/kubernetes/pki -maxdepth 2 -name "*.cr ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...