当前位置:文档之家› MySQL数据库

MySQL数据库

MySQL数据库1.数据库又称Database,是存储和管理数据的软件系统,是各种数据库对象的集合。

它的作用是存储数据,管理数据和检索数据数据库可以简单看成存放“数据”的“仓库”,它是由表和其他数据库对象组成,数据存放在表中2.数据库的文件主数据文件:包含数据库的启动信息,还可以用来存储数据。

扩展名:mdf事务日志文件:保存用来恢复数据库的日志信息。

扩展名:ldf3.创建和删除数据库创建数据库:Create database 数据库名删除数据库:Drop database 数据库名4.基本数据类型varchar:用以存储可变长度的字符串,单位是“字节”nvarchar:用以存储可变长度的字符串,单位是“字符”char:用以存储固定长度的字符串,单位是“字节”datatime:用以存储日期时间数据float、decimal:用来存储浮点类型数据5.约束方法和完整性七大约束方法:主键约束、外键约束、唯一约束、标识列、默认值约束、check 约束、非空约束三大完整性:域完整性、实体完整性、引用完整性主键约束:必须给一张表建立一个永不重复的字段,用来区分一张表中的每一条记录,这个字段称为主键,任何一张数据表都必须要定义主键6.SQL语句创建表CREATE TABLE student(sid INT PRIMARY KEY AUTO_INCREMENT,sname VARCHAR(10) NOT NULL CHECK(len(sname)>1), sex NVARCHAR(1) NOT NULL DEFAULT '男',class VARCHAR(10))AUTO_INCREMENT=1001;CREATE TABLE course(cid INT PRIMARY KEY AUTO_INCREMENT,cname VARCHAR(30) NOT NULL UNIQUE);CREATE TABLE score(scid INT PRIMARY KEY AUTO_INCREMENT,sid1 INT NOT NULL,cid1 INT NOT NULL,score DECIMAL(5,1));#创建外键ALTER TABLE score ADD CONSTRAINT sid1 FOREIGN KEY(sid1) REFERENCES student(sid);ALTER TABLE score ADD CONSTRAINT cid1 FOREIGN KEY(cid1) REFERENCES course(cid);7.SQL语句关键字CREATE TABLE:创建表的语法,其后跟表的名称,表名称不要和关键字冲突PRIMARY KEY:定义该字段为主键字段AUTO_INCREMENT:定义为标识列NULL/ NOT NULL:定义该列是否可以为NULL,如果不写,则默认是NULL CHECK(len(sname)>1):定义约束,规定sname的值的长度必须大于一个字符DEFAULT :定义默认值,其后给出默认的值UNIQUE:定义唯一约束,规定该列的值不可发生重复FOREIGN KEY:定义该列为外键REFERENCES :定义该外键列引用了某主键表的某主键列表中除了最后一列的定义外,其他列的定义后跟“,”结束8.删除表Drop table 表名注意:一定要先删除外键表,然后删除主键表,否则数据库管理系统会报错。

原因:如果先删除了主键表,会导致外键表的外键,引用不到对应的主键表的主键,造成引用不完整9.添加、更新、删除表中的数据添加数据:Insert into 表名(列名1,列名2)values(值1,值2)向student表中添加数据:Insert into student(sname ,sex,class) values(‘Lucy’,’女’,’五班’) 更新数据:Update 表名set 列名=值where 条件将所有学员1号课程的分数加5分:Update score set score=score+5 where cid=1删除数据:Delete from 表名where 条件Truncate table 表名10.查询语句Select 列名列表from 表名where 条件查询所有学员信息:Select * from student“*”号表示student表的所有列11.排序Order by指定查询出的结果集根据那个列来排序按照班级升序排序Select * from student order by class ascAsc表示升序,desc表示降序12.合并重复记录Distinct可以在查询结果中合并重复记录查询哪些课程考过了Select distinct(cid) from score13.unionunion的作用是联合两个查询的结果集查询学生表中学号为1001、1003的学生信息SELECT * FROM student WHERE sid=1001UNIONSELECT * FROM student WHERE sid=1003;14.LimitLimit子句可以被用于强制SELECT 语句返回指定的记录数limit m,n其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条。

select * from student limit 2,4即取出第3条至第6条,4条记录SELECT * FROM table LIMIT 5;即取出前5 个记录行15.模糊查询需要查询满足某个条件范围的记录,使用between…and查询成绩60到90之间的学员信息:Select * from score where score between 60 and 90注意:between…and语句包含了上下限的值17.In字句和逻辑or类似,in字句也是用于在多个之中进行匹配查询成绩60和90的学员信息:Select * from score where score in(60,90)或Select * from score where score =60 or score =9017.聚合函数聚合函数不是对某个记录进行操作,而是对表中或查询到的记录进行操作注意:聚合函数不能用于where字句中18.分组查询group by实现分组查询查询每门课程的平均分:Select cid1,avg(score) from score group by cid1注意:分组查询时,select之后的字段必须出现在group by中,如果没有,则该字段必须被包含在聚合函数中19.having字句having字句是对查询出的结果集进行筛选,‘只留下’满足条件的记录,having字句后可以使用聚合函数查询1号课程平均分大于75的成绩:Select cid1,avg(score) from score where cid1=1 group by cid1 having avg(score)>7520.子查询子查询是一个嵌套在select、insert、update、delete语句中的select查询,子查询的结果一般是作为父查询的条件查询和Tom在同一班级的学员:Select * from student where class=(select class from student where sname=’Tom’)21.exists的子查询Exists字句只是做一次存在性测试,其返回值为true或者false 如果1号学员参加过考试,则查询出1号学员的信息:Select * from student where exists(Select * from score where sid1=1) and sid=1注意:Exists关键字前面没有列名,常量或其他表达式Exists后的子查询要使用小括号22.多表联查只要涉及到多表联查,from字句后必须给出select后的字段所涉及的所有表名称,并且,where字句后必须给出所有的主外键关联查询所有的学员名称、课程名称、分数信息:Select sname,cname,score from student,course,score where student.sid=score.sid1 and course.cid=score.cid1 ;查询所有参加C语言考试的学员名称、课程名称、分数信息:Select s.sname,ame,sc.score fromstudent s,course c,score sc wheres.sid=sc.sid1 and c.cid=sc.cid1 and ame=’C语言’ ;23.内连接内连接使用inner join…on…,总是查询满足主外键连接的最小记录集查询所有的学员名称、课程名称、分数信息:Select sname,cname,score from studentinner join score on student.sid=score.sid1inner join course on course.cid=score.cid1 ;24.左连接左连接使用left join…on…,在两个主外键表的联查中,left join左边的表中的内容会全部查出来,而不管在left join右边的表中的记录查询所有的学员的所有课程的成绩:Select s.sname,ame,sc.score from student sleft join score sc on s.sid=sc.sid1left join course c on c.cid=sc.cid1 ;25.右连接右连接使用right join…on…,在两个主外键表的联查中,right join右边的表中的内容会全部查出来,而不管在right join左边的表中的记录查询所有已经考过的学员名称、课程和成绩:Select s.sname,ame,sc.score from student sright join score sc on s.sid=sc.sid1left join course c on c.cid=sc.cid1 ;。

相关主题