mysql實戰題目練習

1、創建和管理數據庫

  • 創建一個名為school的數據庫。

  • 列出所有的數據庫,并確認school數據庫已經創建。

  • 如果school數據庫已經存在,刪除它并重新創建。

  • mysql> create database school;
    Query OK, 1 row affected (0.01 sec)mysql> 
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | school             |
    | sys                |
    | zabbix             |
    +--------------------+
    6 rows in set (0.01 sec)

    2、創建數據表

  • school數據庫中,創建一個名為students的表,包含以下字段:id(整數,主鍵,自增)、name(字符串,最大長度50)、age(整數)和grade(字符串,最大長度10)。

  • 創建一個名為courses的表,包含course_id(整數,主鍵,自增)、course_name(字符串,最大長度100)和teacher(字符串,最大長度50)。

  • mysql> create table students(id int auto_increment primary key,name varchar(50),age int,grade varchar(10));
    Query OK, 0 rows affected (0.06 sec)
    mysql> create  table courses(course_id int auto_increment primary key,course_name varchar(100),teacher varchar(50));
    Query OK, 0 rows affected (0.01 sec)

    3、插入數據

  • students表中插入一些示例數據。

  • courses表中插入一些示例數據

  • mysql> insert into students(name,age,grade)values('zhsan',20,1);
    Query OK, 1 row affected (0.00 sec)
    mysql> INSERT INTO students (name, age, grade) VALUES ('李四', 19, '二年級');
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from courses;
    Empty set (0.00 sec)mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | zhsan  |   20 | 1         |
    |  2 | 李四   |   19 | 二年級    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> update  students set name='張三',grade='一年級' where id=1;
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   20 | 一年級    |
    |  2 | 李四   |   19 | 二年級    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> insert into courses(course_name,teacher)values('數學','張老師');
    Query OK, 1 row affected (0.00 sec)mysql> insert into courses(course_name,teacher)values('語文','王老師';
    Query OK, 1 row affected (0.00 sec)mysql> select * from courses;
    +-----------+-------------+-----------+
    | course_id | course_name | teacher   |
    +-----------+-------------+-----------+
    |         1 | 數學        | 張老師    |
    |         2 | 語文        | 王老師    |
    +-----------+-------------+-----------+
    2 rows in set (0.00 sec)mysql> 

    4、基本查詢

  • 查詢students表中的所有數據。

  • 查詢年齡大于或等于20歲的學生信息。

  • 查詢姓名為"張三"的學生的所有信息。

  • mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   20 | 一年級    |
    |  2 | 李四   |   19 | 二年級    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> select * from students where age>=20;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   20 | 一年級    |
    +----+--------+------+-----------+
    1 row in set (0.00 sec)
    mysql> select * from students where name='張三';
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   20 | 一年級    |
    +----+--------+------+-----------+
    1 row in set (0.00 sec)
    

    5、更新和刪除數據

  • 將名為"張三"的學生的年齡更新為21歲。

  • 刪除年齡小于18歲的學生信息。

  • mysql> update students set age=21 where name='張三';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    mysql> select * from students ;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   21 | 一年級    |
    |  2 | 李四   |   19 | 二年級    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> insert into students(name,age,grade)values('王五',17,'一年級');
    Query OK, 1 row affected (0.01 sec)
    mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   21 | 一年級    |
    |  2 | 李四   |   19 | 二年級    |
    |  4 | 王五   |   17 | 一年級    |
    +----+--------+------+-----------+
    3 rows in set (0.00 sec)mysql> delete from students where age<18;
    Query OK, 1 row affected (0.00 sec)mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   21 | 一年級    |
    |  2 | 李四   |   19 | 二年級    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)mysql> 

    6、多表查詢

  • (假設存在一個關聯表student_courses,表示學生和課程的關聯關系)

  • 查詢所有選修了"數學"課程的學生信息。

  • 查詢每個學生的選課數量。

  • mysql> create table student_courses(student_id int,course_id int,foreign key (student_id) references student(id),foreign key(course_id)references courses(course_id));
    Query OK, 0 rows affected (0.01 sec)
    mysql> insert into student_courses(student_id,course_id)values(1,2);
    Query OK, 1 row affected (0.01 sec)mysql> insert into student_courses(student_id,course_id)values(2,2);
    Query OK, 1 row affected (0.01 sec)mysql> insert into student_courses(student_id,course_id)values(2,1);
    Query OK, 1 row affected (0.00 sec)mysql> SELECT s.name, s.age, s.grade  -> FROM student s  -> JOIN student_courses sc ON s.id = sc.student_id  -> JOIN courses c ON sc.course_id = c.course_id  -> WHERE c.course_name = '數學';
    +--------+------+-----------+
    | name   | age  | grade     |
    +--------+------+-----------+
    | 張三   |   21 | 一年級    |
    | 李四   |   19 | 二年級    |
    +--------+------+-----------+
    2 rows in set (0.00 sec)

    7、事務處理

  • 編寫一個事務,將學生"李四"選修的"數學"課程更改為"物理",并確保如果更改失敗,則回滾到之前的狀態。

  • BEGIN TRANSACTIONSTART TRANSACTION:開始一個新的事務。

  • COMMIT:提交事務,將事務中的所有更改保存到數據庫。

  • ROLLBACK:撤銷事務,回滾到事務開始之前的狀態,撤銷所有在事務中所做的更改

    mysql> start transaction;
    Query OK, 0 rows affected (0.00 sec)
    mysql> update student_courses  set course_id=(select course_id from courses where course_name='物理')  where student_id=(select id from student where name="李四") and course_id=(select course_id from courses where course_name='數學') and course_id=(select course_id from courses where course_name='數學');
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)

    8、索引和約束

    students表的name字段上創建一個唯一索引,確保每個學生都有一個唯一的姓名。

    courses表的course_name字段上創建一個普通索引,以優化查詢性能。

  • mysql> create unique index idx_name on student(name);
    Query OK, 0 rows affected (0.07 sec)
    Records: 0  Duplicates: 0  Warnings: 0mysql> create index idx_course_name on courses(course_name);
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    9、聚合函數和分組

  • 查詢每個年級的學生數量。

  • 查詢年齡最大的學生信息。

  • mysql> select grade,count(*) as student_count from student group by grade;
    +-----------+---------------+
    | grade     | student_count |
    +-----------+---------------+
    | 一年級    |             1 |
    | 二年級    |             1 |
    +-----------+---------------+
    2 rows in set (0.01 sec)mysql> 
    mysql> select * from student where age=(select max(age) from student);
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 張三   |   21 | 一年級    |
    +----+--------+------+-----------+
    1 row in set (0.00 sec)mysql> 

