个人声明:本文档所有代码并没有经过上机验证,仅供参考,另外,因为只是自己总结的关于最基本的知识点,所以难免遗漏,所以请参阅相关材料观看,最后,版权所有,翻版没事!哈哈~~~~1,关系模型的数据结构非常简单,它只含有单一的数据结构——关系,在用户看来就是一张二维表,关系数据库就是用二维表表示关系以及他们之间的联系。
2.关于数据库的操作主要就是增删改查,其中尤其以查最重要,下面正对这几种数据库操作做一些sql语句方面的简单整理,以用来加强印象:由于今天使用了mysql数据库,所以呢,先将一些使用的必须基本命令总结一些:首先是安装了mysql数据库之后,进入dos命令提示窗口,接下来我们要进入我们的数据库,那么要先进入mysql的bin路径下,然后输入mysql -u root -p,然后会提示输入密码,然后进入,进入后的命令提示符是mysql>在mysql新建表之间和使用oracle 10g还是不一样的,先新建数据库,Create database 数据库名字;增A.首先是新建表:create table table_name(<columns_name><data_type>[列级完整性约束条件][,<columns_name><data_type>[列级完整性约束条件]]......[,<表级完整性约束条件>]);E.g creatable table students(id int(4) primary key,Name char(20) not null,Foreign key id references teachers(no));B.接着是添加信息:insert into <table_name>[<columns_name>[,<columns_name>]...]values(常量[,常量]...);E.g insert into students values(1,'tom');注意,如果不列出来表格的属性的话,就说明添加一条完整的信息。
如果列出来表格的属性的话,那么没有列出来的就做,空值处理。
C.添加约束条件(注意,下面的语法只在oracle 10g中验证过,仅供参考)。
关于创建表格约束的时候是使用add constraint还是modify语法,我进行了可行性的测试,现在结果如下:《》关于创建外键,两种语法都可以,语法如下1,alter table 表格名add constraint 外键名foreign key(列名)references 被参照的表名(列名);2,alter table 表格名modify foreign key(列名)references 被参照的表名(列名);注意:alter table 表格名modify 列名foreign key references 被参照的表名(列名);是不可以的。
《》关于创建主键,两种方法都可以,语法如下1,alter table 表格名add constraint 外键名primary key(列名) enable;2,alter table 表格名modify 列名primary key;《》关于创建约束unique,两种语法都可以,语法如下1,alter table 表格名add constraint 约束命名unique(列名) enable;2,alter table 表格名modify 列名unique;《》关于创建约束not null,只可以使用语法modify,语法如下1,alter table 表格名modify 列名not null;《》关于创建约束check,只可以使用语法modify,语法如下1,alter table 表格名modify 列名check(条件;《》关于创建约束default,只可以使用语法modify,语法如下1,alter table 表格名modify 列名default(默认值;以上资料是我亲自测试整理的,可信度百分之百。
~—~其实上面的知识点,准确的说是在alter中的内容才对。
删A.删除表:drop table <table_name> [restrict|cascade]其中restict表示删除表是有条件限制的,想要删除的表不能有外键,视图,触发器等等的这些依赖该表的对象时,才可以删除。
Cascade就是没有限制的,如果有依赖于该表的对象,那么就一起给删除了。
一般默认的都是restrict。
E.g drop table students;B.删除数据:其实关于改的知识点,在查的后面来整理的话会更好,因为,你选择你要删除的数据的时候就是要用到查询的知识点来选择的。
Delete from <table_name> [where <条件>];E.g delete from students where id = 1;改A.修改表格:alter table <table_name>[add <new_columns_name><data_type>[完整性约束]][drop <完整性约束名>][alter column <column_name><data_type>];E.g alter table students add sex char(4) not null;alter table students alter column name char(21);B.修改数据:update <表明>Set <column_name> = <表达式>[,<column_name> = <表达式>]...[where <条件>]其实对于删和改,我们基本上都是建立在查的基础上的,下面是重点和难点了:查对于sql的查询,提供了select语句来进行查询,其一般的格式为:Select [all|distinct] <目标表达式> [,<目标表达式>]...From <表名或视图> [,<表名或视图>]...[where <条件表达式>][group by <column_name> [having <条件表达式>]][order by <column_name> [asc|desc]];其中:1.all和district表示是将查询到得结果全部(all)显示出来,还是去除重复的之后再显示出来。
缺省值为all。
2.目标表达式,表示你想展示的是查询结果的哪几列的值。
3.表名或视图,表示你要查询的源,可以为其取别名,在其后空格再加别名,就可以了。
4.Group by子句,表示将结果按照一属性的值进行分组,改属性列值相等的元组为一组,如果其还带有having子句的话,就只有满足这个制定条件的组才能显示出来。
5.Order by表示查询的结果按照一属性的值进行排序。
Asc表示升序,desc表示降序。
A.单表查询:单表查询只涉及到一张表的查询。
选择表中的若干列:1.选择特定列。
Select id from students where name = 'tom';2.选择全部列:Select * from students where id = 1;3.查询计算后的值:Select id,2004-sage from students where id = 1;用户可以通过制定别名来改变查询的列标题,这对于含有算数表达式,常量,函数名的目标表达式尤为有用。
E.g select id 编号,name 姓名,sex 姓名from students;选择表中的若干元组:1.消除重复的行:Select distinct id from student;其中distinct代表的是消除重复的行,与其相对的是,选择所有的行all。
2.查询满足条件的元组:这种查询主要是通过where子句来实现的:常用的查询条件:比较:=, >, <, >=, <=, !=, <>, !>, !<, ;not 加上述比较符。
E.g select id from students where name <> 'tom';确定范围:between and,not between andE.g select id from students where id between 1 and 5;确定集合:in, not in;E.g select id from students where in(1,2,3);注意,当in用在嵌套查询(子查询)的时候,会有很好的效果哦。
与之相类似的还有exist,not exist但是呢,exist代表存在量词,它不会返回任何的数据,只产生逻辑真值true和逻辑假值false;那么not exist就很好理解了,就是代表不存在。
由exist引出的子查询其目标表达式通常都是用*,因为带exist子句返回逻辑真值或者假值,那么给出列名就没有任何的意义了。
字符匹配:like,not like其一般的语法格式如下:[not] like '<匹配串>' [escape '<换码字符>'];其含义是查找指定的属性的列值于<匹配串>相匹配的元组。
匹配串可以是个完整的字符,也可以含有通配符%和_。
其中:%表示代表任意长度(长度可以为0)的字符串。
_表示代表单个字符。
E.g select id from students where name like 't%';Select id from students where name like 'to_';其中一个汉字是占用两个字节,所以如果使用_的话,那么就需要一个汉字两个_空值:is null , is not nullE.g select id from students where name is null;多重条件(逻辑运算):and , or , notSelect id from students where name = 'tom' and id < 4;Group by子句:E.g select * from students group by name;这句就是对查询的结果按照name的值,进行分组,相同的为一组,然后对每一组作用聚集函数count计算,以求得改组的数量。