一、初识MySQL数据库
###<1>数据库概述
    1. 数据库
        长期存储在计算机内的,由组织的可共享的数据集合
        存储数据的仓库
        文件

2. 数据库管理系统
        操作和管理数据库的软件
        软件

3. 数据库的类型
        关系型:把复杂的数据结构归结为简单的二元关系(二维表的形式)
        非关系型:NoSQL,Not Only SQL
            键值存储数据库:Redis
            文档存储数据库:MongDB,json/xml
            列存储数据库:HBase

4. 主流的关系型数据库
        Oracle:Oracle
            收费
            
        SQLServer:微软
            开放性差            
        
        DB2:IBM
            收费
        
    5. 关系型数据的特点    
        由多张表和表之间的关系组成数据集合。(表的形式)
        表由行和列组成
        表的列:column ,字段,属性
        表的行:row ,记录
![](2.png)

###<2>MySQL概述
    1. MySQL发展历程
        瑞典MySQLAB 公司研发的开源的关系型数据管理系统
        反对软件专利 copyright,copyleft
        08被sun公司收购,09sun被Oracle

2. 版本
        企业版:
            商业的公司维护
            收费,收取的服务费
            
        社区版:
            开源社区维护
            免费

3. 特点
        开源的关系型数据管理系统
        短小精悍,速度快,总体拥有成本较低
        被广泛的应用于中小型网站中
        是LAMP流行网站架构的组成部分
        
# 二、搭建MySQL数据库
###<1>安装的方式
        MSI安装:Windows Installer微软格式的安装包
        ZIP安装:绿色版压缩包
                
###<2>注意事项(以前安装过MySQL数据库,卸载干净)
    卸载MySQL数据库的步骤:
        1. 关闭MySQL服务
        2. 卸载MySQL数据库软件
        3. 删除残留的数据
            源安装位置            
            C://programData下的MySQL
            注册表:xxxmachine/system/001~002~set/services/eventlog/application/mysql

###<3>安装MySQL数据库
    MSI安装    
    编码
    
# 三、使用MySQL数据库软件
###<1>在DOS下启动MySQL服务
        net start mysql
        net stop mysql

###<2>登陆数据库
        命令:mysql - 参数

参数:
            -u 用户名
            -p 密码
            -P 指定端口号
            -V 查看数据库的版本
            -h 指定数据库的服务器地址
                
        例如:
            //登陆数据库,指定端口号和主机地址
            mysql -uroot -proot -P3306 -h127.0.0.1
            
            //登陆数据库,使用默认的端口和主机地址
            mysql -uroot -proot
        
            //密码不可见的方式登陆数据库
            mysql -uroot -p回车 
            密码(不可见的)

//通过MySQL Command Line Client登陆MySQL数据库

//远程登陆MySQL数据库
            mysql -uroot -proot -P3306 -h111.231.15.33
            
###<3>退出
        方式一:exit
        方式二:quit
        方式三:\q
        方式四:ctrl+c

###<4>修改密码
        1. 停止MySQL服务
        2. 在dos输入:mysqld --skip-grant-tables
        3. 开启新的dos窗口,登陆mysql数据库(不需要密码)
        4. 更改密码
            use mysql (DB数据库,文件)
            update user set password=password('123') where user='root';
        5. 关闭dos窗口,结束mysqld进程
        6. 重启MySQL服务

# 四、数据类型
    MySQL支持多种数据类型:数值型,字符型,日期型

常用的数据类型:
        1. 整型
            int[(M)]:存储整数
            例如:存储学生的年纪

stutAge int :   18
            stutAge int unsigned : 18
            stutAge int(5)  zerofill: 00018    100000

总结:设置了zerofill属性的情况下,数据不足M位会在左侧补零;
             超出的M位,则不受影响。
             M只是一个预期值,和存储数据的范围没有关系。

2. 浮点型
            float[(M,D)]:存储小数
            例如:存储工资
            
            salary float(6,2):存储的数据位数最多6位,其中有2位小数
                              9999.99,整数超出了范围直接报错,小数超出范围四舍五入操作
                    
            salary float:    没有限定

3. 字符型
            char(): 固定长度的字符串类型,存储5,'5    '
                会造成存储空间的浪费,速度快

varchar():变长的字符串类型,存储5,'5'
                不存在存储空间的浪费,速度慢
                    
            text:大数据量的字符

blob:大数据量的字节
            
        4. 日期类型
            year:存储年份
            time:时间类型,存储时间。hh:mm:ss
            date:日期类型,存储日期。yyyy-MM-dd
            datetime:日期+时间。yyyy-MM-dd hh:mm:ss
            timestamp:时间戳类型。yyyy-MM-dd hh:mm:ss ,2037 年以前的时间可以存储

5. 举例
            类型            字节          范围

tinyint         1byte        -128~127(255)
            smallint        2byte       -32768~32767(65535)
            mediumint        3byte        8百万(一千六百万)
            int                4byte        
            bigint            8byte       9百多兆

注意:
             short is better ,   age  tinyint   ungined  ; 1   -128 ~ 127
             选择合适的数据类型是数据库优化的一部分。