10、視圖和存儲過程

  • 創建一個視圖,顯示年齡大于20歲的學生及其選課信息。

  • 編寫一個存儲過程,用于添加新的學生和課程關聯記錄。

  • mysql> create view view_age20 as-> select s.id,s.name,s.age,sc.course_id,c.course_name-> from student s-> join student_courses sc on s.id=sc.student_id-> join courses c on sc.course_id=c.course_id-> where s.age >20;
    Query OK, 0 rows affected (0.01 sec)mysql> delimiter //
    mysql> create procedure addsc(in student_id int,in course_id int)-> begin insert into student_courses(student_id,course_id)values (student_id,course_id);-> -> end  //
    Query OK, 0 rows affected (0.02 sec)
    mysql> delimiter ;

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

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

相關文章

Spring Boot:異常處理

Spring Boot 前言使用自定義錯誤頁面處理異常使用 ExceptionHandler 注解處理異常使用 ControllerAdvice 注解處理異常使用配置類處理異常使用自定義類處理異常 前言 在 Spring Boot 中&#xff0c;異常處理是一個重要的部分&#xff0c;可以允許開發者優雅地處理應用程序中可…

復利效應(應用于成長)

應用 每個人在智力、知識、經驗上&#xff0c;復利效應都一樣&#xff0c;只要能積累的東西&#xff0c;基本上最終都會產生復利效應。 再來看一下復利公式&#xff1a;FP*(1i)^n P本金&#xff1b;i利率&#xff1b;n持有期限。在使用時&#xff0c;一定要注意4個限定條件&a…

AI圖書推薦:ChatGPT等生成式AI在高等教育中的應用

自2022年11月以來&#xff0c;ChatGPT及其在高等教育各個層面的影響已成為所有教育對話的核心內容。Chan和Colloton所著的書籍是首批全面探討ChatGPT與生成式人工智能&#xff08;GenAI&#xff09;在高等教育中應用及影響的作品之一。 該書深入研究了針對專業環境定制的AI素養…

js中Array的2個容易被遺忘的函數some和array

Array.prototype.some() 和 Array.prototype.every() 是 JavaScript 中的兩個容易被遺忘的數組方法。它們都用于檢查數組中的元素是否滿足某個條件。 1. Array.prototype.some() some() 方法用于檢查數組中至少有一個元素滿足給定的條件。當找到滿足條件的元素時&#xff0c;…

基礎學習-Git(分布式版本控制系統)

學習視頻推薦 http://【黑馬程序員Git全套教程&#xff0c;完整的git項目管理工具教程&#xff0c;一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p5&share_sourcecopy_web&vd_source2b85bd9be9213709642d908906c3d863 1、Git環境配置 安裝Git Git下…

wireshark_概念

