码迷,mamicode.com
首页 > 数据库 > 详细

mysql基础知识

时间:2015-12-06 19:13:55      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

数据的实体 管理数据的方式和方法

数据库的技术构成


数据的存储技术

裸数据: 
数据库自己提供的文件管理系统
工作于存储级,使用块I/O操作或者scsi协议
软件开销低
文件系统:
可用性和恢复性高
适用于更大型的数据存储,例如分布式存储
存储引擎
存储机制
索引的方式

数据的操作技术
SQL语言
数据定义语言 (DDL): DROP CREATE ALTER
数据操作语言(DML): INSERT UPDATE DELETE
数据查询语言(DQL) : SELECT
数据控制语言(DCL):GRANT REVOKE COMMIT
数据库的管理系统:
用户管理
处理数据库连接
缓存
查询
日志

数据库的接口
用于不同的程序设计语言连接和管理数据的访问接口
ODBC
JDBC
PDO
ADO.NET

关系型数据库 : 一种表结构
非关系型数据库: 数据结构化的存储格式

mysql的不同的版本的文件格式是不同的
数据库的库名和表名是区分大小写的。
mysql的逻辑架构
        
              服务层 : 线程缓存池
              核心层 
              存储引擎层
 
mysql的执行方式
    1.串行执行方式
          单线程执行
    2. 交叉并发执行
          多个事物交叉执行
           利用事物的等待时间执行多个任务
    3.同时并发执行
          多个处理器系统使用
          每个处理器处理一个事物
    并发执行导致的问题
              并发执行面临同读同写的问题,破坏事物的隔离性和数据的不一致
                  导致的数据不一致
                             1.丢失修改
                             2.不可重复读
                             3. 读取脏数据
 
并发控制
 
利用锁来解决上述的问题:
              锁将多个事物进行了隔离,加了锁之后,其他的时候不可以获得数据。
基本锁的类型:
          读锁:
                   共享锁:当事物1对数据加了读锁之后其他的事物只能对数据进行读数据,直到事物1释放了锁
            写锁: 
                   排他锁:  当事物1对事物加了写锁之后,其他的事物不可以读写数据
    悲观锁和乐观锁
              本质上是对锁的一种看待的角度
                   悲观锁 : 在整个的数据处理的过程中,将数据处于锁定的状态
                   乐观锁:  相对于悲观锁,乐观锁认为数据在一般的情况之下不会造成冲突,所有在数据的处理的过程中,只有在数据提交更新的时候才会正式的对数据的冲突进行检测,如果发现冲突了之后,就返回错误的信息,让用户决定应该如何去做。
mysql的数据类型
          整数类型
         
存储带小数的类型:
          浮点数和定点数
              定点数: DECIMAL
 
日期和时间的类型:YEAR TIME  DATE DATETIME  TIMESTMP
 
char 固定的长度
varchar 可变的长度
TEXT 数据类型用来存储比较长的非二进制数据字符串
ENUM 枚举类型
SET 集合
二进制数据类型 : 存储二进制数据类型  以 bytes 为单位进行存储 以bytes 为单位比较
 
msyql 数据库操作
          创建一个数据库   : create database lh;
           创建的过程中指定数据库的编码格式:    create database lh character set utf8;
           查看数据库创建时的命令    : show create database lh;
            删除一个数据库   : drop   database lh;
  mysql的表操作:
          数据库表的范式:
              第一范式: 数据库中的字段都是单一属性的,不可再分。这个单一范式由基本类型构成的。数据的属性要分到不可再分为止,
               第二范式: 数据库中的数据是不会相互影响的,减少数据的冗余
                第三范式: 通过数据之间的关系设置主键来方便的查询
            创建一个数据表:
              CREATE TABLE 表名(
列表名1 ,数据类型【约束】【默认值】,
列表名2,数据类型 【约束】 【默认值】
) [ENGINE =存储引擎] [CHARACTER SET = 字符集];
查看所有的表: show tables;
查看表的详细的信息: desc 表名;
查看制定表的详细的信息; show create table 表名/G;
删除数据表: DROP TABLE IF EXISTS 表名;   其中的if exists 可选,如果表不存在,就不执行任何的操作。
 
数据库的约束:
         主键约束: 使用primary key 设置主键    设置了主键之后这个属性就不能再重复
           外键约束
              外键搭配主键使用,若不为空值,则每一个外键值必须等于另一个表中主键的某个值,
               外键数据类型必须和主键的一致。
自增长;
          CREATE TABLE T1 (uid primary key auto_increment)
 
 
修改一个表的名字:  ALTER TABLE 表名 RENAME 修改后的表名
 
修改字段的数据类型: alter table 表名  modify 字段名  数据类型
                                          
修改字段名 alter table 表名  change 旧字段名  新字段名  新数据类型
 
在当前的表中添加一个新的字段: ALTER TABLE  表名 ADD 新的字段名  数据类型;
在当前的数据表中删除一个字段: ALTER TABLE 表名   DROP 字段名;
修改字段的排列的位置 : ALTER TABLE 表名 MODIFY 字段名 数据类型 FIRST|AFTER 字段名
更改表的数据引擎; ALTER TABLE 表名 ENGINE= 新的数据引擎
删除表的外键的约束  ALTER TABLE 表名 DROP FOREIGN KEY 外键名;       删除了所有的外键之后才能删除对应的主键所在的表
向数据表中插入单行数据: INSERT INTO 表名 SET 属性 数据类型,。。。;
向数据表中插入多行的语句: INSERT INTO 表名  
                                                                                   (指定要插入的各种属性) 
                                                                                      VALUES
                                                                                   (每个属性分别对应的数据),
                                                                                         .........;
 
 
向一个表中插入另一个表中的数据:     INSERT INTO t2 (id,name,sex) SELECT id,name,sex FROM t1;
更新数据: 
              UPDATE t1 SET 
                                            属性=数据,...
                                            WHERE condition;
 
删除数据:  
              DELETE FROM table_name 
                                       .........
                                      WHERE condition;
 
 
一个事务:
              begain 开始一个数据    rollback 回滚这个事务    commit  提交一个事务
 
 
索引:
          索引是帮助Mysql高效获取数据结构的数据结构
 
 
 
 
创建索引:
    创建一个普通的索引
    create table t1(
id ,int primary key,
name varchar(10),
index(name));  这里指定name为索引。
创建一个唯一的索引;
create table t2(
id int,
name varchar(10),
unique index idInx (id));
 
 
修改索引:
     添加一个索引          alter table t1 add index nameindex (name);
     删除一个索引:       alter table t2 drop index nameindex:
     添加一个索引: create index  ididx on t1(id);
     删除一个索引: drop index ididex on t1;
 
 -------------------------------------- -------------------------------------更新与2015/12/06---------------------------------------------------------------------------
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

mysql基础知识

标签:

原文地址:http://www.cnblogs.com/xiaoli2018/p/5023963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!