最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql的基礎(chǔ)語句和外鍵查詢及其語句詳解(推薦)

 更新時間:2025年04月11日 11:39:19   作者:商bol45  
這篇文章主要介紹了mysql的基礎(chǔ)語句和外鍵查詢及其語句詳解(推薦),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

思路:雙指針?biāo)悸房梢詥?,我就直接找G,如果后一個是1就cnt++,如果不是數(shù)字,用一個指針i指向G,另一個指針j移動,當(dāng)不是G時停止,統(tǒng)計G的個數(shù),如果是奇數(shù)個同時G的下一個是1,cnt++,如果為偶數(shù)同時G的下一個是1,就用那唯一一次機(jī)會G的國特抵消一次,cnt++,此后不再對偶數(shù)個G進(jìn)行cnt++,同時把i移動到j(luò)指向G位置,就這樣一直遍歷字符串;

s = input()
cnt = 0
king_used = False
i = 0
while i < len(s):
    if s[i] == 'G':
        if i + 1 < len(s):
            if s[i + 1] == '1':
                cnt += 1
                i += 2
                continue
            elif s[i + 1] in ['2', '3']:
                i += 2
                continue
            else:
                j = i + 1
                while j < len(s) and s[j] == 'G':
                    j += 1
                g_count = j - i
                if g_count % 2 == 1:
                    cnt += 1
                elif g_count % 2 == 0 and not king_used:
                    cnt += 1
                    king_used = True
                i = j
        else:
            i += 1
    else:
        i += 1
print(cnt)
轉(zhuǎn)c++

我不知道為啥我c++代碼過不了,但是python嫩果

一、MySQL 基礎(chǔ)語句

1. 數(shù)據(jù)庫操作 創(chuàng)建數(shù)據(jù)庫

CREATE DATABASE school_db;

刪除數(shù)據(jù)庫

DROP DATABASE school_db;

選擇數(shù)據(jù)庫

USE school_db;

2. 表操作 創(chuàng)建表

CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    gender ENUM('男', '女'),
    enrollment_date DATE DEFAULT CURRENT_DATE
);

刪除表

DROP TABLE students;

修改表結(jié)構(gòu)

ALTER TABLE students ADD COLUMN email VARCHAR(100);
ALTER TABLE students MODIFY COLUMN age TINYINT;
ALTER TABLE students DROP COLUMN gender;

3. CRUD 操作

插入數(shù)據(jù)

INSERT INTO students (name, age, gender) 
VALUES ('張三', 18, '男'), ('李四', 19, '女');

查詢數(shù)據(jù)

-- 基本查詢
SELECT * FROM students;
-- 條件查詢
SELECT name, age FROM students WHERE age > 18;
-- 排序
SELECT * FROM students ORDER BY age DESC;
-- 分組
SELECT gender, COUNT(*) FROM students GROUP BY gender;
-- 分頁
SELECT * FROM students LIMIT 5 OFFSET 0;  -- 第一頁,每頁5條

更新數(shù)據(jù)

UPDATE students SET age = 20 WHERE name = '張三';

刪除數(shù)據(jù)

DELETE FROM students WHERE student_id = 1;

二、外鍵與關(guān)聯(lián)查詢

1. 外鍵概念

外鍵(Foreign Key)用于建立表與表之間的關(guān)聯(lián)關(guān)系,確保數(shù)據(jù)完整性。

2. 創(chuàng)建帶外鍵的表

-- 班級表
CREATE TABLE classes (
    class_id INT AUTO_INCREMENT PRIMARY KEY,
    class_name VARCHAR(50) NOT NULL,
    teacher VARCHAR(50)
);
-- 學(xué)生表(帶外鍵)
CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    class_id INT,
    FOREIGN KEY (class_id) REFERENCES classes(class_id)
        ON DELETE SET NULL
        ON UPDATE CASCADE
);

3. 外鍵約束選項

ON DELETE CASCADE

: 主表記錄刪除時,從表相關(guān)記錄自動刪除

ON DELETE SET NULL

: 主表記錄刪除時,從表外鍵設(shè)為NULL

ON DELETE RESTRICT

: 拒絕刪除主表記錄(默認(rèn))

ON UPDATE CASCADE

: 主表主鍵更新時,從表外鍵同步更新

4. 關(guān)聯(lián)查詢

內(nèi)連接(INNER JOIN)

