数据库SQL语句操作用例

MySQL数据库,SQL语句操作。

1 创建数据库
create database school;
USE school;
创建建表及插入:

CREATE TABLE students
(
s_no VARCHAR(20) ,
s_name VARCHAR(20),
s_sex CHAR(2),
s_birth DATETIME,
s_address VARCHAR(30),
s_account decimal(9,2),
s_password VARCHAR(20)
);

CREATE TABLE courses
(
c_no CHAR(10),
c_name VARCHAR(30),
c_date DATETIME,
c_credit INT,
c_information VARCHAR(50)
);

CREATE TABLE enrollment
(
s_no VARCHAR(20),
c_no CHAR(10),
e_score INT,
e_date DATETIME,
e_register_state CHAR(1),
e_check_state CHAR(1),
e_test_state CHAR(1)
);

INSERT INTO students VALUES('200920001', '张三', '女', '1982-03-24', '北京市', 8200.0, '200920001');
INSERT INTO students VALUES('200920002', '李四', '男', '1976-07-23', '天津市', 3500.0, '200920002');
INSERT INTO students VALUES('200920003', '王五', '男', '1976-10-21', '天津市', 4500.0, '200920003');
INSERT INTO students VALUES('200920004', '赵六', '女', '1974-08-26', '长春市', 4000.0, '200920004');
INSERT INTO students VALUES('200920005', '钱七', '男', '1975-07-23', '天津市', 4300.0, '200920005');
INSERT INTO students VALUES('200920006', '吴八', '男', '1972-12-14', '天津市', 5500.0, '200920006');

INSERT INTO courses VALUES('22010401', '高等数学', '2009-03-01', 4, '基础课');
INSERT INTO courses VALUES('22010402', '高等代数', '2009-03-01', 4, '基础课');
INSERT INTO courses VALUES('22010403', '大学物理', '2009-03-01', 3, '基础课');
INSERT INTO courses VALUES('22010404', '计算机基础', '2009-03-01', 3, '基础课');
INSERT INTO courses VALUES('22010405', '程序设计', '2009-03-01', 2, '专业课');
INSERT INTO courses VALUES('22010406', '操作系统', '2009-03-01', 2, '专业课');
INSERT INTO courses VALUES('22010407', '数据库应用', '2009-03-01', 2, '专业课');
INSERT INTO courses VALUES('22010408', '数据结构', '2009-03-01', 3, '专业课');
INSERT INTO courses VALUES('22010409', '计算机网络', '2009-03-01', 2, '专业课');
INSERT INTO courses VALUES('22010410', '人工智能', '2009-03-01', 2, '专业课');

INSERT INTO enrollment VALUES('200920001', '22010409', 88, '2009-3-12', '1', '1', '1');
INSERT INTO enrollment VALUES('200920001', '22010410', 93, '2009-3-10', '1', '1', '1');
INSERT INTO enrollment VALUES('200920003', '22010407', 0, '2009-3-10', '0', '0', '0');
INSERT INTO enrollment VALUES('200920003', '22010409', 79, '2009-3-12', '1', '1', '1');
INSERT INTO enrollment VALUES('200920003', '22010410', 74, '2009-3-10', '1', '1', '1');
INSERT INTO enrollment VALUES('200920002', '22010409', 0, '2009-3-9', '0', '0', '0');
INSERT INTO enrollment VALUES('200920002', '22010407', 91, '2009-3-9', '1', '1', '1');
INSERT INTO enrollment VALUES('200920002', '22010410', 45, '2009-3-9', '1', '1', '1');
INSERT INTO enrollment VALUES('200920004', '22010407', 0, '2009-3-10', '1', '0', '0');
INSERT INTO enrollment VALUES('200920006', '22010406', 0, '2009-3-12', '1', '1', '0');

  1. 删除enrollment表中'e_check_state'字段下的信息(将该表中所有记录的e_check_state字段置为空值)。
    UPDATE enrollment SET e_check_state=null

  2. 将"计算机网络"的课程信息改为"专业基础课"。
    UPDATE courses SET c_name='专业基础课' where c_name='计算机网络'

4.删除“王五”同学的记录。
DELETE FROM students WHERE s_name='王五'

5 MySql操作:

新增一列:
Use school
Alter table students
Add xxx varchar( )
修改原有的:
Use school
Alter table students
Alter column xxx varchar(新值)

删除原有的:
Use school
Alter table students
Drop column xxx (删除数据表的列)
或者
Use school
Delete from students
Where xx=xxx(删除数据表的行,where 是符合条件的)

修改姓名:
Use school
Update students
Set name=xx
Where name=xx

将 sex(性别)为‘男’且 address(家庭地址)为‘天津市’的学生的 account(帐
户)增加 20%:
USE school
UPDATE students
SET account=account*(1+0.20)
WHERE sex='男'
AND address='天津市

