数据库简介

操作库

  1. 创建数据库
    create database database_name [if not exists database_name];
  2. 查看数据库
    查看全部数据库
    show database;
    使用数据库
    use database_name
    查看数据的创建:(可以查询数据库字符集使用)
    show create database database_name;/create database …/
    charset=utf-8
  3. 修改数据库(一般情况下不会修改数据库)
    alter database database_name character set gbk;
    为什么不会经常修改数据库?
    软件工程分析
  • 可行性分析–收益,法律要求
  • 需求分析–分析软件有哪些功能
  • 总体设计–设计数据库和表格结构和功能涉及的字段.
  • 详细设计–指定功能的实现内容,和数据库表格中数据的规范.
  • 代码实现
  • 测试
  • 上线
  • 线上维护
  1. 删除数据库
    drop database database_name

操作表

  1. 创建表
    create table table_name(
    id int,
    name varchar(20)
    );
  • 字段类型
    数值型 int(11)[默认是11,通常不用设置],double float tinyint smallint bigint
    字符串
    char(20)查询效率较快.char指定的字段创建为定长,在查询的时候只需要读取固定长度的数据即可.如果只存储2个字符的数据,占据的存储空间仍然是20个字符.
    varchar(20)查询效率较慢.varchar比char类型更加节省空间,虽然指定存储空间是20个字符,但是真正在存储数据的时候只会占数据本身的长度,不会占用其他剩余的空间,所以相对来说varchar更加节省空间.
    日期型
    data time datetime timestamp(时间戳)
    大数据类型
    逻辑型
    bit
  • 约束-键
    primary key 主键 唯一性和非空性.
    auto_increment 自动增长.
    主键可以是任意类型字段,但是并不会自动增长,只有在主键字段为数值型的情况下,才可以设置为自动增长.
    如果一个字段为自动增长的字段,那么这个字段一定会作为主键使用.
    一个表格一般情况下都会设置一个主键,利用主键可以提升效率.
    not null 非空
    unique 唯一约束
    foreign key 外键.
  1. 查询表
  • 查询当前数据库中所有的表格:show tables;
  • 查询当前表的创建语句:show create table table_name;
  • 数据库引擎:InnoDB(支持事务),MyIsam(不支持事务)
  1. 修改表
    alter table table_name add/drop/modify name varchar(20)
    alter table table_name change name username varchar(20)
    ~rename table emp to employee;

操作表数据

  1. 数据的操作
    增删改查 CRUD
    插入数据:insert into table_name values(column_name,column_name…);
    在插入数据时需要确定表名后的字段顺序,以便在values后按照指定的字段顺序书写对应值.
    注意:
    插入数据的类型和字段类型要匹配.
    插入数据的长度不能超过字段要求的长度.
    字符串和日期类型的数据需要使用单引号或者双引号(英文符号)引起来.
  2. 删除数据
    delete from table_name; 删除整张表中的数据.
    truncate table_name; 删除整张表,包括表结构.auto_increment从头计数
    truncate效率相比delete from 更高
    如果是多表,多表之间存在表间关系,直接truncate删除表可能会导致表间关系不再存在.
    delete from table_name where id=1
    delete from table_name where id>1
  3. 更新数据
    update table_name set column_name=value;更新整张表中的字段数据.
    update table_name set column_name=value where name=‘xxx’;
  4. 查询
    select * from table_name;
    select column_name,… from table_name;
    以上两者的查询方式,如果在有索引的情况下,效率相同.只是直接书写全部字段名称查询速度相对比书写要稍高一些,这个速度可以忽略.
  • 别名:
    select math+english as sum from exam;
    select math+english sum from exam e
  • 查询条件
    where 包含的条件
    等值查询 =
    范围查询 >,<,>=,<=,<>,like,in(),is null
  • order by 子句
    对查询结果排序
    order by 在sql语句书写时要放在最后.
    order by 是所有关键字中最后一个执行的关键字.
    select * from exam where name=‘xx’ order by name=‘xxx’;
    order by 子句一定要慎用.因为任何查询使用这个关键字后,查询效率都会降低.
  • 聚集函数
    count 计数
    记录某一个字段在表中有几行.
    select count(|coumn_name)from table_name;
    select count(1)from table_name; 对1当成一个字段
    count某一字段比count
    效率略高一 点.
    在表格中字处的数量较少的情况下(不超过10个),可认为效率是一致的.
    sum 求和
    avg 平均
    max 最大值
    min 最小值
  • group by 分组
    group by column_name根据指定的字段名称分组
    select count(*) from table_name group by id 根据id分组后,再对各组计数.
    where和having区别:where在分组前进行条件过滤,having在分组后进行条件过滤.使用where的地方都可以使用having替换.但是having可以使用分组函数,而where后不可以使用.
  • case when then else end
    select gender case gender when 1 then ‘男’ when 2 then ‘女’ else ‘N/A’ end;

表间关系.

三种表间关系

1对1
1对多
多对多

笛卡尔积查询

结果数据量=左表数量*右表数量
select * from table_name1,table_name2

select * from table_name1,table_name2 where table_name1.id=table_name2.tid

内连接查询

在笛卡尔积查询的基础之上获取左边有且右边表也有的数据.
select * from from dept d inner join emp e on d.id=e.dept_id;

事务

一个事情可以分为多个步骤,这些步骤要么全部成功,要么全部失败,这件事情就可以称之为一个事务.

数据库cmd窗口控制事务
mysql数据库拥有默认的事务能力,一个sql语句,就是一个事务.
start transaction 开启事务
commit 提交事务
rollback 回滚事务

程序控制事务
JDBC-一套接口
mysql – jar
oracle --jar

conn.setAutoCommit(boolean):true则一句sql就是一个事务,一句sql提交一次.false 关闭自动提交,意味着开启事务.
conn.commit() 提交事务
conn.rollback() 回滚事务
conn.setSavepoint() 设置一个保存点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值