数据库

mysql数据库

创建表

- 数据类型
    + 整数类型 int
    + 浮点类型 double
    + 日期类型 date/timestamp
    + 字符串类型 char varchar
        * 可变varchar 不可变是char
        * 空间换时间
- 首先足够用,其次尽量小
    create table 表名(
        id int,
        name varchar(20)
    );
- 查看创建表的语句
    + show create table 表名
- 查看表的明细
    + desc 表名

删除表

- drop table 表名

插入数据

- 第一种:全表字段插入
    + `insert into 表名 values (val1,val2...)`
    + 插入的字段类型和*顺序必须*与表的字段*类型*与顺序保持一致,个数是针对全表字段的插入
- 指定表字段的插入
    + `insert into 表名 (字段1,字段2...) values (val1,val2...)`
    + 插入的数据的顺序要与声明的字段名的顺序一致
    + 类型也要一致,个数也要一致

总结

  • 1: 登录:

    • mysql -uroot -p

    • 密码

  • 2: 查看有哪些数据库

    • show databases;

  • 3: 切换数据库

    • use 数据库名;

  • 4: show tables;

  • 5: 查看表字段明细

    • desc 表名;

  • 6: 插入数据

    • insert into 表名 (字段1,..) values (值1...)

  • 更新操作

    • UPDATE 表名 SET 字段1 = 表达式,[,字段2 = 表达式] [WHERE express布尔值]

    • update student set tmp = 20+1,sex = sex where 1=1;

  • 删除操作

    • DELETE FROM 表名 [,WHERE exr布尔值]

    • delete from student where name = '马蓉';

  • truncate和delete的区别

    • truncate table 表名 delete会一条一条的删 自增id保留 truncate先摧毁整张表,再创建一张和原来的表结构一模一样的表 truncate在效率上比delete高 truncate只能删除整表的数据,也就是格式化。 truncate会把自增id截断恢复为1

查询语句

  • DISTINCT 去重,尽量不要根据* 来去重

    • select distinct name,age from student;

  • 查询语句可以指定多个字段查询,也可以使用* 查询

    • 在企业中,使用SQL查询* 是会拉低查询效率的 ,建议少用* 查询

条件查询

  • select * from student where math > 66.6 or math < 66.6;

> < <= >= = <>    大于、小于、大于(小于等于)、不等于
BETWEEN…AND 显示在某一区间的值
IN(set) 显示在in列表中的值,例:in(100,200)
LIKE ‘张pattern’ 模糊查询%
IS NULL 判断是否为空
AND 多个条件同时成立
OR  多个条件任一成立
NOT 不成立,例:WHERE NOT(salary>100)

模糊查询

- 包含关`select * from student where name like '%关%';` 
- 以关开头`select * from student where name like '关%';` 
- 以关结尾`select * from student where name like '%关';` 
  • 判断为空

    • select * from student where sex is not null;

聚合函数

  • 统计数量

    • count(星号)

  • 求和

    • sum(math+english+chinese)

  • 平均值

    • avg(math+english+chinese)

  • 找最值

    • max(列)/min(列)/max(math+english+chinese)

排序(order by)

  • select * from student where 1= 1 order by chinese desc,math desc,english desc;

分组(group by)

  • 如果聚合函数只有一行,需要对于不同的集合做聚合运算就加上分组

    • select zu,count(*) from student group by zu;

分页(limit)

    - `select * from student limit 10,5;`
    - limit offset(起始位置) count(显示多少个)
    - limit 使用的时候,offset从0开始
    - 豆瓣: offset (当前页-1)* 页显示数
        + count : 页显示数

默认端口

  • oracle:1521

  • sqlserver :1433

  • mysql :3306

  • mongodb :27017

  • DB2 : 50000

mongoDB

  • 关系是数据库对应多个集合

    • 集合对应多个文档对象

    • 在mongo中不论是db还是集合,你都无需去创建他

    • 直接就当他已经存在,直接Use来使用

      • use db名称;

        • 接着会被切换到该db中

        • db.要创建的集合名称.save({});这样集合就被创建了

  • 1:启动服务器

    • mongod --dbpath "D:/mongodb/db" // 目录一定要存在自己创建随便名称‘

      • 尽量设置在非系统盘 C盘生成目录是需要权限的

    • 如果看到waiting for connections on port 27017说明服务已经启动

  • 客户端连接服务器另开一个命令行

    • mongo 默认连接的是test数据库

  • 查询有哪些数据库

    • 查询数据库:show dbs;

    • 切换数据库: use 数据库名;

  • 查询当前db下有哪些集合

    • show collections;

  • 查询数据:

    • db.集合名.find(); //查询出来的是文档对象 document

    • db.users.find();

  • 添加数据:

    • db.集合名.save(对象) //mongo默认会给我们加入_id作为该文档对象的唯一标识

    • db.users.save({contry:'中国',name:'小明',score:77});

  • 删除数据:

    • db.集合名.remove(条件对象);//条件匹配就会被删除

    • db.users.remove({name:'小明'});

    • 如果给定一个空对像,会匹配全部

  • 更新数据:

    • db.集合名.update({匹配条件对象},{$set:{修改后的对象}});

    • db.users.update({name:'小明'},{$set:{contry:'印度'}});;

条件查询

练习:
   查询姓名为小明的学生
        db.users.find({name:'小明'});;
   查询英语成绩大于90分的同学
        db.users.find({score:{$gt:90}}); //查找成绩大于90分$gt
        //$lt小于
   查询数学成绩不等于88的同学
        db.users.find({score:{$ne:88}});
   查询总分大于200分的所有同学
        db.users.find({score:{$gt:200}});

分页

  • db.users.find().skip(3).limit(3);

  • db.集合名称.find().跳到3.显示3条 ​ ​ ​ + limit 0,3

排序

  • db.users.find().sort({key:排序方式});

  • db.users.find().sort({'score':1}); //正数代表升序,负数代表降序

模糊匹配

  • db.users.find({name:{$regex:'小'}});

  • db.users.find({name:{$regex:'明'}});

聚合函数

  • 需要求当前集合的记录数:

  • db.users.find().count();

  • 求最大值 -求整个集合的总成绩 ​ + db.集合名.聚合({ 组的划分规则{_id:'1',显示内容:{score'}} })

    • 求所有人的平均分

      • db.users.aggregate({$group:{_id:'1',sumscore:{$avg:'$score' } }});

    • 求按国家分组,求所有国家的总分

      • db.users.aggregate({$group:{_id:'$contry',sumScore:{$sum:'$score'}}});

  • 添加基础数据: db.users.save({contry:'中国',name:'小明',score:77}); db.users.save({contry:'中国',name:'小红',score:88}); db.users.save({contry:'中国',name:'小张',score:99}); db.users.save({contry:'美国',name:'jack',score:45}); db.users.save({contry:'美国',name:'rose',score:67}); db.users.save({contry:'美国',name:'mick',score:89});

解决32位异常 mongod --dbpath="路径" --journal --storageEngine=mmapv1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值