1、請簡述數據庫、表和數據庫服務器之間的關系?
知識點數據庫存儲結構
一個數據庫服務器可以管理多個數據庫,通常情況下開發人員會針對每個應用創建一個數據庫,為保存應用中實體的數據,會在數據庫中創建多個表(用於存儲和描述數據的邏輯結構),每個表都記錄着實體的相關信息。
2、簡述修改MySQL配置的兩種方式?
知識點重新配置MySQL
1.通過DOS命令重新配置MySQL,如
set character_set_client = gbk
2.通過my.ini文件重新配置MySQL,如修改文件my.ini的屬性
default-character-set=gbk
3、簡述主鍵的作用及其特征,創建數據表student中 stu_id和course_id兩個字段共同作為主鍵的SQL語句?
知識點主鍵約束
主鍵是通過PRIMARY KEY定義的,它可以唯一標識表中的記錄。它的主要特征如下:
1.唯一性:不能有重復值
2.非空性:不能為空值
SQL語句:
student( stu_id INT,course_id INT, PRIMARY KEY( stu_id, course_id));
4、簡述什么是索引以及索引的分類,並寫出為name字段建立全文索引的SQL語句?
知識點索引的分類
數據庫的索引好比新華字典的音序表,它是對數據庫表中一列或多列的值進行排序后的一種結構,其作用就是提高表中數據的查詢速度。
索引的分類如下:
1.普通索引
2.唯一性索引
3.全文索引
4.單列索引
5.多列索引
6.空間索引
為name字段建立全文索引:
FULLTEXT INDEX fulltext_name(name)
5.1、在數據庫中創建一個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.2、更新student表中grade字段的值,使grade字段的值在原有基礎上都增加10分,但不能超出100分的上限,超出100分的grade值都修改為100?
知識點更新數據
--更新數據
UPDATE student SET grade=grade+10; UPDATE student SET grade=100 where grade>100;
6、請寫出SELECT查詢語句的完整語法格式?
知識點簡單查詢
SELECT [DISTINCT] *|{字段名1, 字段名2, 字段名3,……} FROM 表名 [WHERE 條件表達式1]
[GROUP BY 字段名 [HAVING 條件表達式2]] [ORDER BY 字段名 [ASC|DESC]] [LIMIT [OFFSET] 記錄數]
7、現有一張學生表,表中字段有學生_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.1、根據如下條件編寫SQL語句:查詢存在年齡大於21歲的員工所對應的部門信息?
知識點帶EXISTS關鍵字的子查詢
SELECT * FROM department WHERE EXISTS(select did from employee where age > 21);
8.2、根據如下條件編寫SQL語句:采用自連接查詢與王紅在同一個部門的員工?
知識點內連接
SELECT p1.* FROM employee p1 JOIN employee p2 ON p1.did=p2.did WHERE p2.name='王紅';
如果在一個連接查詢中,涉及到的兩個表是同一個表,這種查詢稱為自連接查詢
9、請使用流程控制語句,編寫如下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;
10、簡述MySQL的事務的隔離級別有哪些?
知識點事務的隔離級別
1.READ UNCOMMITTED是事務中最低的級別,也稱為臟讀
2.READ COMMITTED只能讀取其它事務已經提交的內容,可以避免臟讀
3.REPEATABLE READ是MySQL默認的事務隔離級別,它可以避免臟讀、不可重復讀的問題
4.SERIALIZABLE是事務的最高隔離級別,它會強制對事務進行排序,使之不會發生沖突,從而解決臟讀、幻讀、重復讀的問題。
11、已知有一張 sales表,表中有上半年的銷量 first_half和下半年的銷量 latter_half。請在sales表上創建一個視圖,查詢出一年的總銷量?
知識點在單表上創建視圖
CREATE VIEW view_sales AS SELECT first_half+ latter_half FROM sales;
12、簡述修改視圖的兩種方式,並寫出其基本語法?
知識點修改視圖
1、使用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]
2、使用ALTER語句修改視圖
ALTER語句是MySQL提供的另外一種修改視圖的方法,使用ALTER語句修改視圖的基本語法格式如下所示:
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement [WITH[CASCADED | LOCAL] CHECK OPTION]
13、請寫出,使用mysqldump命令備份chapter08數據庫的SQL語句?
知識點數據的備份
mysqldump -uroot -pitcast chapter08>d:/chapter08.sql
14、請簡述如何解決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;重新加載權限表