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

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

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

思路:雙指針?biāo)悸房梢詥幔揖椭苯诱褿,如果后一個(gè)是1就cnt++,如果不是數(shù)字,用一個(gè)指針i指向G,另一個(gè)指針j移動(dòng),當(dāng)不是G時(shí)停止,統(tǒng)計(jì)G的個(gè)數(shù),如果是奇數(shù)個(gè)同時(shí)G的下一個(gè)是1,cnt++,如果為偶數(shù)同時(shí)G的下一個(gè)是1,就用那唯一一次機(jī)會(huì)G的國(guó)特抵消一次,cnt++,此后不再對(duì)偶數(shù)個(gè)G進(jìn)行cnt++,同時(shí)把i移動(dòng)到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++代碼過(guò)不了,但是python嫩果

一、MySQL 基礎(chǔ)語(yǔ)句

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

CREATE DATABASE school_db;

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

DROP DATABASE school_db;

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

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;
-- 分頁(yè)
SELECT * FROM students LIMIT 5 OFFSET 0;  -- 第一頁(yè),每頁(yè)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)建帶外鍵的表

-- 班級(jí)表
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. 外鍵約束選項(xiàng)

ON DELETE CASCADE

: 主表記錄刪除時(shí),從表相關(guān)記錄自動(dòng)刪除

ON DELETE SET NULL

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

ON DELETE RESTRICT

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

ON UPDATE CASCADE

: 主表主鍵更新時(shí),從表外鍵同步更新

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通過(guò)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ù)庫(kù)和表

-- 創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE school_management;
USE school_management;
-- 創(chuàng)建班級(jí)表
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)建成績(jī)表(多外鍵)
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. 插入測(cè)試數(shù)據(jù)

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

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

查詢每個(gè)班級(jí)的學(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é)生及其班級(jí)和成績(jī)(多表連接)

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的班級(jí)

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;

使用子查詢

-- 查詢沒(méi)有參加任何考試的學(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ǔ)語(yǔ)句和外鍵查詢及其語(yǔ)句的文章就介紹到這了,更多相關(guān)mysql的基礎(chǔ)語(yǔ)句和外鍵查詢及其語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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ù)庫(kù)密碼

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

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

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

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

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

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

    mysql安全啟動(dòng)腳本mysqld_safe詳細(xì)介紹

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

    SQL語(yǔ)句中OR和AND的混合使用的小技巧

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

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

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

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

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

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

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

    虛擬主機(jī)中phpMyAdmin的安裝配置方法

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

最新評(píng)論