ARP (Address Resolution Protocol&#xff09;協議&#xff0c;即地址解析協議。該協議的功能就是將IP地址解析成MAC地址。 混雜模式 抓取經過網卡的所有數據包&#xff0c;包括發往本網卡和非發往本網卡的。 非混雜模式 只抓取目標地址是本網卡的數據包&#xff0c;對于發往…

《控制系統實驗與綜合設計》綜合四至六(含程序和題目)

1.電機模型辨識實驗 1.1 實驗目的 &#xff08;1&#xff09;掌握一階系統階躍響應的特點&#xff0c;通過實驗加深對直流電解模型的理解&#xff1b; &#xff08;2&#xff09;掌握系統建模過程中參數的整定&#xff0c;體會參數變化對系統的影響&#xff1b; &#xff0…

單片機開發板上外設資源講解

單片機開發電路板上簡單外設 開發板上各基礎外設LED燈按鍵&#xff1a;數碼管介紹液晶屏矩陣鍵盤掃描的概念LED點陣屏實時時鐘蜂鳴器存儲器 溫度傳感器&單總線 開發板上各基礎外設 LED燈 中文名&#xff1a;發光二極管 外文名&#xff1a;Light Emitting Diode 簡稱&…

楊校老師項目之基于單片機STC89C52的智能環境監測系統【嵌入式】

獲取全套資料&#xff1a; 有償獲取&#xff1a;mryang511688 技術&#xff1a;C語言、單片機等 摘要&#xff1a; 此設計可分為三個主要部分。此中的溫度和濕度的檢測功能&#xff0c;通過操縱單總線型溫濕度傳感器DHT11以數字形式顯示&#xff0c;實現了切確測得溫濕度的功能…

如何管理多個版本的Node.js

我們如何在本地管理多個版本的Node.js&#xff0c;有沒有那種不需要重新安裝軟件再修改配置文件和環境變量的方法&#xff1f;經過我的查找&#xff0c;還真有這種方式&#xff0c;那就是nvm&#xff08;Node Version Manager&#xff09;。 下面我就給大家介紹下NVM的使用 1…

vs2019 c++中模板 enable_if_t 的使用

&#xff08;1&#xff09; 該模板的定義如下&#xff1a; template <bool _Test, class _Ty void> struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty> struct enable_if<true, _Ty> { // type is _Ty for _Testusing …

Golang | Leetcode Golang題解之第89題格雷編碼

題目&#xff1a; 題解&#xff1a; func grayCode(n int) []int {ans : make([]int, 1<<n)for i : range ans {ans[i] i>>1 ^ i}return ans }

MSR810-LM快速配置通過LTE模塊上網

正文共&#xff1a;1111 字 13 圖&#xff0c;預估閱讀時間&#xff1a;1 分鐘 之前買了一個無線版本的MSR810-W&#xff08;淘了一臺二手的H3C企業路由器&#xff0c;就用它來打開網絡世界的大門&#xff09;&#xff0c;并整理了一份快速配置&#xff08;腳本案例來了&#x…

三菱FX3U-4AD模擬量電壓輸入采集實例

硬件&#xff1a;&#xff30;&#xff2c;&#xff23;模塊 &#xff26;&#xff38;&#xff13;&#xff27;&#xff21;-&#xff12;&#xff14;&#xff2d;&#xff34; &#xff1b;&#xff21;&#xff0f;&#xff24;模塊&#xff26;&#xff38;&#xff13…

SQL——SERVER的建表主要操作

目錄 一&#xff1a;數據存儲問題 1.表的相關數據 2.表&#xff0c;字段&#xff0c;記錄 二&#xff1a;建表 1.創建表頭 2. 數據類型 3.保存數據 4.數據冗余 5.使用命令重置表 7.設置主鍵 一&#xff1a;數據存儲問題 1.表的相關數據 表是數據庫的基本單位&…

交互原型設計工具 Axure RP 9 for Mac 正式激活版

Axure RP 9 Pro Mac版是Mac平臺上的一款專為快速原型設計而生的應用&#xff0c;Axure RP 9 Pro Mac版可以輔助產品經理快速設計完整的產品原型&#xff0c;并結合批注&#xff0c;說明以及流程圖&#xff0c;框架圖等元素&#xff0c;將產品完整地表述給各方面設計人員&#x…

Android Studio(AS)使用別人的項目與gradle包并運行項目

一、問題描述 在進行AS開發時&#xff0c;我們可能會使用到別人的項目&#xff0c;但發現別人把項目發給我們后會發現gradle項目同步失敗o(≧口≦)o&#xff0c;此時計有三&#xff1a; 1.橫行霸道、豪取搶奪&#xff1a;直接空降到項目人那里&#xff0c;強他的電腦占為己有…

Numpy的數組操作

文章目錄 數組的創建創建全0的二維數組a(3,3)全1的二維數組b&#xff08;3,4&#xff09;隨機數二維數數組c&#xff08;2,3&#xff09;效果截圖 數組的屬性查看b數組的維度查看b數組元素的個數效果截圖 數組的維度操作將數組c的行變列&#xff0c;返回最后一個元素返回數組c第…

python 虛擬環境-最簡單的教程

查看當前 python 的安裝路徑 which python 1、Anaconda創建虛擬環境 (1)執行命令&#xff1a;conda create --name env_name python3.10&#xff0c; 命令中我制定了環境名稱是env_name&#xff0c;指定了Python版本是3.10&#xff0c;執行命令后&#xff0c;Conda會自動下…

【回溯】1240. 鋪瓷磚

本文涉及知識點 回溯 LeetCode1240. 鋪瓷磚 你是一位施工隊的工長&#xff0c;根據設計師的要求準備為一套設計風格獨特的房子進行室內裝修。 房子的客廳大小為 n x m&#xff0c;為保持極簡的風格&#xff0c;需要使用盡可能少的 正方形 瓷磚來鋪蓋地面。 假設正方形瓷磚的…