sql基本語法+實驗實踐

sql語法

注釋:

  1. 單行
--注釋內容# 注釋內容
  1. 多行

    /*
    注釋內容
    */
    

數據定義語言DDL

  1. 查詢所有數據庫

    show databases;
    

    注意是databases而不是database。

  2. 查詢當前數據庫

    select database();
    
  3. 創建數據庫

    create database [if not exists] 數據庫名 [default charset 字符集] [collate 排序規則];
    
  4. 刪除數據庫

    drop database [if exists] 數據庫名;
    
  5. 切換數據庫

    use 數據庫名;
    

表操作

表的查詢創建

  1. 查詢當前數據庫所有表

    show tables;
    

    注意是tables而不是table。

  2. 查看指定表結構

    desc 表名;
    
  3. 查詢指定表的建表語句

    show create table 表名;
    
  4. 創建表結構

    create table 表名(字段1 字段1類型 [comment 字段1注釋],字段2 字段2類型 [comment 字段2注釋],字段3 字段3類型 [comment 字段3注釋],......字段n 字段n類型 [comment 字段m注釋],
    )[comment 表注釋];
    

    注意:[…]內是可選參數,最后一個字段后面沒有逗號。

表的修改操作

  1. 添加字段

    alter table 表名 add 字段名 類型(長度) [comment 注釋] [約束];
    
  2. 修改數據類型

    alter table 表名 modify 字段名 新數據類型(長度);
    
  3. 修改字段名和字段類型

    alter table 表名 change 舊字段名 新字段名 類型(長度) [comment 注釋] [約束];
    
  4. 刪除字段

    alter table 表名 drop 字段名;
    
  5. 修改表名

    alter table 表名 rename to 新表名;
    

表的刪除操作

  1. 刪除表

    drop table [if exists] 表名;
    
  2. 刪除指定表,并重新創建表

    truncate table 表名;
    

數據操作語言DML

添加數據

  1. 給指定字段添加數據

    insert into 表名 {字段名1, 字段名2,...} values{值1,2, ..};
    
  2. 給全部字段添加數據

    insert into 表名 values (1,2, ...);
    
  3. 批量添加數據

    insert into 表名 (字段1, 字段2, ...) values (1,2, ...),(1,2, ...);
    
    insert into 表名 values (1,2, ...), (1,2, ...);
    

修改數據

修改數據的具體語法

update 表名 set 字段名1 =1, 字段名2 =2, ..{where 條件};

刪除數據

delete from 表名 {where 條件};

數據查詢語言DQL

  1. 查詢多個字段

    select 字段1, 字段2, 字段3,... from 表名;
    
    select * from 表名;
    

    ? 注意:*號代表查詢多有字段,在實際開發中盡量少用(不直觀、影響效率)。

  2. 字段設置別名

    select 字段1 [as 別名1], 字段2 [as 別名2], ... from 表名;
    
    select 字段1 [別名1], 字段2 [別名2], ... from 表名;
    
  3. 去除重復記錄

    select distinct 字段列表 from 表名;
    

    實驗

    實驗要求:
    請添加圖片描述
    請添加圖片描述
    請添加圖片描述
    請添加圖片描述
    實驗代碼:

