MySQL数据库常用语句

建立一个新数据库
create database 数据库名

撤消一个数据库
drop database 数据库名

指定当前数据库
use 数据库名

建立一个“学生”表Student,其中学号为主码,姓名取值不允许空,性别取值为男或者女。
CREATE TABLE Student
( SNO CHAR(8),
SNAME CHAR(8) NOT NULL,
SAGE SMALLINT, SSEX ENUM(‘男’,’女’),
CREATE TABLE Student
( SNO CHAR(8),
SNAME CHAR(8) NOT NULL,
SAGE SMALLINT,
SSEX char(2),
Sdept char(30),
PRIMARY KEY (SNO))
建立一个“课程”表COURSE ,其中课号为主码,课程名取值不允许空且唯一,学分缺省值为3。
CREATE TABLE COURSE
( CNO CHAR(8) PRIMARY KEY ,
CNAME CHAR(10) NOT NULL UNIQUE,
CPNO CHAR(8) ,
CCREDIT TINYINT DEFAULT 3
);

CREATE TABLE SC
(SNO CHAR(8),
CNO CHAR(8),
GRADE SMALLINT,
PRIMARY KEY (SNO,CNO),
FOREIGN KEY (SNO)
REFERENCES STUDENT(SNO),
FOREIGN KEY (CNO)
REFERENCES COURSE(CNO));
建立一个教员表,属性包括教员的编号,姓名,出生日期,工资,所在系。其中编号为主码,工资缺省值为1000。
CREATE TABLE PROF
( PNO CHAR(10) ,
PNAME CHAR(10) NOT NULL,
BDATE DATETIME,
SALARY INT default 1000, DNO SMALLINT,
PRIMARY KEY (PNO)
);
在Student表中增加一个“入学时间”列.
ALTER TABLE Student
ADD Sentrance char(10);

将课程基本表中的“先修课”列删除。
ALTER TABLE COURSE
DROP COLUMN CPNO;

将STUDENT表中的Sentrance列数据类型修改为date类型
ALTER TABLE STUDENT
modify Sentrance date;

将sc表中的grade列名改为score
ALTER TABLE sc
change grade score int;

删除基本表(drop)
drop table 表名

创建学生表中姓名升序的唯一索引

CREATE UNIQUE INDEX IDX_SNAME ON STUDENT (SNAME);

索引的删除
drop index 索引名
例:
DROP INDEX IDX_SNO on student;
INSERT (插入数据)
INSERT INTO <表名> [ ( <列名>[,<列名>……])]
VALUES (常量 [,常量…….]);
例:将IS的全体学生选修数据结构课程的信息添入选课表.
INSERT INTO sc ( SNO, CNO )
SELECT SNO, CNO
FROM STUDENT, COURSE
WHERE sdept=’is’ And CNAME=’数据结构’;

对每一个系,求学生的平均年龄,并存入数据库
create table dept_age
select sdept ,avg(sage) avg_age
from student
GROUP BY SDEPT

UPDATE (修改数据)
将学生95001的年龄改为22岁。
UPDATE Student
SET Sage=22
WHERE Sno=’95001’;
将is系所有学生的年龄增加1岁。
UPDATE Student
SET Sage= Sage+1
WHERE Sdept=’IS’;
将计算机系全体学生的2号课程成绩置空.
UPDATE sc
SET GRADE = null
WHERE CNO=’2’
AND SNO IN
(SELECT SNO FROM Student
WHERE Sdept=’CS’ );

DELETE (删除数据)
删除学号为95003的学生记录
DELETE
FROM Student
WHERE SNO=‘95003’;
查询
查询所有年龄在20岁以下的学生姓名及其年龄。
select sname,sage
from student
where sage < 20;
查找成绩在70到80分之间的学生选课情
select *
from sc
where grade between 70 and 80;
查询信息系(is)、数学系(ma)和计算机科学系(cs)学生的姓名和性别。
select sname,ssex
from student
where sdept in ( ‘is’,’ma’,’cs’ );
Where 子句——Like
列出姓张的学生的学号、姓名。
Select sno,sname
From Student
Where sname LIKE ‘张%’
列出张姓且单名的学生的学号、姓名。
Select sno,sname
From Student
Where sname LIKE ‘张_’
列出课程名称中带有‘_’的课号及课名。
Select cno,cname
From Course
Where cname LIKE ‘%_%’
Where 子句——NULL
检索选修课程但没有参加考试的学生的学号,课程号
SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL;

Order By子句
Select sno, sname,sage
From Student
Where sdept = ‘IS’
Order By sage ASC

集函数
查询学生总人数。
SELECT COUNT(*)
FROM Student;
查询选修了课程的学生人数。
SELECT COUNT(DISTINCT Sno)
FROM SC;
计算1号课程的学生总分和平均成绩。
SELECT Sum(Grade) 总分, Avg(Grade) 平均分
FROM SC
WHERE Cno= ‘1’;

查询选修3号课程的学生最高分数与最低分的差。
SELECT MAX(Grade)-MIN(Grade)
FROM SC
WHERE Cno= ‘3’;

Group by子句
求各个课程号及相应的选课人数。
SELECT Cno, COUNT(Sno)
FROM SC
GROUP BY Cno;

HAVING短语

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值