mysql

数据库入门
    名词
        DB,Database,数据库,用于存储和管理数据
        DBMS,DataBase Management System,数据库管理系统,管理数据库
            网状型数据库
            层次型数据库
            关系型数据库RDBMS,Relationship DataBase Management System 
        关系型数据库:基于关系模型所创建的数据库,关系模型是基于二维表的模型
        数据库用表来存放具有相同属性的实体.表分为行和列,一行(一条记录)表示一个实体,一列表示实体的一个属性.
        实体相当于java中的对象,每一列相当于java对象中的属性.
        关系:就是表.表和表之间的关系就是实体和实体之间的关系
        记录:就是一行,表示一个实体.(又称元组)
        字段:就是一列,表示实体的一个属性.(又称域)
    表的注意事项
        列具有固定的数据类型
        每行是唯一的
        列没有顺序
        行没有顺序
        列有一个唯一的名称



关系型数据库的种类
    DB2,IBM
    oracle ,Oracle公司,收费
    ms sql server ,微软
    mysql,开源,免费



mysql安装
    软件版本
        mysql-installer-community-5.6.12.0.msi
    安装
        ->Install MySQL Products
        ->I accept the license terms->Next
        ->Skip the check for updates(not recommended)->Next  跳过检测更新
        ->Custom->Installation Path(安装路径)和Data Path(数据库文件存放路径) 建议选成一样->Next
        ->全选吧 Next
        ->Execute
        ->Next
        ->Next
        ->Next (默认配置:开发服务器,使用最少内存;开启TCP/IP访问,使程序可以连接到数据库,默认端口3306;)
        ->密码自己填(要记住)->Next
        ->去掉Start the MySQL Server at System Startup(去掉开机启动,上面那个是服务名,要记住) ->Next
        ->Next(稍等会儿才能点)
        ->Finish (那个启动客户端管理软件,想选就选)
        需要手动配置path,可以访问bin目录下的命令,例如:F:\chengxu\mysql\MySQL Server 5.6\bin;
    mysql目录结构
        bin目录,mysql所有命令
        data目录,数据库db的目录
        my.ini,mysql配置文件
    注意:
        mysql数据库使用UTF-8编码需要写成UTF8
        mysql的默认端口:3306 
        mysql的默认账号:root



mysql启动
    启动windows服务:cmd > net start mysql56    --mysql56是服务名
    手动运行exe文件:cmd > mysqld
    手动运行时,当关闭窗口时程序就会停止,而服务可以后台运行.



登录
    例如:cmd > mysql -uroot -p1234
    格式1:cmd > mysql -u账号 -p密码 [-h主机]
    格式2:cmd > mysql --user=账号 --password=密码 [--host=主机]
    也可以 cmd > mysql -u账号 -p   回车,则需要再次输入密码(不过会显示*号)



常用的显示命令
    show databases;     显示当前数据库服务器中的所有数据库
    use 库名;           打开数据库
    show tables;        显示当前数据库中的所有表
    select database();  查询当前所使用的数据库名称
    status;             查询当前数据库的状态
    desc 表名;          查询当前数据库中某表的表结构
    show character set; 显示所支持的字符集
    
    注意:
        在命令中编写的sql语句,必须使用分号”;“结尾
    默认的几个数据库(了解)
        information_schema  提供了访问数据库元数据的方式.元数据是关于数据的数据,如数据库名或表名,列的数据类型等
        mysql               mysql核心数据库,用来管理其他数据库的数据库。不能删除
        performance_schema  主要用于收集数据库服务器性能参数.提供进程等待的详细信息,保存历史的事件汇总信息等
        test                测试数据库,是一个完全空的数据库,可以删除



中文乱码
    显示表的创建语句:mysql> show create table users;
    显示数据库编码环境变量:mysql> show variables like '%char%';
    原因:
        character_set_client值为utf-8,但命令行是gbk的.
    解决方案:
        将character_set_client , character_set_connection , character_set_results 三个值设置为和命令行一样
    解决方案:mysql> set names gbk;



SQLyog安装
    用来管理mysql数据库的图形软件
    安装即可,很简单
    序列号:
        name    3ddown
        code    7c799fe606582b12
    刚进入软件,点击New...创建与数据库的连接
    Database(s)为需要连接的数据库名称,多个名称用分号隔开,如果没有添加将显示所有数据库



日期函数
    常用
        当前时间        now()
    转换
        日期转字符串    date_format(日期,格式)              -- date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s')
        字符串转日期    str_to_date(字符串,格式)
        转换为天        to_days(日期)
    计算
        增加            date_add(日期, interval 数值 字段)  -- date_add(now(), interval 1 hour)
        计算日期间隔    datediff(日期1,日期2)
        计算时间间隔    timediff(日期1,日期2)
    获取
        日期部分        date(日期)
        时间部分        time(日期)
        年份            year(日期)
        月份            month(日期)
        天              day(日期)
        小时            hour(日期)
        分钟            minute(日期)
        秒              second(日期)
    判断日期范围(2016-08-08 到 2016-08-11 全天)
        while 日期>='2016-08-08' and 日期<='2016-08-12'
        while 日期 between '2016-08-08' and '2016-08-12'
        while date(日期)>='2016-08-08' and date(日期)<='2016-08-11'



mysql事务操作
    开启事务:start transaction;
    提交事务:commit;
    回滚事务:rollback;
    修改隔离级别:set session transaction isolation level 隔离级别
    查询隔离级别: select @@tx_isolation;



数据库锁
    下列考虑的都是innoDB引擎
    锁类型
        行级锁
            开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高
        页级锁
            开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般
        表级锁
            开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低
    行锁类型
        共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。
        排他锁(X):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。
    锁和事务
        行锁依赖于事务,事务提交或回滚,锁自动释放
    锁和语句
        查询语句(select),无锁
        查询语句手动加锁:
            共享锁: select ... LOCK IN SHARE MODE;
            排他锁: select ... FOR UPDATE;
        更新语句(update,delete,insert),会自动给涉及的数据集加 排它锁 (如果存在子查询,则子查询的表会添加排他锁)
        行锁实现方式:
            通过给索引上的索引项加锁来实现的
            所以,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁
    表锁
        事务需要更新大部分或全部数据,表又比较大, 可以考虑使用表锁
        可手动使用LOCK TABLES获取表锁,这里暂不讨论




更新语句的set中可以写子查询
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值