数据库
文章平均质量分 71
pusude
这个作者很懒,什么都没留下…
展开
-
数据库学习笔记和小练习(4)中文乱码
在mysql的表中插入数据的时候含有中文,插入之后是问号,这显然是字符集问题。其实问题的本质就是客户端和数据库服务器字符编码方式不匹配,先查看字符集。show variables like '%char%';可以查看字符集,看到有gbk,有utf8 也有latin1,这是mysql的默认编码方式。现在我们要对这里的字符集或者表(字段)的字符集作出改变,让它们匹配。set cha原创 2016-11-04 11:21:30 · 232 阅读 · 0 评论 -
数据库学习笔记和小练习(14)函数
函数分为系统函数和自定义函数。一、系统函数1 文本处理函数select lower(Sdept) as Sdept_lowerfrom studentorder by Sdept;常用举例:lower() 函数将文本转化为小写。upper() -> 将文本转化为大写left() -> 返回串左边的字符length() -> 返回串的长度原创 2016-11-15 19:34:30 · 491 阅读 · 0 评论 -
数据库学习笔记和小练习(5)视图
视图是从一个或几个基本表(或视图)导出的虚表。所谓虚表是指数据库中值存放视图的定义,不存放视图对应的数据,数据仍然存放在原来的基本表中。1.定义视图create view....as...[ with check option](这一句的意思是对视图进行update insert delete操作的时候要保证相应的行为满足试图定义中的谓词条件。)create view原创 2016-11-05 16:55:05 · 448 阅读 · 0 评论 -
数据库学习笔记和小练习(13)过程化SQL
# 基本的SQL是高度非过程化的,可以用嵌入高级语言的方式利用高级语言的流程控制功能实现过程化。# 过程化SQL是对SQL的扩展,让它增加了过程化语句功能。# 过程化SQL程序的基本结构是块,所有的过程化SQL程序都是由块组成的,这些块之间可以互相嵌套,每个快完成一个逻辑操作。 一. 变量和赋值语句定义变量: set @name := '张三';查看变量: sele原创 2016-11-14 20:13:48 · 906 阅读 · 0 评论 -
子查询(mysql)
子查询其实就是嵌套在其他查询中的查询。我们对数据的描述是由一张张关系表构成的。比如:学生表中有学生姓名,学生id,学生所在班级号,还有班级表,系表中有班主任等相关信息。现在,如果我们要查询班主任是张明的所有学生信息:所以第一步:select class_numfrom classwhere class_teacher = '张明';假设结果为:14151原创 2016-11-17 09:31:48 · 431 阅读 · 0 评论 -
数据库学习笔记和小练习(12)事务
事务是一系列的数据库操作,事务处理技术主要包括数据库恢复技术和并发控制技术。定义:用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,不可分割,可以用来维护数据库的完整性。工作过程:一组操作的每一步如果失败,都不再向下进行,都会退到这一组操作执行之前。特性:1 原子性->事务是数据库的逻辑工作单位,事务中的操作要么全做,要么全不做。2 一致性->比如账户a给账户b转原创 2016-11-14 11:30:46 · 351 阅读 · 0 评论 -
联合查询(mysql)
Mysql可以将多个查询(多条select语句)的结果作为单个查询结果集返回。(实质是记录上的拼接,是一种并操作)基本有两种情况:联合相同表的查询和联合不同表的查询。联合相同表的查询其实等价于某条具有多个where子句的select语句。例子:select name,id,agefrom studentswhere age<=20unionselect name,id,原创 2016-11-17 08:58:24 · 759 阅读 · 0 评论 -
数据库学习笔记和小练习(16)外键再理解
一、外键在关系型数据库中,基本的对象就是表(关系),每个表都维护了一定的信息。但是,生活中的信息不是简单地,分离的,信息之间一定会有着这样那样的联系,相对应的,我们的表之间也应该有所联系。举个例子:学生表在我们前面的例子中出现的不少,它描述了学生信息,比如包括了他所在系,那么,它所在的系就确定了。但是是不是一个系名就完全描述了这个系的信息呢?显然是不够的,比如系主任的名字等等关于系的信原创 2016-11-16 09:21:46 · 509 阅读 · 0 评论 -
数据库学习笔记和小练习(10)触发器
触发器是用户定义在关系表上的一类由事件驱动的特殊过程,触发器在被定以后,保存在数据库服务器,任何用户对表的操作,服务器都会自动激活该触发器。触发器又叫做:事件-条件-动作规则即事件发生->检查条件->执行动作(如果条件满足)#触发器只能定义在基本表上,且只有创建表的用户才可以在表上定义触发器。#after指在触发事件的操作执行之后激活触发器#触发事件可以使 insert de原创 2016-11-07 10:39:41 · 1805 阅读 · 0 评论 -
数据库学习笔记和小练习(11)数据库完整性小练习
下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),职工号为主键部门(部门号,名称,经理名,电话),其中部门号为主码(1)定义每个模式的主键(2)定义参照完整性(3)定义职工年龄不得超过60岁create table dept(Deptno number(2) primary key,Deptname varchar(10),Manager varch原创 2016-11-07 10:52:55 · 858 阅读 · 0 评论 -
数据库学习笔记和小练习(9)数据库完整性
1.实体完整性关系模型的实体完整性在create table中用primary key定义,一种是列级约束条件,一种是表级约束条件(多个属性构成)定义了主键的关系,在插入或者对主码列进行更新的时候:(1)检查主键值是否唯一,如果不是则拒绝插入或者修改(2)检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改其实就是要保证主码唯一且不为空。2.参照完整性原创 2016-11-06 20:18:49 · 681 阅读 · 0 评论 -
数据库学习笔记和小练习(8)数据库安全性小练习
对于下列两个关系模式:学生(学号,姓名,年龄,性别,家庭住址,班级号)班级(班级号,班级名,班主任,班长)(1)授予用户U1拥有对两个表的所有权限,并可给其他用户授权grant all privileges on table 学生,班级to U1with grant option;(2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限grant select,原创 2016-11-06 17:36:16 · 9119 阅读 · 2 评论 -
数据库学习笔记和小练习(7)数据库安全性之存取控制
SQL中使用grant和revoke语句向用户授予或收回对数据的操作权限grant...on...to...[ with grant option ];发出该grant语句的可以是数据库管理员,也可以是该数据库对象创建者,还可以是已经拥有该权限的用户。接收权限的用户可以是一个或多个用户,也可以是public,即全体用户。如果指定了with grant option子原创 2016-11-06 15:53:09 · 2290 阅读 · 0 评论 -
数据库学习笔记和小练习(6)sql查询和更新练习
这篇文章所用关系为上一篇文章所建的S,PJ,SPJ表(1)找出所有供应商的姓名和所在城市分析:直接查询供应商表即可,而且没有条件。select SNAME,CITYfrom S;(2)找出所有零件的名称,颜色,重量分析:这些属性都是P表的,直接查询P表即可select PNAME,COLOR,WEIGHTfrom p;(3)找出使用供应商S1所供应零件的工程号码原创 2016-11-06 10:38:26 · 635 阅读 · 0 评论 -
数据库学习笔记和小练习(5)sql定义和查询练习
先建立四个关系:S,P,J,SPJ 分别代表供应商表,零件表,工程项目表,供应情况表建立S表:CREATE TABLE S(SNO CHAR(3) primary key,SNAME CHAR(10),STATUS CHAR(2),CITY CHAR(10))charset gbk;建立P表:CREATE TABLE P(PNO CHAR(3) primary ke原创 2016-11-05 21:10:28 · 707 阅读 · 0 评论 -
数据库学习笔记和小练习(3)数据查询
本文章参考自《数据库系统概论》数据查询是数据库的核心操作,SQL提供了select语句进行数据查询。最核心的是select...from...(我们要从哪里,哪张表或者视图中取出什么即哪些列)where子句还可以有条件表达式,先符合条件再选。group by子句和having短语可以分组,通常在每组中作用聚集函数最后才是order by子句,确定是升序还是降序。原创 2016-11-05 11:01:54 · 894 阅读 · 0 评论 -
数据库学习笔记和小练习(2)数据更新
数据的更新操作有三种:向表中添加若干行数据,修改表中的数据和删除表中的若干行数据。1.insert如果指定了属性列名,但是有的属性列没有出现,那么新元祖在这些列上取空值,注意,在表定义时说明了not null的属性列不能取空值,否则出错。如果into子句中没有指明任何属性列名,则新插入的元祖必须在每个属性列上均有值。into子句的属性列的顺序可以和表不一样,value子原创 2016-11-03 20:01:17 · 307 阅读 · 0 评论 -
数据库学习笔记和小练习(15)存储过程
存储过程是由过程化SQL语句的书写过程。这个过程经编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用即可。(其实就是为了以后使用而保存的一条或多条mysql语句的集合,是没有返回值的函数)提高了安全性,完整性,性能。创建:delimiter //create procedure getname()beginselect Sage from student;原创 2016-11-15 20:48:56 · 491 阅读 · 0 评论