-初学者-数据库

浅谈有关数据库的基本理解

1.数据库的概念 [ 数据库管理系统 (DataBase Management System) ]

    就是存储数据的仓库,其本质是一个文件系统,可以有规律的对数据进行存储,方便用户进行增删改查.

    增删改查 : CRUD (create,update,read,delete)

2.数据库的分类 [当今常用的数据库分2种类型]

           2.1.关系型数据库 描述的是 实体与实体之间的关系(一对多,一对一,多对多)

                例如 : Mysql 丶 Oracle 丶 SqlServer 丶 DB2 丶SyBase 丶 SQLite

           2.2.非关系型数据库 : 压根就没有数据表的概念. 只有 行 和 列 [ 或者叫  键(Key) 和 值(Value) ]

                例如 :    Redis, HBase

3.数据库 与 Java 的对应关系

    大致可以理解为:

        一个项目对应一个库(名)

        一个类对应一张表

        一个属性对应表里面的一个字段

        一个对象对应表里面的一条记录!

 4.常见关系型数据库的介绍: 

    Mysql : 广泛的应用在Internet上的大中小型网站中。主要是因为其 体积小、速度快、总体拥有成本低,开放源代码 [市场上大部分版本为5.5 免费]

    Oracle:它是一个大型的收费的数据库

    DB2:它是IBM公司的产品,主要用于银行系统

    SQLServer:它是微软的产品,一般用于C#和.net语言开发的项目(中型)

    SyBase:它是一个过时的数据库产品(但是有一个非常专业的建模工具powerdesigner)

    SQLite:专门用于移动端的数据库

     ..........

 5. 数据库的操作

  1. DDL语句:数据库定义语言(专门操作数据库中的结构!)
  2. DML:数据库操作语言(专门对数据库的表记录进行更新<添加、删除、修改>操作)
  3. DCL:数据库的控制语言(专门对数据库的权限进行设置等操作)【了解】
  4. DQL:数据库查询语言(专门对数据库的表的记录进行查询操作)

  6. Sql语句的语法

    SQL语句可以写成一行也可以写成多行,末尾以分号(;)结尾!

    可以使用空格和缩进来增强SQL语句的可读性

    对数据库进行SQL语句操作的时候,关键字建议使用大写(SQL语句不区分大小写)【实际开发,都会使用小写】

    SQL语句可以使用/**/来进行注释(使用#更加便捷)

 7.常用的数据类型:

    整数:int

    小数:double(普通的小数)  decimal(用于钱数)【精度更高】

    日期:date datetime timestamp

    文本(字符串):vachar(用的最多<可变的>)   char(定长的)   

8.Sql中的简单常用语句

    8.1对数据库库的操作(DDL语句:操作的是库的结构)

        create database 库名 ;             创建一个库

        show create database 库名;     查看数据库的字符集编码

        create database 库名 character set 字符集     带有指定字符集的创建方式:

        show databases;    查看当前MySQL数据库中所有的库

        show create database 库名;    查看数据库的字符集编码

        drop database 库名;    删除数据中的库  [三思而行,一般勿用]

        use 库名;    使用某个数据库

        select database;    查看正在使用的库名

        show tables;    查看所有表

        desc 表名; 查看表结构

        drop table 表名;  删除表

        alter table 表名 add 列名 类型(长度) [约束];    在表中添加一列

        alter table 表名 modify 列名 新的类型(新的长度) 新的约束;        修改表的列的类型长度和约束

        alter table 表名 change 旧列名 新列名 类型(长度) 约束;    修改列名

        alter table 表名 drop 列名;    删除列

        rename table 旧表名 to 新表名;        修改表名  

        alter table 表名 character set 字符集        修改表的字符集

        create table 表名(

           字段名称1 类型(长度) 约束 ,

           字段名称2 类型(长度) 约束 ,

           字段名称3 类型(长度) 约束

        );

        说明:如果有多个字段,除了最后一个字段末尾不用加逗号(,),其余的必须加!!!!!

     8.2.对数据库表记录的操作(DML语言:添加、修改、删除)

        insert into 表名(字段名1, 字段名2) values(1,2);插入指定字段的数据,添加的字段和值必须对应

        insert into 表名 values(值1,值2,值3……);插入整张表所有字段的数据】 主键为自动增长时.给 null 即可.

注意事项:

    1.给定的值的顺序要与字段的顺序一致!

    2.如果字段名的类型是varchar或者日期的,那么给的值必须加引号(单引号)

    3.值的长度不能超过字段的长度

    4.如果插入的是空值给null。

    关于中文乱码的问题:    临时方法:输入指令set names gbk;【 临时使用!更换窗口后,依然乱码.】

    update 表名 set 字段名1=值1,字段名2=值2;      修改所有记录值    

    update 表名 set 字段名1=值1,字段名2=值2 where 唯一的字段名=值;    修改指定字段的值

    delete from 表名 where 条件        删除指定数据

    delete from 表名    [ 慎用 ]        删除所有数据

    8.3对数据库表记录的操作(DQL语句:查询)

条件查询:
#查询商品名和商品价格
#select 要查询的字段(多个字段用逗号隔开) from 表名;
#select pname,price from product;

# 查询所有商品信息使用表别名
# 单表没什么用,主要用于多表操作!
#select * from product p;

# 查询商品名,使用列别名(相对表别名使用少一些)
#select 列明(原来的名字) 列别名(显示的新名字)(列别名并不修改原始的名字) from 表名
#select pname name from product;

# select * from 表名 where 条件;
#查询商品名称为'左慈'的商品信息
#select * from product where pname = '左慈';

# 查询商品价格>60元的所有的商品信息
#select * from product where price>60;

# 查询商品名称含有'士'字的商品信息(模糊查询)
# select * from where 字段名 like '%士%';(%表示任意个字符)
#select * from product where pname like '%士%';

# 查询商品名称以"士"字开头的商品信息
# select * from 表名 where 字段名 like '士%'; (%表示任意个字符,士在第一个字,则代表以士开头的信息)
#select * from product  where pname like '士%';


# 查询商品名称第二字为"士"字的商品信息
# select * form 表名 where 列名 like '_士%'; (%表示任意个字符,_(下划线)代表第一个字)
# select * from product where pname like '_士%';

# 查询商品id在(3,6,9)范围内的所有商品信息【关键字in】
# select * from 表名 where 列名 in (3,6); (关键字 in (3,6)代表范围,多个范围用逗号隔开)
# select * from product where pid in (3,6);

# 查询商品名称为士兵并且价格>0的商品信息【关键字 and 】
# select * from 表名 where 列名1=要求1 and 列名2=要求2;(关键字 and 必须两边都要满足要求)
# select * from product where pname='士兵' and price>0;

# 查询商品名称含有士字或者价格>100的商品信息【关键字 or 】
# select * from 表名 where 列名 like '%士%' or 列名 > 100; (关键字 or 两边满足一个条件即可)
# select * from product where pname like '%士%' or price>100;

# 查询id不是2的商品信息
# select * from 表名 where 列名 <> 2 ;( <> 代表不等)(推荐使用,属于sql语句中)
# select * from 表名 where 列名 != 2 ;( <> 代表不等)(也可用,但是属于Java中)
# select * from product where pid <> 2;

# 查询价格在100到10000之间的商品信息【关键字 between  】
# select * from 表名 where 列名 >= 100 and 列名 <=10000;
# select * from product where price>=100 and price <=10000;
# select * from product where price between 200 and 10000;(前面必须写小值 and 后面写大值)

=============================================================================================
分组查询:
/*
语法: select * from 表名 group by 分组的字段名称
注意:
没有进行分组操作的,还带有条件的使用 where 关键字 
如果进行了分组操作,还带有条件,必须使用having,而且只能放在最后面!!
*/
# 1.添加分类id 
# alter table product add cid varchar(32);

# 2.初始化数据 
# update product set cid='1';
# update product set cid='2' where pid in (5,6,7);

# 根据cid字段分组,分组后统计商品的个数。
# select * from product; # 查询中记录数
# select cid,count(*) from product group by cid;

#根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元。
# select cid,avg(price)from product group by cid having avg(price)>20000;

#注意: 没分组,有附加条件使用where
#分过组,有附加条件必须使用having
======================================================================================
# 聚合语法: 
# select 函数名称(列名) from 表名;
# 获得所有商品的价格的总和 sum
# select pid,sum(price) from product;

# 获得所有商品的平均价格 avg
# select pid,avg(price) from product;

# 获得所有商品的个数 count(重点)
# 注意: 获取个数时, 填任何列名都可以
# select count(*) from product;
=======================================================================================
# 排序语法: (默认不写,是升序)
# 注意: order by 排序操作必须放在 where 条件后面 !!!
# select * from 表名 order by 指定的字段名称(asc升序/desc降序)
# select * from product order by price;  默认的是升序排序
# select * from product order by price asc;  升序排序
# select * from product order by price desc;   降序排序

# 升序: ASC 
# select * from product order by price asc;(价格升序)

# 降序 DESC
# select * from product order by price desc;(价格降序)
=======================================================================================
分页查询:
select * from 表名 limit ?; // 查询结果里面获得前N条记录
        
select * from 表名 limit ?,?; // 分页查询!
参数1:起始索引(默认从0开始),一般获得某页数据,起始索引是需要进行计算的,                
公式:(要查看的页码数-1)*每页显示大小

参数2:每页显示大小(几条记录)【一般是固定写死】

 9.约束

主键约束:[ 通常是在建表的时候就进行设置 ]对主键字段进行限定(唯一unique、非空not null!)    在字段后面添加相应约束即可.

alter table 从表名 add [constraint pk_主键名称] primary key(主键字段名称);    添加主键约束

alter table 表名 drop primary key    删除主键约束

alter table product add unique(pname);    添加唯一约束

alter table product drop index pname;    删除唯一约束

    

        浅谈数据库记录......

转载于:https://my.oschina.net/u/4142715/blog/3057427

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值