SELECT s.name, s.age, c.class_name
FROM students s
INNER JOIN classes c ON s.class_id = c.class_id;

左連接(LEFT JOIN)

SELECT s.name, c.class_name
FROM students s
LEFT JOIN classes c ON s.class_id = c.class_id;

右連接(RIGHT JOIN)

SELECT s.name, c.class_name
FROM students s
RIGHT JOIN classes c ON s.class_id = c.class_id;

全連接(FULL JOIN) - MySQL通過UNION實(shí)現(xiàn)

SELECT s.name, c.class_name FROM students s LEFT JOIN classes c ON s.class_id = c.class_id
UNION
SELECT s.name, c.class_name FROM students s RIGHT JOIN classes c ON s.class_id = c.class_id;

三、完整示例

1. 創(chuàng)建數(shù)據(jù)庫和表

-- 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE school_management;
USE school_management;
-- 創(chuàng)建班級表
CREATE TABLE classes (
    class_id INT AUTO_INCREMENT PRIMARY KEY,
    class_name VARCHAR(50) NOT NULL,
    teacher VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 創(chuàng)建學(xué)生表(帶外鍵)
CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT CHECK (age BETWEEN 10 AND 30),
    gender ENUM('男', '女'),
    class_id INT,
    FOREIGN KEY (class_id) REFERENCES classes(class_id)
        ON DELETE SET NULL
        ON UPDATE CASCADE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 創(chuàng)建成績表(多外鍵)
CREATE TABLE scores (
    score_id INT AUTO_INCREMENT PRIMARY KEY,
    student_id INT,
    subject VARCHAR(50),
    score DECIMAL(5,2),
    exam_date DATE,
    FOREIGN KEY (student_id) REFERENCES students(student_id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
);

2. 插入測試數(shù)據(jù)

-- 插入班級數(shù)據(jù)
INSERT INTO classes (class_name, teacher) VALUES
('一年級一班', '王老師'),
('一年級二班', '李老師'),
('二年級一班', '張老師');
-- 插入學(xué)生數(shù)據(jù)
INSERT INTO students (name, age, gender, class_id) VALUES
('張三', 18, '男', 1),
('李四', 19, '女', 1),
('王五', 17, '男', 2),
('趙六', 20, '女', NULL);
-- 插入成績數(shù)據(jù)
INSERT INTO scores (student_id, subject, score, exam_date) VALUES
(1, '數(shù)學(xué)', 90.5, '2023-06-15'),
(1, '語文', 85.0, '2023-06-16'),
(2, '數(shù)學(xué)', 92.0, '2023-06-15'),
(3, '英語', 88.5, '2023-06-17');

3. 復(fù)雜查詢示例

查詢每個班級的學(xué)生人數(shù)

SELECT c.class_name, COUNT(s.student_id) AS student_count
FROM classes c
LEFT JOIN students s ON c.class_id = s.class_id
GROUP BY c.class_id;

查詢學(xué)生及其班級和成績(多表連接)

SELECT s.name, s.age, c.class_name, sc.subject, sc.score
FROM students s
LEFT JOIN classes c ON s.class_id = c.class_id
LEFT JOIN scores sc ON s.student_id = sc.student_id
ORDER BY s.name, sc.subject;

查詢平均分高于85的班級

SELECT c.class_name, AVG(sc.score) AS avg_score
FROM classes c
JOIN students s ON c.class_id = s.class_id
JOIN scores sc ON s.student_id = sc.student_id
GROUP BY c.class_id
HAVING avg_score > 85;

使用子查詢

-- 查詢沒有參加任何考試的學(xué)生
SELECT name FROM students
WHERE student_id NOT IN (SELECT DISTINCT student_id FROM scores);

四、外鍵管理

1. 查看外鍵約束

SELECT 
    TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, 
    REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
    REFERENCED_TABLE_SCHEMA = 'school_management';

2. 刪除外鍵約束

ALTER TABLE students DROP FOREIGN KEY students_ibfk_1;

3. 添加外鍵約束

ALTER TABLE students
ADD CONSTRAINT fk_class
FOREIGN KEY (class_id) REFERENCES classes(class_id)
ON DELETE SET NULL
ON UPDATE CASCADE;

到此這篇關(guān)于mysql的基礎(chǔ)語句和外鍵查詢及其語句的文章就介紹到這了,更多相關(guān)mysql的基礎(chǔ)語句和外鍵查詢及其語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql本地安裝過程詳解

    mysql本地安裝過程詳解

    本文詳細(xì)介紹了在Windows、macOS和Linux(Ubuntu)三大主流系統(tǒng)下MySQL的本地安裝流程、配置步驟和常見問題解決方法,適合新手快速上手并順利完成環(huán)境搭建與基本驗(yàn)證
    2025-10-10
  • MySQL執(zhí)行過程中選擇最佳的執(zhí)行路徑的方法(核心流程)

    MySQL執(zhí)行過程中選擇最佳的執(zhí)行路徑的方法(核心流程)

    文章介紹MySQL查詢優(yōu)化器如何通過解析、生成執(zhí)行計劃及成本評估選擇最佳路徑,依賴統(tǒng)計信息如表行數(shù)和索引基數(shù),開發(fā)者需創(chuàng)建索引、更新統(tǒng)計信息、優(yōu)化SQL寫法及使用EXPLAIN工具輔助優(yōu)化,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • MySQL truncate table語句的使用

    MySQL truncate table語句的使用

    這篇文章主要介紹了MySQL truncate table語句的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 利用rpm安裝mysql 5.6版本詳解

    利用rpm安裝mysql 5.6版本詳解

    眾所周知MySQL在很多領(lǐng)域都被廣泛的使用,尤其是很多互聯(lián)網(wǎng)企業(yè),諸如騰訊,阿里等等。那么本文將主要介紹如何通過rpm方式來安裝Mysql,這是比較簡單的一種安裝方式,文中介紹的很詳細(xì),相信對于大家安裝mysql具有一定的參考借鑒價值,下面來一起看看吧。
    2016-11-11
  • Mysql中FIND_IN_SET()和IN區(qū)別簡析

    Mysql中FIND_IN_SET()和IN區(qū)別簡析

    這篇文章主要介紹了Mysql中FIND_IN_SET()和IN區(qū)別簡析,設(shè)計實(shí)例代碼,具有一定參考價值。需要的朋友可以了解。
    2017-10-10
  • DBA應(yīng)該知道的一些關(guān)于SQL Server跟蹤標(biāo)記的使用

    DBA應(yīng)該知道的一些關(guān)于SQL Server跟蹤標(biāo)記的使用

    本篇文章小編為大家介紹,DBA應(yīng)該知道的一些關(guān)于SQL Server跟蹤標(biāo)記的使用。需要的朋友參考下
    2013-04-04
  • windows-mysql8.0.15如何修改密碼、重置密碼

    windows-mysql8.0.15如何修改密碼、重置密碼

    本文詳細(xì)介紹了在Windows環(huán)境下,如何修改或重置MySQL 8.0.15版本的用戶密碼,首先,需要停止MySQL服務(wù)并以管理員權(quán)限打開cmd窗口,然后開啟跳過密碼驗(yàn)證的MySQL服務(wù),接著,通過新的命令窗口登錄MySQL,并選擇相應(yīng)的數(shù)據(jù)庫進(jìn)行密碼修改或重置
    2024-10-10
  • mysql 時間轉(zhuǎn)換函數(shù)的使用方法

    mysql 時間轉(zhuǎn)換函數(shù)的使用方法

    都是實(shí)例,大家可以參考一一寫一下
    2008-07-07
  • mysql中添加索引的3種方法及使用注意事項詳解

    mysql中添加索引的3種方法及使用注意事項詳解

    在MySQL中建立索引是一種優(yōu)化查詢性能的技術(shù),它能加快數(shù)據(jù)檢索的速度,這篇文章主要介紹了mysql中添加索引的3種方法及使用注意事項的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-01-01
  • 解析MySQL的information_schema數(shù)據(jù)庫

    解析MySQL的information_schema數(shù)據(jù)庫

    本篇文章是對MySQL的information_schema數(shù)據(jù)庫進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

保定市| 宣化县| 永福县| 保亭| 象州县| 垣曲县| 拉萨市| 高要市| 赣榆县| 离岛区| 鹿泉市| 融水| 高尔夫| 砀山县| 措美县| 元氏县| 内黄县| 泰州市| 教育| 安溪县| 临泉县| 屏边| 昭觉县| 武平县| 渭源县| 西峡县| 崇信县| 山西省| 合川市| 突泉县| 阳朔县| 房产| 新郑市| 南和县| 河东区| 三门峡市| 大港区| 卓尼县| 和静县| 读书| 土默特右旗|