Java知识总结-3

数据库操作语言
标记: 命令不区分大小写 但不能用中文空格 标点等
分类

数据查询语言 dql

数据定义语言 ddl

数据操作语言 dml

数据库理论知识

关系型数据库

MySQL 默认端口3306

db2

oracle 默认端口

面向对象数据库是由面向对象编程语言催生的新型数据库,关系数据库是理论最成熟,应用最广泛的数据库,最基本的数据存储单元就是数据表,数据表是存储数据的逻辑单元,可以把数据表想象成由行和列组成的表格,其中每一行也被称为一条记录,每一列也被称为一个字段

数据库(Database,简称DB):按照数据结构来组织,存储和管理数据的仓库

按照数据结构来组织,存储和管理数据的仓库

数据库管理系统(Database Management System,简称DBMS):是所有数据的知识库,它负责管理数据的存储、安全、一致性、并发、恢复和访问等操作,有一个数据字典(有时称系统表)用于存储它所拥有的每个事务的相关信息,例如名字、结构、位置类型,这种数据也称为元数据

发展历史:网状型-->层次型-->关系型-->面向对象型

数据(Data):对客观事物的符号表示,是数据库中存储基本对象

种类:文字、图形、图像、声音

对数据库的操作

显示 show databases;

set names gbk --建表前设置编码

create database 名字 ----创建数据库

drop database 名字-------删除数据库

use 数据库名字------进入数据库

对表的操作

表的创建

create table 名字(列名 类型(长度), .......) ------创建一个表

CREATE TABLE 表名 (列名 列的类型,列名 列的类型 , 列名 列的类型,.............. ); 例如: CREATE TABLE XS(XH VARCHAR(10) , XM CHAR(8),JS INT , LL INTEGER, WH INT);

列的约束

总体结构 create table 表名(列名 列类型 约束,列名 列的类型 约束,.......);----------------创建表的时候进行约束
标记: 多个约束可以同时存在一个列上

ALTER TABLE FILE ADD CONSTRAINT FOREIGN KEY(FILEID) REFERENCES FOLDER(FID) ON DELETE CASCADE;

外键约束
FOREIGN KEY (本表的外键列名) REFERENCES 其他表名(其他表的主键列名)-----------减少冗余信息
标记: 写在所有属性之后 用逗号分开

CREATE TABLE XS1
(
学号 varchar(6) NULL,
姓名 varchar(8) NOT NULL,
出生日期 datetime NULL,
PRIMARY KEY (姓名),,
FOREIGN KEY (本表的外键列名)
REFERENCES 其他表名(其他表的主键列名)
ON DELETE RESTRICT/CASCADE
ON UPDATE RESTRICT/CASCADE
);

on delete cascade /on update cascade
标记: 删除 /修改 级联 即 如果外键关联的数据发生改变 也自动改变

on delete restrict /on update restrict
标记: 删除 修改 约束 不能修改外键关联的主键

check 指定值约束 mysql暂不支持

自增列 auto_increment 建表时一般加在主键列列上 (只有唯一才能自增长)

唯一约束

unique

主键不需要加入唯一约束

CREATE TABLE XS1
(
学号 varchar(6) NULL,
姓名 varchar(8) NOT NULL,
出生日期 datetime NULL,
PRIMARY KEY(学号),
UNIQUE(姓名)
);

非空约束
标记: 任何一列都可以

not null----

create table student(no int primary key, name varchar(10) not null unique,sex char(2));

主键约束
标记: 一个表上一般只有一个 也可以有复合主键

primary key -----

create table student(no int primary key, name varchar(10) not null,sex char(2));
create table student(no int primary key, name varchar(10) not null,sex char(2) NULL);

列的类型

char---字符 一个汉字占两个字节

date ---日期 格式为:2016-1-4

datatime 时间日期的结合

blob 二进制数据

int ---数字 可以规定长度

time ---时间 格式为 12:02:45

varchar ----字符串 占用 长度+1个字节

对表的操作

show tables -----显示所有的表

更改名字

alter table 表名 rename 新表名------更改表的名字

rename table 表名 to 新表名

drop table 名字 ------删除表

desc 表名-----显示表结构

表结构的修改 对列的操作

删除列

alter table 表名 drop 列类型-----删除列

ALTER TABLE XS DROP PRIMARY KEY; 删除表中的主键

增加列

alter table 表名 add 列名 列类型 after 列名3-----增加一列 在列3后边

alter table 表名 add 列名 列类型 -------增加新的一列,在最后的一列

alter table 表名 add 列名 first ---增加一列在第一列