查看students 表的数据信息
Use school
Selectfrom students( 号返回 所有字段的信息)
查询学生的姓名
Select name
From students

查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名
SELECT name,'Year of Birth: ',2007-Sage,
LOWER (sdept)
FROM Student;

返回唯一的不重复的:
Select distinct sno from xx

查询所有年龄在20岁以下的学生姓名及其年龄。
SELECT Sname,Sage
FROM Student
WHERE Sage < 20

查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23【不在就是not between】
或者写为WHERE Sage>=20 AND Sage<=23;

查询所有姓刘学生的姓名、学号和性别。
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE '刘%'

查询学号为200615121的学生的详细情况。
SELECT *
FROM Student
WHERE Sno LIKE ‘200615121';(修改为 WHERE Sno = ‘200615121'; 也可以,like 可以与通配符 % 组合)

查询名字中第2个字为“阳”字的学生的姓名和学号。
SELECT Sname,Sno
FROM Student
WHERE Sname LIKE '阳%'【%:代表任意长度(长度可以为0)的字符串;:代表任意单个字符】

查询课程名以‘DB_’开头的课程的课程号、课程名和学分。
SELECT Cno,cname,Ccredit
FROM Course
WHERE Cname LIKE 'DB_%'

查询名字中第二字为“大”或“小”的学生的姓名和学号。
select sname,sno from student
where sname like ‘_[大小]%’

查询学号中最后一位不是2、3、5的学生情况。
Select * from student where sno like ‘%[^235]’
select * from student where rtrim(sno) like '%[^235]'
(rtrim(sno)的作用是去掉空格特殊字符)
【 [ ]:匹配[ ]中的任意一个字符。
[^]:不匹配[ ]中的任意一个字符。】

查询计算机系年龄在20岁以下的学生姓名。
SELECT Sname
FROM Student
WHERE Sdept= 'CS' AND Sage<20;

查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
SELECT Sno,Grade
FROM SC
WHERE Cno= ' 3 '
ORDER BY Grade DESC

在全体学生的课程成绩情况中,查询成绩最高的三个选课记录。
select top 3 * from sc order by grade desc

查询全体学生情况,查询结果按所在系(sdept)的系号升序排列,同一系中的学生按年龄降序排列。
(select * from 学生表 order by 系号asc ,年龄 desc )

查询学生总人数。
SELECT COUNT(*)
FROM Student;

查询选修了课程的学生人数。
SELECT COUNT(DISTINCT Sno)
FROM SC;

计算选修1号课程学生的平均成绩。
SELECT AVG(Grade)
FROM SC
WHERE Cno= ' 1 '

查询选修1号课程学生的最高分数。
SELECT MAX(Grade)
FROM SC
WHER Cno= ' 1 '

查询学生200615122选修课程的总成绩。
SELECT SUM(Grade)
FROM SC
WHER Sno=‘200615122’

求每个课程的选修学生人数,并显示相应的课程号。
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;

求每门课程中得优(成绩在90分以上)的学生人数,并显示其相应的课程号。
SELECT Cno,COUNT(Sno)
FROM SC
WHERE Grade>=90
GROUP BY Cno;

查询选修了3门以上课程的学生学号。
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;

查询有3门以上课程在90分以上的学生的学号及90分以上的课程数。
SELECT Sno, COUNT()
FROM SC
WHERE Grade>=90
GROUP BY Sno
HAVING COUNT(
)>=3

查询每个学生及其选修课程的情况。
SELECT Student.,SC.
FROM Student,SC
WHERE Student.Sno=SC.Sno;(两个表联合查询,条件是Student表的Sno 字段 与 SC表的字段Sno 相等)

【自然连接】SELECT student.sno, sname, ssex, sage, sdept, cno, grade
FROM Student,SC
WHERE Student.sno=SC.sno;
列出所有学生的信息及其选修课程的信息
SELECT student.sno,sname,ssex,sage,sdept,cno,grade
FROM student LEFT OUTER JOIN sc ON student.sno= sc.sno;
(连接的记录数与student表的记录数同 ,不符合条件student.sno= sc.sno的为null值 )

查询其他系中比计算机系某一学生年龄小的学生姓名和年龄
SELECT Sname,Sage
FROM Student
WHERE Sage < ANY (SELECT Sage
FROM Student
WHERE Sdept= ' CS ')

查询其他系中比计算机系所有学生年龄都小的学生姓名及年龄。
SELECT Sname,Sage
FROM Student
WHERE Sage < ALL
(SELECT Sage
FROM Student
WHERE Sdept= ' CS ')
AND Sdept <> ' CS ’;

查询所有选修了1号课程的学生姓名。
SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno= ‘ 1 ’);

查询选修了课程的学生姓名
SELECT Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno;