美文网首页
数据库总结(二)

数据库总结(二)

作者: 风的低语 | 来源:发表于2018-05-24 16:20 被阅读11次
    查看所有的数据库  show databases
    创建数据库  create database [if not exists] studb
    切换数据库  use studb
    展示所有的表格  show tables
    创建表 create table if not exists stuTable (id int,name varchar(20),gender varchar(2))ENGINE='innoDB' default charset='utf8'
    插入  insert into stuTable (id,name,gender) values (1,'yangshaofeng','M');
    查找  select * from stuTable
    更新  update stuTable set name = 'ziji' where id = 2
    删除记录  delete from stuTable where id = 1;
    查看创建表的语句  show create table stuTable;
    表重命名 rename table 旧名字 to 新名字
    删除表 drop table newStuTable
    删除数据库 drop database studb
    
    alter 增加字段 删除一个字段 给字段扩充长度
    修改字段或者表的编码  修改字段的名字 
    
    修改字段的类型和名字
    alter table [表名字] change [旧字段] [新字段] [新字段的类型] [新字段的约束]
    新增字段
    alter table [表名字] add([字段] [类型] [约束],[字段] [类型] [约束])
    删除字段
    alter table [表名字] drop 字段
    
    // 查询
    select * from stuTable; // 查找所有
    select * from stuTable where id = 4 // 根据子句查找
    select * from stuTable where name = 'xiaohan' and phone = '120  // &&
    
    select name,phone from stuTable where phone = '119' or phone = '120'  //  ||
    
    // 模糊查找
    select count(name) from stuTable where name like '%xiao%'  // like % 模糊查找
    
    // 排序
    select score from scoreTable order by score   // 升序
    select * from scoreTable order by score desc   // 降序
    
    select score from scoreTable where score > 70 order by score limit 0,1
    // limit begin,pageCount
    
    // 函数
    count()  统计个数
    max()  最大值
    min()  最小值
    avg()  平均值
    
    // 分组
    group by
    having   分组之后过滤
    where  分组之前,会影响分组结果
    
    // 去除重复
    distinct
    
    // 删除外键
    alter table drop foreign key '外键名'
    // 添加外键
    alter table [表名字]
    add constraint id_fk  foreign key (id) references student (id)
    
    alter table 表名
    add constraint 约束名 约束类型具体的约束说明
    
    // 关联查询
    select * from stuTable st, stuScore ss where st.id = ss.stuid;
    
    //笛卡尔积
    a表和b表的每一条数据匹配
    b表和a表的每一条数据匹配
    // 内关联 (inner join)
    // 复合两个表的,出结果
    
    // 左关联 (left join)
    // 左表把所有符合条件的列出来,右表中有就有,没有为null
    
    // 右关联 (right join)
    右表把所有符合条件的列出来,左表中有就有,没有为null
    
    解决数据库冗余问题
    
    三大范式
    1.第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
    
    2.第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中 (订单)
    
    3. 第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
    
    用户管理
    // 创建用户
    CREATE user 'zhangsan'@'localhost' [Identified by '密码']
    
    // 删除用户
    drop user [用户名]
    
    // 给权限
    GRANT SELECT ON myschool.view_student TO `student`@`localhost`;
    
    // 修改密码
    mysqladmin –u root –p password "新密码" 
    
    // 修改其他用户密码
    SET PASSWORD  FOR `teacher`@`localhost`= PASSWORD("8888");
    
    // 删除权限
    DROP USER `student`@`localhost`;
    
    // 查看用户权限
    show grants for zx_root
    
    // 回收权限
    revoke  select on dmc_db.*  from  用户(如果没有权限会报错)
    
    id 
    1 2 4 8 3 10 2 3 4 20 3 4 30 7 9 2 8
     
    // 二分查找
    1 2 2 2 3 3 3 4 4 4 7 8 8 9 10 20 30 
    
    hash索引
    
    b-tree 结构
    innodb  b+tree
    
    索引会加快查找速度
    更新,删除,添加索引表的也需要变化
    
    索引建立在经常是用where的字段上
    
    查找: 添加
    9     1
    
    索引
    // 修改表结构
    alter Table [表名] add index(english)
    // 创建索引
    CREATE INDEX indexName ON mytable(username(length)); 
    // 直接指定索引
    CREATE TABLE mytable(  
    ID INT NOT NULL, 
    username VARCHAR(16) NOT NULL,  
    INDEX [indexName] (username(length)) )
    // 显示索引
    SHOW INDEX FROM table_name; 
    // 删除索引
    ALTER TABLE table_name DROP INDEX index_name
    
    事务
    SAVEPOINT identifier 一个事务可以有多个标记点
    ROLLBACK TO identifier;把事务回滚到标记点;
    
    SET AUTOCOMMIT = 0; // 默认值, 自动提交
    
    SET AUTOCOMMIT = 1; // 手动提交
    
    与其给事务定义,不如说一说事务的特性。众所周知,事务需要满足ACID四个特性。
    1. A(atomicity) 原子性。一个事务的执行被视为一个不可分割的最小单元。事务里面的操作,要么全部成功执行,要么全部失败回滚,不可以只执行其中的一部分。
    2. C(consistency) 一致性。一个事务的执行不应该破坏数据库的完整性约束。如果上述例子中第2个操作执行后系统崩溃,保证A和B的金钱总计是不会变的。
    3. I(isolation) 隔离性。通常来说,事务之间的行为不应该互相影响。然而实际情况中,事务相互影响的程度受到隔离级别的影响。文章后面会详述。
    4. D(durability) 持久性。事务提交之后,需要将提交的事务持久化到磁盘。即使系统崩溃,提交的数据也不应该丢失。
    
    备份
    1. 导出
    SELECT * FROM [表名] INTO OUTFILE '/tmp/tutorials.txt'
    
    导出mysql格式
    ./mysqldump -u root -p [数据库名] [表名] > /Users/yangshaofeng/Desktop/dump.txt
    
    ./mysqldump -u root -p [数据库名] > database_dump.txt
    恢复数据库
    source 文件
    
    begin
    updata money = 200 where name = 'da'
    updata money = 800 where name = 'xbj'
    commit
    
    默认是自动提交
    
    jdbc
    
    c3p0
    
    dbutils
    

    相关文章

      网友评论

          本文标题:数据库总结(二)

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