数据库

作者: nine_9 | 来源:发表于2018-03-26 18:24 被阅读10次

mysql:

优化方法:

1,sql语句的优化:

    在where中尽量避免使用!=

    在where中对null进行判断

    字段都有默认值

    保存数据前数据的处理

    没有变长字段的情况下,varchar比char更好

    limit跟order by

    删除表用distinct 而不是delete

2,索引优化:

    经常使用的字段添加索引

    表的主索引名字尽量短

3,数据库结构的优化:

    范式优化:消除冗余(节省空间)

    反范式优化:适当的增加冗余(减少join)

    拆分表:垂直拆分和水平拆分

4,服务器硬件优化

    磁盘搜素

    io读写

    cpu周期

    内存带宽

创建数据库:  create database数据库名charset=utf8;

删除数据库:  drop database数据库名;

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

查看当前选择的数据库:    select database();

查看当前数据库中所有表:  show tables;

创建表:auto_increment表示自动增长,只能是数字类型

create

table 表名(列及类型);

如:

createtable students(

       id int auto_increment primary key,

       sname varchar(10) not null

);

修改表

alter

table 表名add|modify|drop 列名 类型;

如:alter table students add birthday datetime;

删除表: drop table 表名;

查看表结构: desc 表名;

更改表名称: rename table 原表名 to 新表名;

查看表的创建语句: show create table '表名'

数据操作

查询:   select * from表名

增加:

       全列插入:insert into 表名values(...)

       缺省插入:insert into 表名(列1,...)

values(值1,...)

       同时插入多条数据:insert into 表名values(...),(...)

       或insert into 表名(列1,...)

values(值1,...),(值1,...)

修改: update 表名 set 列1=值1,... where 条件

删除: delete from 表名 where 条件

逻辑删除,本质就是修改操作update

altertable students add isdelete bit default 0;

如果需要删除则

updatestudents isdelete=1 where ...;

多表关联查询有五种连接方式:

1、内连接

|-等值连接

两种写法

inner join

条件

|-不等值连接

在连接条件使用除等于运算符以外的其它比较运算符比较被连接的 列的列值。这些运 算符包括>、>=、<=、<、!>、!<和<>

2、外连接

|-左外连接

|-右外连接

3、自然连接

natural join

4、cross连接 交叉连接

5、自连接

1)即使是在连接条件不满足的情况下,外部连接也会在结果集内返回行,而内部连接不会在结果集类返回行 当外部连接不满足连接条件时,通常返回一个表中的列,但是第二个表中没有返回值--为null

2)自然连接不包含重复的属性

3)交叉连接是两个表数据笛卡尔积(相当于不加连接条件)

Mongodb:


三元素:数据库,集合,文档

1、集合就是关系数据库中的表

2、文档对应着关系数据库中的行

3、文档,就是一个对象,由键值对构成,是json的扩展Bson形式

       eg:{'name':'guojing','gender':'男'}

查看所有数据库名称:  show dbs

切换数据库:  use数据库名称

删除当前指向的数据库:  db.dropDatabase()

查看当前数据库的集合: show collections

删除当前数据库的集合: db.集合名称.drop()

插入:

db.集合名称.insert(document)

eg1:db.stu.insert({name:'gj',gender:1})

插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

eg2:

s1={_id:'20160101',name:'hr'}

s1.gender=0

db.stu.insert(s1)

简单查询:

       db.集合名称.find()

       db.集合名称.findOne({条件文档})  findOne():查询,只返回第一个

   方法pretty():将结果格式化

       db.集合名称.find({条件文档}).pretty()

更新:

       db.集合名称.update(

         ,

         ,

         {multi: }

       )

       参数query:查询条件,类似sql语句update中where部分

       参数update:更新操作符,类似sql语句update中set部分

       参数multi:可选,默认是false,表示只更新找到的第一条记录,

       值为true表示把满足条件的文档全部更新

       例1:全文档更新

              db.stu.update({name:'hr'},{name:'mnc'})

       例2:指定属性更新,通过操作符$set

              db.stu.insert({name:'hr',gender:0})

              db.stu.update({name:'hr'},{$set:{name:'hys'}})

       例3:修改多条匹配到的数据

              db.stu.update({},{$set:{gender:0}},{multi:true})

保存

       db.集合名称.save(document)

如果文档的_id已经存在则修改,如果文档的_id不存在则添加

例1:

       db.stu.save({_id:'20160102','name':'yk',gender:1})

例2:

       db.stu.save({_id:'20160102','name':'wyk'})

删除

       db.集合名称.remove(

         ,

         {

           justOne:

         }

       )

参数query:可选,删除的文档的条件

参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

例1:只删除匹配到的第一条

       db.stu.remove({gender:0},{justOne:true})

例2:全部删除

       db.stu.remove({})

创建集合

       db.createCollection(集合名称,bson格式)

       db.createCollection('sub',{capped:true,size:10})

去重:

       db.集合名称.distinct('去重字段',{条件})

       例1:查找年龄大于18的性别(去重)

       db.stu.distinct('gender',{age:{$gt:18}})

Redis:


       set key value:给一个key赋值value

       mset key value [key value]:设置多个键值对

       get key:根据key获取一个值

       mget key [key]:根据多个key获取多个值

       setex key seconds value:给一个key设置值value,过期时间seconds

       incr key:将key对应的值+1

       incrby key increment:将key对应的值+increment

       decr key:将key对应的值-1

       decrby key increment:将key对应的值-increment

ؕ��E�

相关文章

  • MySQL数据库day01

    系统数据库 ​​​ 创建数据库 ​​​ ​​​ ​​​ ​​​ 查看所有数据库 使用数据库 修改数据库 删除数据库...

  • 数据库操作

    创建数据库: 选择数据库: 查看数据库: 修改数据库: 删除数据库:

  • Ubuntu操作mysql数据库命令

    一、连接数据库 连接本地数据库 退出数据库 二、操作数据库 创建数据库 显示数据库 删除数据库 连接数据库 查看状...

  • 4-14

    创建数据库 createdatabase数据库名称; 删除数据库 dropdatabase数据库名称; 查看数据库...

  • [后端开发] Mysql学习笔记

    1.0 数据库 创建数据库 查看所有数据库 删除数据库 切换数据库名 查看正在使用的数据库 2.0 数据库表 创...

  • 2020最新最全数据库系统安全

    数据库标识与鉴别 数据库访问控制 数据库安全审计 数据库备份与恢复 数据库加密 资源限制 数据库安全加固 数据库安...

  • 2020-01-05 sql基本概念

    数据库用来储存数据。 数据库的种类大致有:层次数据库、关系数据库、面向对象数据库、XML数据库、键值数据库。 关系...

  • Mysql数据库基本操作

    连接数据库 退出数据库 查看数据库版本 显示数据库时间 查看当前使用的数据库 查看所有数据库 数据库备份 导入数据...

  • mysql命令行操作

    准备 登陆 数据库操作 查看现有数据库 创建数据库 删除数据库 查看数据库 使用数据库 查看当前数据库 表操作 新...

  • 1.7.1 MySQL数据库学习

    1. 数据库命令行学习 进入数据库 创建数据库 查看数据库列表 删除数据库 使用数据库 查看当前数据库 2. 表 ...

网友评论

    本文标题:数据库

    本文链接:https://www.haomeiwen.com/subject/hfarcftx.html