數據庫–MySQL數據管理
文章目錄
- 數據庫--MySQL數據管理
- 1.外鍵管理
- 2.數據庫數據管理
- 3.DML語言
- 3.1添加數據
- 3.2修改數據
- 3.3刪除數據
- 4.練習
1.外鍵管理
- 外鍵概念
- 如果公共關鍵字在一個關系中是主關鍵字,那么這個公共關鍵字被稱為另一個關系的外鍵。由此可見,外鍵表示了兩個關系之 間的相關聯系。以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。
- 外鍵作用
- 保持數據一致性,完整性,主要目的是控制存儲在外鍵表中的數據,約束。使兩張表形成關聯,外鍵只能引用外表中的列的值或使 用空值。
- 創建外鍵
- 建表時指定外鍵約束
- 建表后修改
- 刪除外鍵
- 刪除外鍵、刪除表
2.數據庫數據管理
- 數據庫意義
- 數據存儲
- 數據管理
- 管理數據庫數據方法
- 通過
SQLyog
等管理工具管理數據庫數據 - 通過DML語句管理數據庫數據
- 通過
3.DML語言
- DML(Data Manipulation Language,數據操作語言)
- 用于操作數據庫對象中所包含的數據
- 包括
- INSERT ( 添加數據語句 )
- UPDATE ( 更新數據語句 )
- DELETE ( 刪除數據語句 )
3.1添加數據
-
INSERT命令
#新增數據 (插入一條數據) 字段一定要寫 INSERT INTO 表名 [( 字段1, 字段2, 字段3,...)] VALUES('值1', '值2', '值3',...)INSERT INTO `subject`(SubjectNO,SubjectName,ClassHour,GradeID) VALUES(01,'數據庫',22,3);INSERT INTO student (StudentNO,StudentName,Sex,GradeID,Phone,Address,BornDate,Email,IdentityCard) VALUES(1011,'郭靖',1,1,'13500000001','北京海定區中關村大街1號','1986-12-11','guojing @bdqn.cn','450323198612111000');#新增數據 (插入多條數據) insert into 表名(字段名1,字段名2,...,字段名N) values (值1,值2,...,值N), (值1,值2,...,值N), ... ... (值1,值2,...,值N);#新增數據 (插入多條數據) #INSERT語句向數據表student添加數據 INSERT INTO student (StudentNO,StudentName,Sex,GradeID,Phone,Address,BornDate,Email,IdentityCard) VALUES(1011,'郭靖',1,1,'13500000001','北京海定區中關村大街1號','1986-12-11','guojing @bdqn.cn','450323198612111000'), (1013,'李梅',0,3,'13500000015','上海','1986-12-31','limei@bdqn.cn','450323198612311000'), (1012,'李文才',1,2,'13500000002','河南洛陽','1981-12-31','liwencai@bdqn.cn','450323198112311000');#INSERT語句為課程表subject添加數據 INSERT INTO `subject` (SubjectNO,SubjectName,ClassHour,GradeID) VALUES(1,'高等數學-1',120,1),(2,'高等數學-2',110,2), (3,'高等數學-3',100,3),(4,'高等數學-4',130,4);INSERT INTO result (StudentNO,SubjectNO,StudentResult) VALUES('1011','1','99'),('1012','1','79'),('1013','1','89'),('1012','2','69'),('1011','3','88'),('1012','3','79'),('1013','3','66');
-
字段或值之間用英文逗號隔開
-
“字段1, 字段2…”該部分可省略,但添加的值務必與表結構數據列順序相對應,且數量一致(字段盡量不要省略)
-
可同時插入多條數據,values 后用英文逗號隔開
-
3.2修改數據
-
UPDATE命令
UPDATE 表名 SET column_name = value [,column_name2 = value2,...] [WHERE條件];#UPDATE語句修改student表數據 UPDATE student SET Email='student1013@bdqn.cn',LoginPwd='000000' WHERE StudentNO=1013; #將數據表subject中ClassHour大于110且GradeID為1的課時都減少10 UPDATE `subject` SET ClassHour=ClassHour-10 WHERE ClassHour>110 AND GradeID=1;
- column_name 為要更改的數據列
- value 為修改后的數據,可以為變量、具體值、表達式或者嵌套的SELECT結果
- condition為篩選條件,如不指定則修改該表的所有列數據
-
WHERE條件子句
- 簡單理解為有條件地從表中篩選數據
- WHERE中的運算符
運算符 含義 范例 結果 = 等于 5=6 false <> 或 != 不等于 5!=6 true > 大于 5>6 false < 小于 5<6 true >= 大于等于 5>=6 false <= 小于等于 5<=6 true BETWEEN 在某個范圍之間 BETWEEN 5 AND 10 - AND 并且 5>1 AND 1>2 false OR 或 5>1 OR 1>2 true
3.3刪除數據
- DELETE命令
DELETE FROM 表名 [WHERE條件]; DELETE FROM student WHERE StudentNo=1000;
-
condition為篩選條件,如不指定則刪除該表的所有列數據
-
TRUNCATE命令
- 用于完全清空表數據,但表結構、索引、約束等不變
TRUNCATE [TABLE] table_name;
- 區別于DELETE命令
- 相同
- 都能刪除數據、不刪除表結構,但TRUNCATE 速度更快
- 不同
- 使用TRUNCATE TABLE重新設置AUTO_INCREMENT計數器
- 使用TRUNCATE TABLE不會對事務有影響
4.練習
#學生表插入數據
INSERT INTO student VALUES('108','曾華','男','1977-09-01','95033'),
('105','匡明','男','1975-10-02','95031'),
('107','王麗','女','1976-01-23','95033'),
('101','李軍','男','1976-02-20','95033'),
('109','王芳','女','1975-02-10','95031'),
('103','陸君','男','1974-06-03','95031');
#課程表插入數據
INSERT INTO course VALUES('3-105','計算機導論','825'),
('3-245','操作系統','804'),
('6-166','數字電路','856'),
('9-888','高等數學','831');
#成績表插入數據
INSERT INTO score VALUES('103','3-245','86'),
('105','3-245','75'),
('109','3-245','68'),
('103','3-105','92'),
('105','3-105','88'),
('109','3-105','76'),
('101','3-105','64'),
('107','3-105','91'),
('108','3-105','78'),
('101','6-166','85'),
('107','6-166','79'),
('108','6-166','81');
#教師表插入數據
INSERT INTO teacher VALUES('804','李誠','男','1958-12-02','副教授','計算機系'),
('856','張旭','男','1969-03-12','講師','電子工程系'),
('825','王萍','女','1972-05-05','助教','計算機系'),
('831','劉冰','女','1977-08-14','助教','電子工程系');
#將course表中高等數學修改為JAVA高級編程
UPDATE course SET Cname='JAVA高級編程' WHERE Cname='高等數學';
#刪除學生陸君的信息 (學生信息及學生考試成績)
DELETE FROM score WHERE score.Sno IN(SELECT Sno FROM student WHERE Sname ='陸君');
DELETE FROM student WHERE Sname ='陸君';
#查詢95031班級所有男生信息,返回學號,姓名,性別,出生日期,班級編號
SELECT Sno '學號',Sname '姓名',Ssex '性別',Sbirthday '出生日期',Class '班級編號'
FROM student WHERE Class='95031' AND Ssex='男';
#查詢Score表中成績為85,86或88的記錄
SELECT Sno,Cno,Degree FROM score WHERE Degree IN(85,86,88);
#查詢Score表中成績為85,86或88的記錄,返回學號,課程名稱(注意不是課程編號)
SELECT Sno '學號',Cname '課程名稱',Degree '成績' FROM score,course
WHERE Degree IN(85,86,88) AND score.Cno=course.Cno;