数据库学习

明明就-——数据库学习

1.建数据库

CREATE DATABASE 数据库名;

2.建表

CREATE TABLE <表名>
(<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],
...........
[表级完整性约束条件]
);

以Student、Course、SC表为例:

/*Student表*/
CREATE TABLE Student(
Sno CHAR(9) PRIMARY KEY,/*列级完整性约束条件,Sno为主键*/
Sname CHAR(20) UNIQUE,/*Sname取唯一值*/
Ssex CHAR(2),
Sage int,
Sdept CHAR(20)
);

/*Course表*/
CREATE TABLE Course(
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40)  NOT NULL,
Cpno CHAR(4),/*先修课*/
Ccredit int,
FOREIGN KEY(Cpno)REFERENCES Course(Cno)
/*表级完整性约束t条件,Cpno是外码,被参考表是Course,被参照列是Cno*/
);

/*SC学生选课表*/
CREATE TABLE SC(
Sno CHAR(9),
Cno CHAR(4),
Grade int,
PRIMARY KEY(Sno,Cno),/*主码由两个属性组成*/
FOREIGN KEY(Sno) REFERENCES Student(Sno),/*表级完整性约束t条件,Sno是外码,被参考表是Student,被参照列是Sno*/
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);

3.修改基本表

ALTER TABLE <表名>
[ADD [column]<新列名><数据类型>[完整性约束]]
[ADD <表级完整性约束>]
{DROP [column]<列名>[CASCADE/RESTRICT]]
[DROP CONSTRAINT<完整性约束>[RESTRICT/CASCADE]]
[ALTER column<列名><数据类型>];
/*注释:*/

例:

  • 向Student表增加“入学时间”列,其时间类型为日期型
ALTER TABLE Student ADD S_entrance DATE;
  • 将年龄的数据类型由字符型改为整数
ALTER TABLE Student ALTER column age INT;

4.删除基本表

DROP TABLE <表名>[RESTRICT/CASCADE];

例:删除Student表

DROP TABLE Student CASCADE;

5.数据查询

SELECT[ALL/DISTINCT]<目标列表达式>
from<表名或视图名>
[WHERE <条件表达式>]
[GROUP BY<列名>[HAVING <条件表达式>]]
[ORDER BY<列名>[ASC/DESC]];

例:查询所有考试成绩不及格的学生的学号

SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;

例:确定范围
查询年龄在20~23(包括20岁和23岁)之间学生的姓名、系别、年龄

SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;

例:确定集合

SELECT Sname,Ssex
FROM Student
WHERE Sdept IN('CS','MA','IS');

例:查询所有姓刘的学生的姓名

SELECT Sname
FROM Student
WHERE Sname LIKE"刘%';

例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。默认是升序(ASC)

SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC;

例:查询平均成绩大于等于90分的学生学号和平均成绩

SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;
/*WHERE子句中不能用聚集函数作为条件表达式的,HAVING短语作用于组,从中选择满足条件的组*/

例:连接查询,
查询选修2号课程且成绩在90分以上的所有学生的学号和姓名

SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.Sno AND SC.Cno='2'AND SC.Grade>90;

5.数据更新

  • 插入数据
INSERT INTO <表名>VALUES(<常量1>,[<常量2>]...);
  • 修改数据
UPDATE<表名>
SET<列名>=<表达式> [,<列名>=<表达式>]...
[WHERE <条件>];

6.删除数据

DELETE FROM<表名>[WHERE <条件>]
上一篇:MySQL-常用语句(定义、查询、操纵、控制)


下一篇:数据库sql查询习题