SHOW DATABASES;#1.使用SQL語句創建數據庫studentsdb。
CREATE DATABASE if not exists studentsdb;#2. 使用SQL語句選擇studentsdb為當前使用數據庫。
USE studentsdb;#表student_info
#3.使用SQL語句在studentsdb數據庫創建數據表student_info、curriculum、grade,三個表的數據結構如表1-表3所示。
CREATE TABLE student_info(學號 CHAR(4) NOT NULL PRIMARY KEY,姓名 CHAR(8) NOT NULL,性別 CHAR(2),出生日期 DATE,家庭住址 VARCHAR(50)
);#4.使用SQL語句INSERT向studentsdb數據庫的student_info、curriculum、grade表插入數據,各表數據如表4-表6所示。
INSERT INTO student_info VALUES ('0001','張青平','男','2000-10-01','衡陽市東風路77號'),('0002','劉東陽','男','1998-12-09','東陽市八一北路33號'),('0003','馬曉夏','女','1995-05-12','長嶺市五一路763號'),('0004','錢忠理','男','1994-09-23','濱海市洞庭大道279號'),('0005','孫海洋','男','1995-04-03','長島市解放路27號'),('0006','郭小復','男','1997-11-10','南山市紅旗路113號'),('0007','肖月玲','女','1996-12-07','東方市南京路11號'),('0008','張玲瓏','女','1997-12-24','濱江市新建路97號');#7. 使用SQL語句ALTER TABLE為student_info表添加一個名為“備注”的數據列,其數據類型為varchar(50)。
ALTER TABLE student_info ADD 備注 VARCHAR(50);DESC student_info;
SELECT * FROM student_info;
DROP table student_info;#表curriculum
CREATE TABLE curriculum(課程編號 CHAR(4) NOT NULL PRIMARY KEY,課程名稱 VARCHAR(50) NOT NULL,學分 INT
);INSERT INTO curriculum VALUES ('0001','計算機應用基礎',2),('0002','C語言程序設計',2),('0003','數據庫原理及應用',2),('0004','英語',4),('0005','高等數學',4);#5. 使用SQL語句ALTER TABLE修改curriculum表的“課程名稱”列,使之為空。
UPDATE curriculum SET 課程名稱 = '';
SELECT * FROM curriculum;
DROP TABLE curriculum;#表grade
CREATE TABLE grade(學號 CHAR(4) NOT NULL,課程名稱 VARCHAR(50) NOT NULL,分數 INT
);
ALTER TABLE grade ADD PRIMARY KEY (學號,課程名稱);
INSERT INTO grade VALUES 
('0001','0001',80),
('0001','0002',91),
('0001','0003',88),
('0001','0004',85),
('0001','0005',77),
('0002','0001',73),
('0002','0002',68),
('0002','0003',80),
('0002','0004',79),
('0002','0005',73),
('0003','0001',84),
('0003','0002',92),
('0003','0003',81),
('0003','0004',82),
('0003','0005',75);#6. 使用SQL語句ALTER TABLE修改grade表的“分數”列,使其數據類型為decimal(5,2)。
ALTER TABLE grade MODIFY 分數 DECIMAL(5,2);
DESC grade;
SELECT * from grade;
DROP table grade;#8. 使用SQL語句創建數據庫studb,并在此數據庫下創建表stu,表結構與數據與studentsdb的student_info表相同。
CREATE DATABASE if not exists studb;
USE studb;
CREATE TABLE stu(學號 CHAR(4) NOT NULL PRIMARY KEY,姓名 CHAR(8) NOT NULL,性別 CHAR(2),出生日期 DATE,家庭住址 VARCHAR(50)
);
INSERT INTO stu VALUES ('0001','張青平','男','2000-10-01','衡陽市東風路77號'),('0002','劉東陽','男','1998-12-09','東陽市八一北路33號'),('0003','馬曉夏','女','1995-05-12','長嶺市五一路763號'),('0004','錢忠理','男','1994-09-23','濱海市洞庭大道279號'),('0005','孫海洋','男','1995-04-03','長島市解放路27號'),('0006','郭小復','男','1997-11-10','南山市紅旗路113號'),('0007','肖月玲','女','1996-12-07','東方市南京路11號'),('0008','張玲瓏','女','1997-12-24','濱江市新建路97號');
ALTER TABLE stu ADD 備注 VARCHAR(50);
DESC stu;
SELECT * FROM stu;#9. 使用SQL語句刪除表stu中學號為0004的記錄。
DELETE FROM stu WHERE 學號 = '0004';
#10.使用SQL語句更新表stu中學號為0002的家庭住址為“濱江市新建路96號”。
UPDATE stu SET 家庭住址 = '濱江市新建路96號' WHERE 學號 = '0002';
#11.刪除表stu的“備注”列。
ALTER TABLE stu DROP 備注;
SELECT * FROM stu;
#12.刪除表stu。
DROP TABLE stu;
SHOW TABLES;
#13.刪除數據庫studb。
DROP DATABASE studb;
SHOW DATABASES;

注意:為了結果可視化,在問題的實現步驟最后都進行了展示數據庫、表結構或表數據等。
如果有任何問題歡迎提出!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716933.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

備戰藍橋杯Day22 - 計數排序

計數排序問題描述 對列表進行排序,已知列表中的數范圍都在0-100之間。設計時間復雜度為O(n)的算法。 比如列表中有一串數字,2 5 3 1 6 3 2 1 ,需要將他們按照從小到大的次序排列,得到1 1 2 2 3 3 5 6 的結果。那么此時計數排序是…

一:面試流程

面試 項目介紹功能測試接口測試性能測試測試用例 項目介紹 南網智搜是南方電網公司研發的搜索引擎,主要場景Web 端場景有搜索頻道、個人中心、和一些積分活動等,我在里面主要負責功能測試,接口測試,性能測試,壓力測試…

Jetson Xavier NX 開發板Ubuntu18.04 安裝arduino IDE詳細步驟

Jetson 平臺是arch架構,官網上面幾乎都是x86或者arm64的這兩種錯誤版本都存在匹配問題無法使用,不要下載不要下載! uname -a #版本查詢1.正確下載打開方式 https://downloads.arduino.cc/arduino-1.8.19-linuxaarch64.tar.xz選擇自己想要下…

LeetCode #104 二叉樹的最大深度

104. 二叉樹的最大深度 題目 二叉樹的 最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。 示例 1: 輸入:root [3,9,20,null,null,15,7] 輸出:3 示例 2: 輸入:root [1,null,2] 輸出:2 分析 …

【Godot4自學手冊】第十九節敵人的血量顯示及掉血特效

這一節,我主要學習敵人的血量顯示、掉血顯示和死亡效果。敵人的血量顯示和主人公的血量顯示有所不同,主要是在敵人頭頂有個紅色的血條,受到攻擊敵人的血條會減少,并且有掉血數量的文字顯示,效果如下: 一、…