netstat -ano 列出当前端口使用的情况
    tasklist 列出系统中正在运行的进程
    taskkill 结束进程
      
# 五、操作MySQL数据库中的数据
###<1>SQL概述
    SQL:Structure Query Language,定义和操作数据,维护数据的完整性和安全性。
    被ISO国际化标准组织采纳为关系型数据库语言的国际标准。
    简单易学,使用方便,面向非过程                         
                     
###<2>组成
    数据定义语言:DDL(Data Definition Language)
                定义数据库和数据表
                与数据无关
                create  drop  alter

数据操纵语言:DML(Data Manipulation Language)
                操作数据库中的数据
                insert delete update

数据查询语言:DQL(Data Query Language)        
                查询数据的
                无法更改数据
                select

事务控制语言:TCL(Transaction Control Language)
                 事务控制语言
                操作事务
                commit rollback savepoint
    
    数据控制语言:DCL(Data Control Language)
                定义访问权限和安全级别
                grant  revoke

###<3>数据定义语言:DDL
###数据库操作
    1. 创建数据库
        语法格式:create database [if not exists] 数据库名称[default] character set 编码名称;
            
        例如:
            create database db1;
            create database db1 if not exists;//忽视错误,显示警告
            show warnings;//查看警告

create database db2 character set gbk;//指定数据库的字符集

2. 查询数据库
        语法格式:
            show databases;//查看所有数据库
            show create database 数据库名称;//查看具体的一个数据库

3. 修改数据库
        语法格式:alter database    [if not exists] 数据库名称  character set = 编码格式;
            
        例如:
                alter database db2 character set=utf8;

4. 删除数据库
        语法格式:drop database 数据库名称;
        例如:
            drop database db2;

###数据表操作    
    1. 创建表
        指定数据库:use 数据库名称;

查看当前正在使用的数据库:select database();

语法格式:create table 表名称(字段1 字段1定义 , 字段2 字段2定义,......);

例如:创建老师表
            create table teacher(
                tid int,
                tname varchar(20),
                age tinyint unsigned,
                gender enum('man','woman','other'),
                shows varchar(100)
            );

2. 查看数据表
        语法格式:show tables[from 数据库名称];
            
        例如:show tables from mysql;
        
        查看表结构的语法格式:
                desc 表名;
                show columns from 表名;

3. 修改数据表(不建议操作)
        3.1 更改表名称
            方式一:alter table 表名  rename  [as|to] 新的表名称;
            方式二:rename table 旧的表名称 to 新的表名称[,旧的表名称2 to 新的表名称2,...]            
            例如:
                alter table teacher rename teachers;
                rename table teachers to teacher;

3.2 添加列
            语法格式: alter table 表名称  add [column] 列名称  列定义[first | after 列名];

例如:
                alter table teacher add birth date;
                alter table teacher add birth2 date after gender;
                alter table teacher add birth3 date first;
            
        3.3 修改列定义
            语法格式:alter table 表名称 modify 列名称  新的列定义 [ first | after 列表];
            
            例如:
                alter table teacher modfiy tid smallint first;

3.4 修改列名称
            语法格式:alter table 表名称 change 旧的列名称  新的列名称  新的列定义 [ first | after 列表];
            
            例如:
                alter table teacher change birth birthday date     after birth2;

3.5 删除列        
            语法格式:alter table 表名称 drop 列名
                
            例如:
                alter table teacher drop birth1, drop birth2;

4. 删除数据表    
        语法格式:
            drop table 数据表名称;
        例如:
            drop table teacher;
        
###练习

###数据操纵语言:DML
    1. 添加操作
        语法格式:insert [into] 表名 [(列名1,列名2,....)]  values|value (数值/表达式);
        
        例如:
            insert teacher value (2,'马云', 2,50,'我人生中的最大的错误就是创立了阿里巴巴');
            insert teacher value (3,'东哥', 2,44,'我这个人脸盲,跟她在一起不是因为她漂亮,因为我根本不知道她漂不漂亮');            
            insert teacher value (4,'马腾哥',1,47,'只要你充够了钱,你就会变的更强');
            insert teacher value (5,'丁磊',1,66,'我非常赞成大学生去卖猪肉');
                                    
    2. 更改操作
        语法格式:update  表名称  set 列名称=数值|表达式  ,列名称2=数值2|表达式2 ...... [where 条件]

例如:
                udpate teacher set age=age-1;
                update teacher set age = age +1 , gender=2;-- 同时更新多个字段的数值
                update teacher set tname='丁三石' where      tid=5;    -- 带限制条件的更新
        
    3. 删除操作    
        语法格式:delete from 表名 [where 条件];
        例如:
            delete from teacher where tid=5;
            delete from teacher;

###数据查询语言:DQL
    1. 语法格式:
        select 表达式1,表达式2,.... from 表名
                [
                    where 条件
                    group by 分组条件
                    having 条件
                    order by 排序列名
                    limit
                ]
            
    
    2. 普通查询
        语法格式:
            select 表达式;//表达式可以是一个函数
                select database();
                select version();
                select user();
                select now();
        
            select 列名列表 from 表名;
                列名列表可以是* ,代表查询所有列,
                每一个列名后面可以跟上 [as] 别名 ,表名后面也可以跟上[as] 别名

