zoukankan      html  css  js  c++  java
  • 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 查找的语句顺序 [可省略]

  • 相关阅读:
    前端工程师必备的7个chrome插件
    树莓派 基于Web的温度计
    vue2.0 非父子组件如何通信
    newman
    mysql主从同步设置
    redis集群搭建
    服务器之间共享挂载
    Jenkins自动构建-部署-测试
    postman使用整理
    Charles使用
  • 原文地址:https://www.cnblogs.com/flytwosky/p/6936749.html
Copyright © 2011-2022 走看看