《中華人民共和國消防法》(2021年修訂版)解讀

單選題(共7題,每題5分) 1、舉辦大型群眾性活動,承辦人應當依法向()申請安全許可。 正確答案:B、公安機關 2、違反消防安全規定進入生產、儲存易燃易爆危險品場所的,情節嚴重的要處…

基于springboot+vue的醫院后臺管理系統

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

胎神游戲集第一期

目錄 一、變色小跳龍 二、超級按鈕 三、超級迷宮 四 、城市守衛戰 五、 憤怒的小胎 既然是胎神游戲集,那當然要先感謝我們的胎神大大了 胎神洛谷名:TSzza 好了,言歸正傳,知道你們不喜歡啰嗦,直接上代碼 一、…

SMBGhost漏洞技術分析與防御方案

事件分析 最近國內外各安全廠商都發布了SMBGhost(CVE-2020-0796)漏洞的預警報告和分析報告,筆者利用周末休息時間也研究了一下,就算是做一個筆記了,分享給大家一起學習下,目前外面研究的POC大部分是通過SMB壓縮數據包長度整數溢出…

【openGL4.x手冊04】基元

一、說明 OpenGL 中的術語“基元”用于指代兩個相似但獨立的概念。 “原語”的第一個含義是指 OpenGL 使用的解釋方案來確定渲染時頂點流所代表的內容,例如“GL_POINTS”。這樣的頂點序列可以是任意長的。 “原語”的另一個含義,也稱為“基本原語”&…

如何根據玩家數量和游戲需求選擇最合適的服務器配置?

根據玩家數量和游戲需求選擇最合適的服務器配置,首先需要考慮游戲的類型、玩家數量、預計的在線時間以及對內存和CPU性能的需求綜合考慮。對于大型多人在線游戲,如MMORPG或MOBA等,由于需要更多的CPU核心數來支持更復雜的游戲邏輯和處理大量數…

操作系統|概述|系統分類——筆記

1.1_1操作系統的概念和功能 操作系統的概念 操作系統(Operating System, OS) 是指控制和管理整個計算機系統的 硬件和軟件 資源,并合理地組織調度計算機和工作和資源的分配; 1操作系統是系統資源的管理者 以提供給用…

springboot攔截器和過濾器

過濾器 Filter依賴于servlet容器,屬于servlet規范的一部分 Filter的生命周期由servlet容器管理 Filter可攔截所有web資源(包括jsp,Servlet,靜態資源,Controller) 自定義Filter import javax.servlet.*; WebFilter(urlPatterns …

文件的順序讀寫函數舉例介紹

目錄 例1:(使用字符輸出函數fputc)例2:(使用字符輸入函數fgetc)例3:(使用文本行輸出函數fputs )例4:(使用文本行輸入函數fgets )例5&a…

Docker基礎教程 - 2 Docker安裝

更好的閱讀體驗:點這里 ( www.doubibiji.com ) 2 Docker安裝 Docker 的官網地址:https://www.docker.com/,在官網可以找到 Docker Engine 的安裝步驟。 下面進行 Docker 環境的安裝,正常情況下 Docker …

服務發現:CP or AP?

1 服務發現的意義 為高可用,生產環境中服務提供方都以集群對外提供服務,集群里這些IP隨時可能變化,也需要用一本“通信錄”及時獲取對應服務節點,這獲取過程即“服務發現”。 對服務調用方和服務提供方,其契約就是接…

(3)(3.1) FlightDeck FrSky發射器應用程序

文章目錄 前言 1 概述 2 Turnkey Packages 3 參數說明 前言 ?Craft and Theory 的 FlightDeck 可讓你輕松查看飛行模式、高度、速度、姿態和關鍵系統警報,包括故障保護和電池錯誤,如電池不平衡警告和發射機低電量警報。 1 概述 Craft and Theory 的…

【自然語言處理】NLP入門(二):1、正則表達式與Python中的實現(2):字符串格式化輸出(%、format()、f-string)

文章目錄 一、前言二、正則表達式與Python中的實現1.字符串構造2. 字符串截取3. 字符串格式化輸出3.1 %符號格式化字符串1. 一般形式2. 常用格式字符3. 最小寬度和精度4. 進位制和科學計數法5. 多個對象的格式化輸出6. 典例 3.2 format()方法格式化字符串1. 一般形式2. 參數傳遞…

51單片機-(中斷系統)

51單片機-(中斷系統) 了解51單片機中斷系統、中斷源、中斷響應條件和優先級等,通過外部中斷0實現按鍵控制LED亮滅為例理解中斷工作原理和編程實現過程。 1.中斷系統結構 89C51/52的中斷系統有5個中斷源 ,2個優先級,…

WiFi模塊引領智能家居革命:連接未來的生活

隨著科技的快速發展,智能家居正成為現代生活的一部分,極大地改變了我們與家庭環境互動的方式。其中,WiFi模塊作為關鍵的連接技術,在推動智能家居革命中發揮著不可忽視的作用。本文將深入探討WiFi模塊如何驅動智能家居革命。 設備互…