欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2025年04月11日 11:39:19   作者:商bol45  
這篇文章主要介紹了mysql的基礎(chǔ)語句和外鍵查詢及其語句詳解(推薦),本文給大家介紹的非常詳細,對大家的學(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,就用那唯一一次機會G的國特抵消一次,cnt++,此后不再對偶數(shù)個G進行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

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

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實現(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中JSON字段數(shù)據(jù)類型詳解

    MySQL中JSON字段數(shù)據(jù)類型詳解

    JSON我相信大家都已經(jīng)很熟悉了,但在 MySQL中,直至 5.7 版本中,才正式引入 JSON數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于MySQL中JSON字段數(shù)據(jù)類型的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 如何修改Linux服務(wù)器中的MySQL數(shù)據(jù)庫密碼

    如何修改Linux服務(wù)器中的MySQL數(shù)據(jù)庫密碼

    這篇文章主要介紹了如何修改Linux服務(wù)器中的MySQL數(shù)據(jù)庫密碼問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • MySQL設(shè)置管理員密碼無法生效的問題解析

    MySQL設(shè)置管理員密碼無法生效的問題解析

    這篇文章主要介紹了MySQL設(shè)置管理員密碼無法生效的問題解析,一般在遇到?MySQL?問題時,建議對?MySQL?系統(tǒng)函數(shù)、數(shù)據(jù)庫內(nèi)部對象等進行檢索而不是直接打印字符串,有時候可能對快速定位問題原因有幫助,需要的朋友可以參考下
    2022-06-06
  • mysql數(shù)據(jù)庫插入速度和讀取速度的調(diào)整記錄

    mysql數(shù)據(jù)庫插入速度和讀取速度的調(diào)整記錄

    由于項目變態(tài)需求;需要在一個比較短時間段急劇增加數(shù)據(jù)庫記錄(兩三天內(nèi),由于0增加至4億)。在整個過程調(diào)優(yōu)過程非常艱辛
    2012-07-07
  • mysql安全啟動腳本mysqld_safe詳細介紹

    mysql安全啟動腳本mysqld_safe詳細介紹

    這篇文章主要介紹了mysql安全啟動腳本mysqld_safe詳細介紹,mysqld_safe增加了一些安全特性,需要的朋友可以參考下
    2014-07-07
  • SQL語句中OR和AND的混合使用的小技巧

    SQL語句中OR和AND的混合使用的小技巧

    在SQL語句中我們可能會經(jīng)?;旌鲜褂玫絆R和AND,其中可能會出現(xiàn)一些小問題,下面小編來講一講它的使用技巧
    2019-05-05
  • mysql分區(qū)表的增刪改查的實現(xiàn)示例

    mysql分區(qū)表的增刪改查的實現(xiàn)示例

    增刪查改在數(shù)據(jù)庫中是很常見的操作,本文主要介紹了mysql分區(qū)表的增刪改查的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • MySQL四種日志binlog/redolog/relaylog/undolog詳解

    MySQL四種日志binlog/redolog/relaylog/undolog詳解

    undo?log主要存儲的也是邏輯日志,比如我們要insert一條數(shù)據(jù)了,那undo?log會記錄的一條對應(yīng)的delete日志,我們要update一條記錄時,它會記錄一條對應(yīng)相反的update記錄,這篇文章主要介紹了MySQL四種日志binlog/redolog/relaylog/undolog,需要的朋友可以參考下
    2024-08-08
  • MySQL數(shù)據(jù)庫多表操作通關(guān)指南(外鍵約束和多表聯(lián)合查詢)

    MySQL數(shù)據(jù)庫多表操作通關(guān)指南(外鍵約束和多表聯(lián)合查詢)

    看再多的資料不如自己親自動手實戰(zhàn),往往實戰(zhàn)才能滲透知識,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫多表操作的相關(guān)資料,包含外鍵約束和多表聯(lián)合查詢等,需要的朋友可以參考下
    2022-06-06
  • 虛擬主機中phpMyAdmin的安裝配置方法

    虛擬主機中phpMyAdmin的安裝配置方法

    phpMyAdmin 是一套可以通過WEB來管理 MySQL-server 以及單一數(shù)據(jù)庫的 PHP 程序。對于一些虛擬空間的站點來說,應(yīng)該是不可缺少的吧!!!
    2010-06-06

最新評論