数据库学习笔记
- 格式:docx
- 大小:23.90 KB
- 文档页数:14
数据库学习总结数据库是现代信息技术的核心之一,它不仅是计算机科学专业的必修课程,也是各个行业应用普遍的核心技术之一。
本文通过总结数据库的概念、分类、设计、应用等方面,来系统性介绍数据库的一些基本知识和应用要点,希望能对广大读者提供一定的帮助和参考。
一、数据库的概念及分类数据库指的是一组相关数据的集合,它通常以高效、安全、可控的方式组织、存储和管理数据,为各种信息应用提供数据服务和支持。
数据库主要包括关系型数据库和非关系型数据库两大类。
关系型数据库(RDBMS)是以表的形式组织数据的,每个表具有一个唯一的名称,并由一组行和列组成。
表中的每一行表示一个记录,而每一列表示一个属性或字段。
在关系型数据库中,数据的组织和查询都是以SQL为基础的,因此其具有良好的数据一致性、完整性和安全性,适用于大型的企业级应用开发。
非关系型数据库(NoSQL)则是一类基于键值对或文档模型的数据库,它与关系型数据库直接不同,最大的特点是其结构化数据模型的松散性、高可扩展性和对非结构化数据的支持。
由于非关系型数据库的数据结构较为松散、查询语言也相对灵活,因此在众多的互联网场景中得到了广泛的应用,如社交网络、物联网、金融分析等。
二、数据库的设计方法数据库的设计是指在实际应用中,通过系统分析、数据建模和实现过程中生成一个可用的数据库。
数据库设计要考虑到数据的记录格式、存储和检索方法、关联关系等方面。
数据建模是数据库设计的核心环节,通过它可以将不同类型的数据转换为数据库能够容纳的表的形式,从而实现数据的存储和查询。
数据建模可以采用实体-关系模型(ERM)或面向对象模型(OOM)等方法。
实体-关系模型着重于描述实体之间的关系,它通过实体、属性和关系来表达数据的结构和关联。
每个实体都代表一个现实世界的事物,属性则是描述这个事物特征的数据元素,关系则表示实体之间的联系。
面向对象模型则是基于面向对象编程的思想,以类、对象、继承和多态等概念为基础建立数据模型。
⏹数据(Data)是数据库中存储的基本对象⏹数据的定义⏹描述事物的符号记录⏹数据的种类⏹文字、图形、图象、声音⏹数据的特点⏹数据与其语义是不可分的数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合⏹数据库的特征⏹数据按一定的数据模型组织、描述和储存⏹可为各种用户共享⏹冗余度较小⏹数据独立性较高⏹易扩展⏹数据库管理系统(Database Management System,简称DBMS)是位于用户与操作系统之间的一层数据管理软件。
⏹DBMS的用途⏹科学地组织和存储数据、高效地获取和维护数据DBMS的主要功能⏹数据库的运行管理保证数据的安全性、完整性、多用户对数据的并发使用发生故障后的系统恢复⏹数据库的建立和维护功能(实用程序)数据库数据批量装载数据库转储介质故障恢复数据库的重组织性能监视等数据库系统(Database System,简称DBS)是指在计算机系统中引入数据库后的系统构成。
⏹数据库系统的构成⏹由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。
⏹数据管理⏹对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
⏹数据模型应满足三方面要求⏹能比较真实地模拟现实世界⏹容易为人所理解⏹便于在计算机上实现⏹数据模型分成两个不同的层次(1) 概念模型也称信息模型,它是按用户的观点来对数据和信息建模。
(2) 数据模型主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模。
⏹客观对象的抽象过程---两步抽象⏹现实世界中的客观对象抽象为概念模型;⏹把概念模型转换为某一DBMS支持的数据模型。
⏹数据结构⏹对象类型的集合数据结构是对系统静态特性的描述⏹两类对象⏹与数据类型、内容、性质有关的对象⏹与数据之间联系有关的对象⏹数据操作⏹对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则⏹数据操作的类型⏹检索⏹更新(包括插入、删除、修改)⏹数据模型对操作的定义⏹操作的确切含义⏹操作符号⏹操作规则(如优先级)⏹实现操作的语言⏹数据操作是对系统动态特性的描述。
UNIT 1四个基本概念1.数据(Data):数据库中存储的基本对象2.数据库的定义:数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合3.数据库管理系统(简称DBMS):位于用户与操作系统之间的一层数据管理软件(系统软件)。
用途:科学地组织和存储数据;高效地获取和维护数据主要功能: 数据定义功能; 数据操纵功能; 数据库的运行管理; 数据库的建立和维护功能(实用程序)4.数据库系统(Database System,简称DBS):指在计算机系统中引入数据库后的系统数据库系统的构成数据库数据库管理系统(及其开发工具)应用系统数据库管理员(DBA)和用户数据管理技术的发展过程人工管理阶段文件系统阶段数据库系统阶段数据库系统管理数据的特点如下(1) 数据共享性高、冗余少;(2) 数据结构化;(3) 数据独立性高;(4) 由DBMS进行统一的数据控制功能数据模型用来抽象、表示和处理现实世界中的数据和信息的工具。
通俗地讲数据模型就是现实世界数据的模拟。
数据模型三要素。
数据结构:是所研究的对象类型的集合,它是刻画一个数据模型性质最重要的方面;数据结构是对系统静态特性的描述数据操作:对数据库中数据允许执行的操作及有关的操作规则;对数据库中数据的操作主要有查询和更改(包括插入、修改、删除);数据操作是对系统动态特性的描述数据的约束条件:数据及其联系应该满足的条件限制E-R图实体:矩形框表示属性:椭圆形(或圆角矩形)表示联系:菱形表示组织层数据模型层次模型网状模型关系模型(用“二维表”来表示数据之间的联系)基本概念:●关系(Relation):一个关系对应通常说的一张表●元组(记录): 表中的一行●属性(字段):表中的一列,给每一个属性名称即属性名●分量:元组中的一个属性值,分量为最小单位,不可分●主码(Key):表中的某个属性组,它可以唯一确定一个元组。
●域(Domain):属性的取值范围。
《快速念咒:MySQL入门指南与进阶实战》阅读记录1. 第一章数据库基础在开始学习MySQL之前,了解一些数据库的基础知识是非常重要的。
数据库是一个用于存储和管理数据的计算机软件系统,它允许用户通过关键字或特定的查询语言来检索、更新和管理数据。
在数据库中,数据是以表格的形式进行组织的,每个表格都包含了一组相关的数据项,这些数据项被称为记录。
表(Table):表是数据库中存储数据的基本单位。
每个表都有一个唯一的名称,并由行(Row)和列(Column)组成。
每一行代表一个数据记录,每一列代表一个特定的数据属性。
字段(Field):字段是表中的一列,代表了数据的一种属性。
每个字段都有一个唯一的名称和一个数据类型,用于定义该字段可以存储的数据种类。
主键(Primary Key):主键是表中的一个特殊字段,用于唯一标识表中的每一行记录。
主键的值必须是唯一的,且不能为NULL。
外键(Foreign Key):外键是一个表中的字段,它的值引用了另一个表的主键值。
外键用于建立两个表之间的联系,确保引用完整性。
索引(Index):索引是一种数据库优化技术,用于提高查询性能。
通过创建索引,数据库可以更快地定位到表中的特定记录,而不必扫描整个表。
SQL(Structured Query Language):SQL是用于与数据库进行交互的编程语言。
它包括用于数据查询、插入、更新和删除的操作符和语法结构。
理解这些基本概念是学习MySQL的前提。
通过掌握SQL语言的基本语法和操作,你将能够有效地管理和操作数据库中的数据。
在接下来的章节中,我们将深入探讨MySQL的具体应用,包括如何创建和管理数据库、表、以及如何执行复杂的查询操作。
2. 第二章数据库设计《快速念咒:MySQL入门指南与进阶实战》是一本全面介绍MySQL 数据库的书籍,其中第二章详细阐述了数据库设计的基础知识和实践技巧。
在这一章节中,作者首先介绍了数据库设计的基本概念和目标,包括数据模型、实体关系模型(ER模型)等,并解释了如何通过这些模型来描述现实世界中的数据和业务逻辑。
MySQL数据库学习笔记数据库 DDL: 数据定义语⾔, 包含数据库和表相关的操作(MySQL中保存数据需要先建库再建表,最后把数据保存到表中) DML: 数据操作语⾔, 包含增删改查相关的SQL DQL: 数据查询语⾔, 只包含查询相关的SQL TCL: 事务控制语⾔, 包括和事务相关的SQL DCL: 数据控制语⾔, 包括⽤户管理及权限分配相关的SQLDDL数据定义语⾔ 数据库相关SQL 1. 查询所有数据库 show databases; 2. 创建数据库 格式: create database 数据库名; 指定字符集格式: create database 数据库名 character set utf8/gbk; 举例: create database db1; create database db2 character set utf8; create database db3 character set gbk; show databases; 3. 查询数据库详情 格式: show create database 数据库名; 举例: show create database db1; show create database db2; show create database db3; 4. 删除数据库 格式: drop database 数据库名; drop database db3; 5. 使⽤数据库必须使⽤了某个数据库之后才能执⾏表和数据相关的SQL 格式: use 数据库名; use db1; 表相关SQL 操作表相关的SQL 必须使⽤了某个数据库之后再操作use db1; 1. 创建表 格式: create table 表名(字段1名类型,字段2名类型); 指定字符集格式: create table 表名(字段1名类型,字段2名类型) charset=utf8/gbk; 举例: create table person (name varchar(20),age int); create table student(name varchar(20),score int) charset=utf8; create table car(name varchar(20),price int) charset=gbk; 2. 查询所有表 格式: show tables; 3. 查询表详情 格式: show create table 表名 举例: show create table person; 4. 查看表字段 格式: desc 表名; 举例: desc student; 5. 删除表 格式: drop table 表名 举例: drop table car; 表相关SQL(续) use db1; 1. 修改表名格式: rename table 原名 to 新名; rename table student to stu; 2. 添加表字段 最后添加格式: alter table 表名 add 字段名类型; 最前⾯添加个格式: alter table 表名 add 字段名类型 fifirst; xxx字段后⾯添加格式: alter table 表名 add 字段名类型 after xxx; 举例: alter table person add gender varchar(5); //最后⾯ alter table person add id int fifirst; //最前⾯ alter table person add salary int after name;//name后⾯ 3. 删除表字段 格式: alter table 表名 drop 字段名; alter table person drop salary; 4. 修改表字段 格式: alter table 表名 change 原名新名新类型; alter table person change gender salary int;DML数据操作语⾔(数据相关SQL语句) 1. 插⼊数据 全表插⼊格式: insert into 表名 values(值1,值2); 值的数量和表字段⼀致 批量插⼊格式: insert into 表名 values(值1,值2),(值1,值2),(值1,值2); 举例: insert into person values("Tom",18); //全表插⼊ insert into person(name) values("Jerry"); //指定字段插⼊ insert into person values("AAA",10),("BBB",20), ("CCC",30); 中⽂问题: insert into person values("刘德华",30); 如果执⾏上⾯包含中⽂的SQL 报以下错误执⾏ set names gbk; 2. 查询数据 格式: select 字段信息 from 表名 where 条件; 举例: select name from person; //查询表中所有的名字 select name,age from person; //查询表中所有名字和年龄 select * from person; //查询表中所有数据的所有字段信息 select * from person where age>20; //查询年龄⼤于20岁的信息 select * from person where name='Tom'; //查询Tom的信息 3. 修改数据 格式: update 表名 set xxx=xxx,xxx=xxx where 条件; 举例: update person set age=8 where name='Jerry'; update person set name="张学友",age=50 where name="刘德华"; update person set age=15 where age<20; 4. 删除数据 格式: delete from 表名 where 条件; 举例: delete from person where name='Tom'; delete from person where age<20; delete from person; 约束* 概念:对表中的数据进⾏限定,保证数据的正确性、有效性和完整性。
数据库知识点总结pdf数据库是用于存储、管理和检索大量数据的系统。
以下是一些数据库的常见知识点总结:1. 数据库类型:- 关系型数据库(RDBMS):采用表格结构来组织数据,使用SQL语言进行操作,如MySQL、Oracle、SQL Server等。
- 非关系型数据库(NoSQL):不使用表格结构,可以按照键值对、文档、列族等方式存储数据,如MongoDB、Redis、Cassandra等。
2. 数据库模型:- 层次模型:数据以树形结构组织,父节点与子节点之间有层级关系。
- 网状模型:数据以网状结构组织,允许一个节点有多个父节点。
- 关系模型:数据以二维表格形式组织,通过键值关联实现数据之间的关系。
3. 数据库设计:- 实体-关系模型(ERM):通过实体和实体之间的关系来描述数据结构,包括实体、属性和关系。
- 数据库范式:用于规范化数据库结构,减少数据冗余和依赖。
- 主键和外键:主键用于唯一标识表中的每一行数据,外键用于建立表与表之间的关系。
4. SQL语言:- 数据定义语言(DDL):用于定义数据库结构,如创建表、修改表结构等。
- 数据操作语言(DML):用于对数据库中的数据进行增删改查操作,如插入数据、更新数据、删除数据等。
- 数据查询语言(DQL):用于查询数据库中的数据,如SELECT语句。
5. 数据库索引:- 索引是一种特殊的数据结构,用于加快数据检索的速度。
- 常见的索引类型包括主键索引、唯一索引、聚集索引和非聚集索引等。
6. 数据库事务:- 事务是一组数据库操作,要么全部执行成功,要么全部回滚。
- ACID原则是保证事务的一致性和可靠性的基本要求,包括原子性、一致性、隔离性和持久性。
7. 数据库性能优化:- 合理设计数据库结构,减少冗余和依赖。
- 使用索引来加快数据检索的速度。
- 优化SQL语句,避免全表扫描和大量JOIN操作。
- 设置合适的缓存策略,减少对磁盘IO的访问。
- 定期备份和维护数据库,保证数据的安全和稳定性。
mysql学习笔记(⼀)之mysqlparameter基础琐碎总结-----参数化查询参数化查询(Parameterized Query )是指在设计与数据库链接并访问数据时,在需要填⼊数值或数据的地⽅,使⽤参数 (Parameter) 来给值,这个⽅法⽬前已被视为最有效可预防SQL注⼊攻击 (SQL Injection) 的攻击⼿法的防御⽅式。
下⾯将重点总结下Parameter构建的⼏种常⽤⽅法。
说起参数化查询当然最主要的就是如何构造所谓的参数:⽐如,我们登陆时需要密码和⽤户名,⼀般我们会这样写sql语句,Select * from Login where username= @Username and password = @Password,为了防⽌sql注⼊,我们该如何构建@Username和@Password两个参数呢,下⾯提供六种(其实⼤部分原理都是⼀样,只不过代码表现形式不⼀样,以此仅作对⽐,⽅便使⽤)构建参数的⽅法,根据不同的情况选⽤合适的⽅法即可:说明:以下loginId和loginPwd是户登陆时输⼊登陆⽤户名和密码,DB.conn是数据库连接,⽤时引⼊using System.Data.SqlClient命名空间⽅法⼀:SqlCommand command = new SqlCommand(sqlStr, DB.conn);command.Parameters.Add("@Username", SqlDbType.VarChar);command.Parameters.Add("@Pasword", SqlDbType.VarChar);command.Parameters["@Username"].Value = loginId;command.Parameters["@Pasword"].Value = loginPwd;⽅法⼆:SqlCommand command = new SqlCommand();command.Connection = DB.conn;mandText = sqlStr;command.Parameters.Add(new SqlParameter("@Username", loginId));command.Parameters.Add(new SqlParameter("@Pasword", loginPwd));⽅法三:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);cmd.parameters.add("@Username",DbType.varchar).value=loginId;cmd.parameters.add("@Pasword",DbType.varchar).value=loginPwd;⽅法四:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);cmd.parameters.addwithvalue("@Username",loginId);cmd.parameters.addwithvalue("@Pasword",loginPwd);⽅法五:Sqlcommand cmd=new Sqlcommand(sqlStr, DB.conn);SqlParameter para1=new SqlParameter("@Username",SqlDbType.VarChar,16);para1.Value=loginId;cmd.Parameters.Add(para1);SqlParameter para2=new SqlParameter("@Pasword",SqlDbType.VarChar,16);para2.Value=loginPwd;cmd.Parameters.Add(para2);⽅法六:SqlParameter[] parms = new SqlParameter[]{new SqlParameter("@Username", SqlDbType.NVarChar,20),new SqlParameter("@Pasword", SqlDbType.NVarChar,20),};SqlCommand cmd = new SqlCommand(sqlStr, DB.conn);// 依次给参数赋值parms[0].Value = loginId;parms[1].Value = loginPwd;//将参数添加到SqlCommand命令中foreach (SqlParameter parm in parms){cmd.Parameters.Add(parm);}法和实现⽅法的不同,也可以说是语法糖,但后记:鉴于园友对dedeyi,⿁⽕飘荡,guihwu的疑问,我在写⼀个说明。
数据库原理笔记数据库概念数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的⼤量数据的集合。
1. 数据库系统的特点数据结构化数据的共享性⾼,冗余度低,易扩充数据独⽴性⾼数据由DBMS统⼀管理和控制1. 两⼤类数据模型概念模型也称信息模型,它是按⽤户的观点来对数据和信息建模,⽤于数据库设计。
逻辑模型和物理模型,逻辑模型主要包括⽹状模型、层次模型、关系模型、⾯向对象模型等,按计算机系统的观点对数据建模,⽤于DBMS实现。
物理模型是对数据最底层的抽象,描述数据在系统内部的表⽰⽅式和存取⽅法,在磁盘或磁带上的存储⽅式和存取⽅法。
1. 关系数据库关系数据库系统采⽤关系模型作为数据的组织⽅式,在⽤户观点下,关系模型中数据的逻辑结构是⼀张⼆维表,它由⾏和列组成。
关系的每⼀个分量必须是⼀个不可分的数据项, 不允许表中还有表。
1. 数据库系统的三级模式结构模式(Schema)外模式(External Schema)内模式(Internal Schema)1. 关系模式关系模式可以形式化地表⽰为:R(U,D,DOM,F)R 关系名U 组成该关系的属性名集合D 属性组U中属性所来⾃的域DOM 属性向域的映象集合F 属性间的数据依赖关系集合1. 实体完整性规则(Entity Integrity)若属性A是基本关系R的主属性,则属性A不能取空值;关系模型中以主码作为唯⼀性标识。
1. 参照完整性规则若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不⼀定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值1. 关系代数运算符关系数据库标准语⾔SQLSQL(Structured Query Language)结构化查询语⾔,是关系数据库的标准语⾔。
集数据定义语⾔(DDL),数据操纵语⾔(DML),数据控制语⾔(DCL)功能于⼀体。
数据库系统原理⎽(1)授权grant的一般格式为:grant<权限> on <对象类型> to <用户>其语义是将指定操作对象的指定操作权限授予指定的用户;不同对象类型允许的操作权限例如:把查询student权限授权给用户U1;Grant select on table student to U1;⎽(2)收回权限revoke格式:revoke <权限> on<对象类型> from <用户>例如:把用户U4修改学生学号的权限收回Revoke update(sno) on table student from u4;⎽超键(super key)、候选键(candidate key)和主键(primary key)的区别?超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键候选键(candidate key):不含有多余属性的超键称为候选键主键(primary key):用户选作元组标识的一个候选键程序主键比如一个小范围的所有人,没有重名的,考虑以下属性身份证姓名性别年龄身份证唯一,所以是一个超键姓名唯一,所以是一个超键(姓名,性别)唯一,所以是一个超键(姓名,性别,年龄)唯一,所以是一个超键--这里可以看出,超键的组合是唯一的,但可能不是最小唯一的身份证唯一,而且没有多余属性,所以是一个候选键姓名唯一,而且没有多余属性,所以是一个候选键--这里可以看出,候选键是没有多余属性的超键考虑输入查询方便性,可以选择身份证为主键也可以考虑习惯选择姓名为主键--主键是选中的一个候选键封锁粒度与系统的并发度成反比。
试述事务的四个性质,并说明每一个性质由DBMS的哪个子系统实现?每一个性质对数据库系统有什么益处?答:原子性:一个事务对数据库的所有操作,是一个不可分割的工作单元,这些操作要么全部执行,要么什么也不做(由DBMS的事务管理子系统来实现);一致性:一个事务独立执行的结果,应(由DBMS的完整性子系统执行测试任务);隔离性(由DBMS的并发控制子系统实现);持久性(由DBMS的恢复管理子系统实现的)。
达梦数据库入门学习笔记——庞世论2020.12.21数据库安装前准备中标麒麟7(NeoKylin Linux Server 7.0)达梦版本:DM 8查看linux系统版本cat /etc/issue cat /etc/redhat-release uname -r uname -m查看CPU位数getconf LONG_BIT cat /pro/cpuinfo配置CPU内存参数vim /etc/sysctl.d/99-sysctl.conf 添加以下3行Kernel.shmmax=68719476736Kernel.shmall=4294967296Kernel.msgmax=65536创建用户组groupadd dinstallUseradd dmdba -g dinstall -s /bin/bash -d /home/dmdba -m dmdbaPasswd修改资源使用限制cat /etc/security/limits.conf 添加以下2行:dmdba soft nofile 4096dmdba hard nofile 65536防火墙:systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service数据库实例创建及服务启停创建数据库实例./dbca.sh注册实例服务法1数据库配置助手 ./dbca.sh 法2:命令行环境变量配置vim ~/.bash_profile 使其生效source ~/.bash_profile数据库实例的开启与关闭./DmServiceDAVE start数据库服务管理工具(root用户) ./dmservice.sh命令行启停服务(root用户)systemctl start DmServiceDAVE.service systemctl stop DmServiceDAVE.service systemctl enable DmServiceDAVE.service systemctl status DmServiceDAVE.service数据库服务查看ps -ef |grep dm.ini登录数据库disql SYSDBA/SYSDBA 等效于disqlSYSDBA/**************.63.10:5236(链接默认实例5236端口,其他端口的实例该种方式无法连上)只能链接本端实例,无法连接远端实例。
数据库学习笔记图形化界(Navicate Premium)面操作数据库1、工具---->命令行操作2、选中某个表对象--->右击---->逆向表到模型---生成各表的关系模型3、选中某个表对象-->右击-->对象信息--->DDL查看创建表的信息Sql语言集数据定义语言,数据操纵语言,数据查询语言,数据控制语言于一体,可以完成数据库生命周期中的全部工作。
数据定义语言:完成创建,修改或删除数据库中的各种对象有create,drop,alter的命令。
数据查询语言:按各种条件查询数据库中的数据有select及其相关命令。
数据操纵语言:对已经从在的数据库对其进行数据的插入,删除和修改有insert,update,delete命令。
数据库控制语言:用于授权或收回访问数据库的某种特权,控制数据操纵事物的发生时间及效果,对数据库进行监视。
有grant,revoke,commit,rollback等命令。
一、数据库操作1、启动数据库:net start mysql2、关闭数据库:net stop mysql3、打开数据库:mysql -u root -p1234、显示所有数据库:show databases;5、创建数据库:create database mydb1;6、删除数据库:drop database mydb1;二、单表操作:1、选择并使用数据库:use mydb12、创建表:(宠物表)宠物表:id名字、主人、种类,性别、出生和死亡日期。
create table pet(id int primary key,name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);3、插入数据:insert into pet values(1,’ergou’,’zx’,’dog’,’f’,’2013-09-06’ null);4、查询所有内容select * from pet;5、删除一条数据:delete from pet where id=1;6、修改数据中的内容:update pet set birth=’2015-09-09’ where name=’huahua’;7、选择特殊行:select * from pet where species=’dog’;select * from pet where species=’dog’and sex=’f’;select * from pet where species=’dog’ or ‘cat’;select * from pet where birth>’2016-09-01’ and birth<’2014-09-09’; select * from pet where (species=’dog’and sex=’f’)or(species=’cat’and sex=’m’);select * from pet where sex<>’f’;select * from pet where sex!=’f’;8、选择特殊列:select name,species,birth from pet where species=’dog’ or species= ’cat’;9、排序查询:order byselect name,birth from pet order by birth;select name,birth from pet order by birth desc;10、分组查询group byselect speices,sex from pet group by species,sex;11、模糊查询:select * from pet where owner like’z%’;select * from pet where name like’%b’;select * from pet where name like’%b%’;12、计数行select count(*) from pet;select species,sex,count(*)from pet group by species,sex;13、像表中添加一列:alter table event add sex varchar(20);14、删除表中一列:alter table event drop sex;15、修改表名:rename table A to B;学生表student学号(sno)、姓名(sname)、性别(ssex)、年龄(sage)、所在系(sdept)student(sno,sname,ssex,sage,sdept)主键:sno课程表course课程号(cno)课程名(cname)任课老师姓名(teacher)学分(credit)course(cno,cname,teacher,credit)主键cno学生选课表sc学生号(sno)课程号(cno)成绩(geade)sc(sno,cno,grade)主键(sno,cno)外键(sno,cno)教师表teacher教师号(tno)姓名(tname)性别(tsex)年龄(tage)职称(title)工资(tsalary)奖金(tcomm)所在系(tdept)teacher(tno,tname,tsex,tage,title,tsalary,tcomm,tdept)主键:tno教师授课表tc教师号(tno)课程号(cno)tc(tno,cno)主键(tno,cno)外键(tno,cno)部门信息表dept部门号(deptno)、部门名称(dname)、部门地点(loc)dept(deptno,dname,loc)主键(deptno)雇员信息表empt雇员编号(empno)雇员姓名(ename)工作(job)经理编号(mgr)工资(sal)奖金(comm)雇佣日期(hiredate)部门号(deptno)emp(empno,ename,job,mgr,sal,comm,hiredate,dephno)主键empno外键deptno工资等级表salgrade等级号(grade)最低工资(lowsal)最高工资(highsal)salgrade(grade,lowsal,highsal)部门信息表dept部门号(deptno)、部门名称(dname)部门地点(loc)主键deptno创建表:例:创建学生选课表scCREATE TABLE `sc` (`sno` char(8) NOT NULL,`cno` char(8) NOT NULL,`grade` int(11) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),KEY `cno_fk` (`cno`),CONSTRAINT `cno_fk` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`), CONSTRAINT `sno_fk` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk;添加主键:PRIMARY KEY (`sno`,`cno`),添加外键:KEY `cno_fk` (`cno`),关联主外建:CONSTRAINT `cno_fk` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`), CONSTRAINT `sno_fk` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`) 单表查询:1、查询全体学生的学号、姓名、性别select sno,sname,ssex from student;2、查询学校所开全部课程的课程名和学分select cname,credit from course;3、查询全部课程的所有信息select * from course;4、查询全体学生的姓名及出生年月(查询经过计算的值)select sname,2016-sage from student;5、查询所有选修过课程的学生(加distinct去掉重复)的学号;select sno from sc;select distinct sno from sc;6、查询信息系所有学生名单select sname from student where sdept='XI';7、查询所有考试成绩大于80分的学生的学号和成绩。
select sno,grade from sc where grade >80;8、查询所有年龄在18-25之间的学生的姓名和年龄select sname,sage from student where sage between 18 and 20; select sname,sage from student where sage>=18 and sage<=20;9、查询选修了‘1’号课程的学生的学号,成绩查询结果按降序排序select sno,grade from sc where cno=1 order by grade desc;10、聚组函数(1)查询学生总人数select count(*) from student;(2)查询选修了课程的所有学生select count(distinct sno)from sc;(3)查询学习‘1’号课程的学生的最高成绩、最低成绩、平均分select avg(grade),max(grade),min(grade)from sc where cno =1;(4)查询学号为1的同学的选修课程的总学分select sum(credit)from sc,course where sno=1 and o=o; (5)查询选修1门以上课程的学号select sno,count(*) as S_NUM from sc group by sno having count(*)>1;(6)查询每个学生的平均成绩select student.sno,sname,avg(grade)from sc,student where sc.sno=student.sno group by student.sno;(7)输出平均成绩大于80的男生的学号、姓名、平均成绩并按学号的升序排序select student.sno,sname,avg(grade) from sc,student where ssex='男' and sc.sno=student.sno group by student.sno having avg(grade)>80 order by student.sno;(8)查询每个部门的每种职位的雇员数select deptno,job,count(*)from empt group by deptno,job;(9)查询奖金高于其工资5%的雇员信息,并按奖金与工资比例的降序排列select ename,sal,comm,comm/sal from empt where comm>0.05*sal order by comm/sal desc;联接查询(多表查询)1、查询每个同学及其选修课的情况(等值连接)select student.*,sc.* from sc,student where sc.sno=student.sno;2、查询每个学生及其选修课的课程名和成绩的情况(自然连接)select student.sno,sname,ame,gradefrom student,course,scwhere student.sno=sc.sno and o=o;3、查询选修2号课程且成绩在90分以上的所有学生的学号,姓名,和成绩(复合连接)select student.sno,sname,ame,gradefrom student,scwhere student.sno=sc.sno (连接条件)and o=2 and sc.grade>90group by student.sno;(限制条件)4、查询每门课程的课程名、任课教师名,以及选课人数select cname,teacher,count(sno)from course,scwhere o=ogroup by o;5、查询工资等级为3的雇员姓名和工资(非等值连接)select ename,sal,grade from empt,salgrade where sal between lowsal and highsal and grade=3;6、找出empt表中每一雇员的工资属于哪一等级select empno,ename,sal,grade from empt e,salgrade g where e.salbetween g.lowsal and g.highsal order by e.sal;7、查询每一个雇员和其对应的经理姓名(自连接)select worker.ename as 雇员,manager.ename as 经理from empt worker,empt manager where worker.mgr=manager.empno;不相关子查询(子查询的条件不依赖于父查询)1、查询张三所在系的学生的学号、姓名(假定只有一个张三)select sno,sname from student where sdept=(select sdept from student where sname='张三');2、查询张三所在系的学生的学号、姓名(不确定有几个张三)select sno,sname,sdept from student where sdept IN (select sdept from student where sname='张三');3、查询选修课程为毛概的学生的学号和姓名select sno,sname from student where sno in(select sno from sc where cno in(select cno from course where cname='毛概'));4、查询有一门课程成绩等于95的学生的学号和姓名select sno,sname from student where sno=any (select sno from sc where grade=95);5、查询其他系中比信息系(XI)任一学生年龄小的学生的姓名和年龄select sname,sage-> from student-> where sage<any-> (select sage-> from student-> where sdept='XI')-> and sdept<>'XI'-> order by sage desc;In:是确定的集合的(在同一个系<如信息系>学习)Any:不确定的集合(有一门课程<不确定哪一门>等于95,其他系<哪个系?>)相关子查询(子查询的条件依赖于外层父类的查询)1、查询有一门课程成绩等于95的学生的学号和姓名select sno,sname from student where sno in (select sno from sc where grade=95);2、查询没有选课的学生姓名select sno,sname from student where sno not in (select sno from sc);注意:1、外键:foreign key (外键名)references 被参照的2、group by 后面的属性必须是出现在select 要查询的属性或者count();3、order by 排序desc 降序asc 升序4、在对多表进行查询时为了区分属性要写成表明.属性的形式,并且一般选离属性关系最近的,最密切的表作为属性(表明.属性),然后通过‘=’查询出符合两个表共同的属性。