Mysql課後思考題

一、請簡述數據庫、表和數據庫服務器之間的關係?

  知識點數據庫存儲結構mysql

  一個數據庫服務器能夠管理多個數據庫,一般狀況下開發人員會針對每一個應用建立一個數據庫,爲保存應用中實體的數據,會在數據庫中建立多個表(用於存儲和描述數據的邏輯結構),每一個表都記錄着實體的相關信息。sql

二、簡述修改MySQL配置的兩種方式?

  知識點從新配置MySQL數據庫

  1.經過DOS命令從新配置MySQL,如服務器

set character_set_client = gbk

2.經過my.ini文件從新配置MySQL,如修改文件my.ini的屬性函數

default-character-set=gbk

三、簡述主鍵的做用及其特徵,建立數據表student中 stu_id和course_id兩個字段共同做爲主鍵的SQL語句?oop

  知識點主鍵約束spa

  主鍵是經過PRIMARY KEY定義的,它能夠惟一標識表中的記錄。它的主要特徵以下:code

1.惟一性:不能有重複值blog

2.非空性:不能爲空值排序

SQL語句:

student( stu_id INT,course_id INT, PRIMARY KEY( stu_id, course_id));

四、簡述什麼是索引以及索引的分類,並寫出爲name字段創建全文索引的SQL語句?

  知識點索引的分類

  數據庫的索引比如新華字典的音序表,它是對數據庫表中一列或多列的值進行排序後的一種結構,其做用就是提升表中數據的查詢速度。

索引的分類以下:

1.普通索引

2.惟一性索引

3.全文索引

4.單列索引

5.多列索引

6.空間索引

  爲name字段創建全文索引:

FULLTEXT INDEX fulltext_name(name)

5.一、在數據庫中建立一個student表用於存儲學生信息,其中字段信息包括id 整型字段,name字符串類型且非空,grade浮點類型,根據字段類型向表中添加3條新記錄?

  知識點添加數據

CREATE TABLE student( id INT(4), name VARCHAR(20) NOT NULL, grade FLOAT );

  --插入數據

INSERT INTO student(id,name,grade) VALUES(1,'zhangsan',98.5);

5.二、更新student表中grade字段的值,使grade字段的值在原有基礎上都增長10分,但不能超出100分的上限,超出100分的grade值都修改成100?

  知識點更新數據

  --更新數據

UPDATE student SET grade=grade+10; UPDATE student SET grade=100 where grade>100;

六、請寫出SELECT查詢語句的完整語法格式?

  知識點簡單查詢

SELECT  [DISTINCT] *|{字段名1, 字段名2, 字段名3,……} FROM 表名 [WHERE 條件表達式1]
[GROUP BY 字段名 [HAVING 條件表達式2]] [ORDER BY 字段名 [ASC|DESC]] [LIMIT [OFFSET] 記錄數]

七、現有一張學生表,表中字段有學生_ID,系_ID,性別_ID。

  1) 統計每一個系的男女生人數。

  2) 統計人數在10人以上的系。

  知識點聚合函數

  1)SELECT  COUNT(*) AS RENSHU  FROM 學生 GROUP BY 性別_ID,系_ID;

  2)

SELECT COUNT(*) AS RENSHU ,系_ID FROM 學生 GROUP BY 系_ID HAVING  COUNT(*) > 10;

8.一、根據以下條件編寫SQL語句:查詢存在年齡大於21歲的員工所對應的部門信息?

  知識點帶EXISTS關鍵字的子查詢

SELECT * FROM department WHERE EXISTS(select did from employee where age > 21);

8.二、根據以下條件編寫SQL語句:採用自鏈接查詢與王紅在同一個部門的員工?

  知識點內鏈接

SELECT p1.* FROM employee p1 JOIN employee p2 ON p1.did=p2.did WHERE p2.name='王紅';

  若是在一個鏈接查詢中,涉及到的兩個表是同一個表,這種查詢稱爲自鏈接查詢

九、請使用流程控制語句,編寫以下SQL語句:

  1)實現1-10之間數字的遍歷

  2)當數字大於10退出遍歷過程

  數字在1-10之間時,遍歷數字並進行輸出

  知識點存儲過程當中流程控制的使用

DECLARE id INT DEFAULT 0; add_loop:LOOP SET id=id+1; IF id>=10 THEN LEAVE add_loop; END IF; SELECT id; END LOOP add_loop;

十、簡述MySQL的事務的隔離級別有哪些?

  知識點事務的隔離級別

  1.READ UNCOMMITTED是事務中最低的級別,也稱爲髒讀

2.READ COMMITTED只能讀取其它事務已經提交的內容,能夠避免髒讀

3.REPEATABLE READ是MySQL默認的事務隔離級別,它能夠避免髒讀、不可重複讀的問題

4.SERIALIZABLE是事務的最高隔離級別,它會強制對事務進行排序,使之不會發生衝突,從而解決髒讀、幻讀、重複讀的問題。

十一、已知有一張 sales表,表中有上半年的銷量 first_half和下半年的銷量 latter_half。請在sales表上建立一個視圖,查詢出一年的總銷量?

  知識點在單表上建立視圖

CREATE VIEW view_sales AS SELECT first_half+ latter_half  FROM sales;

十二、簡述修改視圖的兩種方式,並寫出其基本語法?

  知識點修改視圖

  一、使用CREATE OR REPLACE VIEW語句修改視圖

  在MySQL中,使用CREATE OR REPLACE VIEW語句修改視圖,其基本語法格式以下所示:

CREATE [OR REPLACE ][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement [WITH[CASCADED | LOCAL] CHECK OPTION]

二、使用ALTER語句修改視圖

ALTER語句是MySQL提供的另一種修改視圖的方法,使用ALTER語句修改視圖的基本語法格式以下所示:

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement [WITH[CASCADED | LOCAL] CHECK OPTION]

1三、請寫出,使用mysqldump命令備份chapter08數據庫的SQL語句?

  知識點數據的備份

mysqldump -uroot -pitcast chapter08>d:/chapter08.sql

1四、請簡述如何解決root用戶密碼丟失問題?

  知識點修改用戶密碼

  1.中止MySQL服務器

2.mysqld --skip-grant-tables啓動MySQL服務

3.mysql -u root命令從新登陸

4.經過UPDATE從新設置密碼:

UPDATE mysql.user SET Password=PASSWORD('itcast') WHERE User='root' AND Host='localhost';

5.FLUSH PRIVILEGES;從新加載權限表 

相關文章
相關標籤/搜索