3. 条件查询
        语法格式:where 条件表达式;
            条件查询对数据进行过滤,在where后面,可以使用mysql支持的运算符和函数
            
        MySQL支持的运算符:
            =  =! <>  < >  <= >= 
            and  ,  or  , not
            null  ,is not null
            between...and  ,  in(set)
                
        例如:
            select * from  teacher where age <>44;
            
            select * from teacher where tname in('马云','马腾哥');

4. 模糊查询
        语法格式:like /not like + 通配符(%)/占位符(_)

例如:查询所有姓马的老师
            select * from teacher where tname like '马%';

一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)的更多相关文章

  1. {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器

    Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...

  2. MySQL集群搭建详解(三种结点分离)

    本文将搭建一个最简化的MySQL Cluster系统,配置方法中的所有命令都是以root账户运行.这个MySQL Cluster包含一个管理结点.两个数据结点.两个SQL结点,这五个结点会分别安装在五 ...

  3. 【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!

    写在前面 今天,一位哥们打电话来问我说误操作了他们公司数据库中的数据,如何恢复.他原本的想法是登录数据库update一个记录,结果忘了加where条件,于是悲剧发生了.今天,我们不讲如何恢复误操作的数 ...

  4. 基于MySQL的-u选项实现如何最大程度防止人为误操作MySQL数据库

    在mysql命令加上选项-U后,当发出没有WHERE或LIMIT关键字的UPDATE或DELETE时,MySQL程序就会拒绝执行.那么,我们基于MySQL提供的这项设置,就可以轻松实现如何最大程度防止 ...

  5. Python开发【第十九篇】:Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  6. 转载的在DOS下操作mysql

    转载原文地址:http://www.server110.com/mysql/201309/1070.html 一.连接MYSQL. 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1 ...

  7. Day12(补充) Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  8. 【Python之路】第十九篇--Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  9. Python操作MySQL:pymysql和SQLAlchemy

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  10. php操作mysql关于文件上传、存储

    php+前端+mysql实现文件上传并储存 我们都知道很多网站都需要上传文件,最普遍的就是图片上传,即是用户头像等等: 关于mysql+php实现文件查询,存储大致两个方式, 1.直接把文件写入mys ...

随机推荐

  1. canvas文字自动换行、圆角矩形画法、生成图片手机长按保存、方形图片变圆形

    canvas的文字自动换行函数封装 // str:要绘制的字符串 // canvas:canvas对象 // initX:绘制字符串起始x坐标 // initY:绘制字符串起始y坐标 // lineH ...

  2. c#基础学习(0627)之类型转换、算数运算符++、--

    类型转换 我们要求等号两边参与运算的操作数的类型必须一致,如果不一致,满足下列条件会发生自动类型转换,或者称之为隐式类型转换 例如:int和double兼容(都是数字类型) 目标类型大于源类型 例如: ...

  3. jQuery操作<input type="radio">

    input type="radio">如下: <input type="radio" name="city" value=&qu ...

  4. Jsp&Servlet入门级项目全程实录第7讲

    惯例广告一发,对于初学真,真的很有用www.java1234.com,去试试吧! 1.获取搜索条件值 function searchStudent(){ $('#dg').datagrid('load ...

  5. JavaWeb项目WebContent下的资源文件无法引用

    JavaWeb项目引用资源的时候尽量使用绝对路径. 作者在帮助同学完善其JavaWeb项目端页面的时候,css样式文件怎么也引用不了. 第一个想到的是:是不是文件路径写错了? 于是,作者换了绝对路径, ...

  6. [C#]INI文件控制类

    INI文件常用于保存各类设置或本地化文本,大概格式如下: [Section] key=value 然而.NET框架似乎并没有提供一个实用的工具来操作它,或许是因为MS想让我们都使用Settings类控 ...

  7. mysql,存储引擎,事务,锁,慢查询,执行计划分析,sql优化

    基础篇:MySql架构与存储引擎 逻辑架构图: 连接层: mysql启动后(可以把mysql类比为一个后台的服务器),等待客户端请求,当请求到来后,mysql建立一个一个线程处理(线程池则分配一个空线 ...

  8. Eclipse的版本命名

    Eclipse自3.1开始使用木星的卫星作为版本名,例如: 木卫一:伊奥 lo木卫二:欧罗巴 Europa木卫三:伽倪墨得斯 Ganymede木卫四:卡利斯托 Callisto .... Eclips ...

  9. Java 使用Query动态拼接SQl

    之前有做个一个自定义报表的查询,这里使用的是一个动态的sql拼接,是前端选择了什么指标就查询什么信息!(这里的指标是多个表的字段,前端随便选择了这些指标,然后后端根据这些指标拼接sql,返回这些指标的 ...

  10. 设计模式学习——代理模式(Proxy Pattern)之 强制代理(强校验,防绕过)

    上周温习了代理模式:http://www.cnblogs.com/chinxi/p/7354779.html 在此进行拓展,学习强制代理.但是发现网上大多例子都有个“天坑”(我是这么认为的),在得到代 ...