修改列

alter table 表名 modify 列名称 列类型--------修改列的数据类型
标记: 只能修改列类型

alter table 表名 change 列名 新列名 列类型
标记: 同时修改列名和列类型

alter table xs1 change xh xh1 varchar(12) primary key; 修改列的名称和类型

更改表的名字

alter table 表名称 modify 列名称 列类型------更改类的数据类型

alter table 表名 change 原列名 新列名 新列类型--------更改类的数据类型

where 的用法

between 值1 and 值2-----在值1和值2之间

regexp 正则表达式匹配

and -并 or-或 is null 为空 is not null 不为空 = 等于 <> 不等于 != 不等于 < 小于 > 大于

对数据的操作

增加数据

insert into 表名 set 列名=数据,列名=数据...----------插入部分数据

insert into 表名(列名1,列名2...)values (数据1,数据2...) ---------插入部分数据 (表名后边括号里列出的数据)

insert into 表名(按列的顺序和类型插入数据)------插入数据(必须全部插入)

日期

now / sysdate当前日期-----返回当前日期和时间

curtime ---返回当前时间

curdate /current date 当前日期

删除数据
标记: 删除的是列表中的行

delete from 表名---------删除表中所有数据

truncate table 表明 -------删除表中所有数据 并重置主键

delete from 表名 where 列名=列值--------删除符合条件的数据

例如:DELETE FROM LOGIN WHERE NAME='WANGWU'
DELETE FROM LOGIN WHERE NAME='ZHANGSAN' OR PASS='123';
DELETE FROM LOGIN WHERE NAME='ZHANGSAN' AND PASS='123'; //带条件的行删除

修改数据

update 表名 set 列名=列值 where 指定条件-----更新符合指定条件的数据 如果没有条件则更改所有的值

UPDATE T3 SET NAME='ZHANGSAN'; 所有的name列都变成zhangsan
UPDATE T3 SET NAME='LISI' WHERE ID =2;

查看数据

select * from 表名 where 条件-----按条件查找

select * from 表名------查看表的所有信息

按条件查找数据和操作

DISTINCT --------去除重复的数据

SELECT DISTINCT 列名 FROM BOOKS;

in 确定一个集合(即只能是集合中的内容)

WHERE ( BETWEEN AND ,AND OR IS NULL IS NOT NULL NOT , > < = != ........... IN 确定集合 )
IN 确定一个集合 NOT IN


select name from book where id in (125,127,129,131);

SELECT 查询的列 FROM 表名 WHERE 条件-----在查找的结果中只显示指定列


SELECT NAME,PRICE FROM BOOKS ;

as 起别名

SELECT 列名 AS 别名 FROM BOOKS;

在having 后边可以用

like 模糊查询 _ 单个字符 % 0个或多个字符

having ----相当于where 只能用在分组后面来作为判断

order by 列名 desc/asc ----按“列名”进行 降序/升序 排列

SELECT * FROM BOOKS ORDER BY pubdate desc


SELECT * FROM BOOKS ORDER BY price desc , num asc;
标记: 先按第一列排 当第一列相同是按第二列排 以此类推

子查询 ------即把查询结果作为另一个查询的参数 查找嵌套
标记: 如果返回是一个表 则需要在表后边起一个别名 (子查询结果) a a 即为别名

聚合函数
标记: 结果可以单独作为一个参数

max ---最大值

min-----最小值

avg-----平均值

count ----行数

sum-----求和

关联查询

内连接

只显示表的交集 即只显示两个表里都有的信息

select * from 表1 inner join 表2 on 表名.列名=表名.列名

最后的必须是表与表相同的列

右连接

显示位于连接语句的左边的表的所有信息 加上右边表的交集信息 没有的显示为null

select * from 表1 left join 表2 on 表名.列名=表名.列名

最后的必须是表与表相同的列

左连接

显示位于连接语句的右边的表的所有信息 加上左边表的交集信息 没有的显示为null

select * from 表1 right join 表2 on 表1名.列名=表2名.列名

分组

limit 5/ limit 5,6 ----分页 第一个数字 开始的序号 第二条数据 偏移量

表名 group by 列名------按列名分组

SELECT NOTE, AVG(PRICE) FROM BOOKS GROUP BY NOTE;

注意,分组语句 GROUP BY 后面的列可以在SELECT 后出现,
其他列出现没有意义。聚合函数经常结合GROUP BY一起使用

select 查找的语句顺序 [可省略]

 

posted @ 2017-06-03 11:29  fly-sky  阅读(141)  评论(0编辑  收藏  举报