VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > MySQL >
  • MySQL教程之MySQL知识总结

1.MySQL数据库
    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,从而增加了速度并提高了灵活性。
    MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中
  小型网站的开发都选择 MySQL 作为网站数据库,搭配 PHP 和 Apache 可组成良好的开发环境。
2.MySQL存储方式
    一台数据库服务器中会创建很多数据库,在数据库中会创建很多张表,在表中会有很多记录。
3.SQL结构化查询语言
     SQL是高级的非过程化编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚
  本文件的扩展名,可以嵌套,具有极大的灵活性和强大的功能。
4.SQL语言的分类
    (1)DDL(数据定义语言)
    (2)DML(数据操作语言)
    (3)DCL(数据控制语言)
    (4)DQL(数据查询语言)
5.MySQL数据库的创建、修改和删除
    (1)创建数据库
        语法: create database 数据库名称 [character set 字符集 collate 字符集校对规则](一般忽略);
    (2)查看数据库
      查看所有数据库:
        语法: show databases;
      查看某个数据库:
        语法: show create database 数据库名称;
    (3)修改数据库:
        语法:alter database 数据库名称 [character set 字符集 collate 字符集校对规则](一般忽略);
    (4)删除数据库:
        语法:drop database 数据库名称;
    (5)使用或者切换数据库:
        语法:use 数据库名称;
6.MySQL表的创建、修改和删除
    (1)创建表
        语法:create table 表名(
            数据名称 数据类型(长度) 约束,
            .......
        );
        注:括号内的语句用逗号进行多次创建,最后的语句不加任何标点符号
        数据类型:(MySQL所对应的Java类型)
         Java中的类型                        MySQL中的类型
            byte/short/int/long             tinyint/smallint/int/bigint
            float                            float
            double                            ouble
            boolean                            bit
            char/String                        char和varchar类型
                                             char和varchar的区别:
                                              char代表是固定长度的字符或字符串。
                                               定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。
                                              varchar代表的是可变长度的字符串。
                                               定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。
            Date                            date/time/datetime/timestamp
                                             datetime和timestamp区别
                                              datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入
                                              到数据库中
                                              timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的
                                              系统时间存入到数据库中。
            File                            BLOB/TEXT
        约束:
          约束作用:保证数据的完整性
          单表约束:
            主键约束:primary key (主键约束默认就是唯一 非空的)
            唯一约束:unique
            非空约束:not null
    (2)查看表
        查看一个数据库下的所有的表:
          语法:show tables;
        查看单独一个表:
          语法:desc 表名;
    (3)删除表
          语法:drop table 表名;
    (4)修改表
        增添列:
          语法: alter table 表名 add 列名 数据类型(长度) 约束;
        修改列类型,长度和约束:
          语法: alter table 表名 modify 列名 数据类型(长度) 约束;
        删除列:
          语法: alter table 表名 drop 列名;
        修改列名称:
          语法: alter table 表名 change 旧列名 新列名 数据类型(长度) 约束;
        修改表名:
          语法: rename table 表名 to 新的表名;
        修改表的字符集:
          语法: alter table 表名 character set 字符集;
7.MySQL数据的增删改查
    (1)添加表记录
        向表中插入某些列:
          语法: insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…);
        向表中插入所有列:
          语法: insert into 表名 values (值1,值2,值3…);
      注意:
        1.值的类型与数据库中表列的类型一致;
        2.值的顺序与数据库中表列的顺序一致;
        3.值的最大长度不能超过列设置最大长度;
        4.值的类型是字符串或者是日期类型,使用单引号引起来。
    (2)修改表记录
          语法: update 表名 set 列名=值,列名=值 [where 条件];
      注意:
        1.值的类型与列的类型一致;
        2.值的最大长度不能超过列设置的最大长度;
        3.字符串类型和日期类型添加单引号。
    (3)删除表记录
          语法: delete from 表名 [where 条件];(或者truncat from 表名;)<注:truncat删除表数据无法恢复>
      注意:
        1.删除表的记录,指的是删除表中的一行记录;
        2.删除如果没有条件,默认是删除表中的所有记录。
    (4)查看表记录
          语法: select  *(或者列名) from 表 [条件];
8.MySQL解决向数据库中插入中文记录会出现错误
    解决方法:
        需要将MySQL数据库服务器中的客户端部分的字符集改为gbk,找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集,将
      [default-charaacter-set=ISO-8895-1]改成[default-charaacter-set=gbk],然后再重新启动MySQL的服务器。
9.按不同方式查看表记录
    (1)按条件查询:
        使用where 字句
         > ,< ,<= , >= , <> *不等 , =
        like:模糊查询 , in:范围 查询 ,  条件关联:and or not 
        查询李四信息: select * from 表名 where 列名[name = 李四] = '李四';
        查询李四信息并且英语大于90: select * from 表名 where 列名[name = 李四] ='李四' and 列名[Englist]>90;
        在lik可以使用: _ , %  _只能带表一个字符 %带表多个字符  * %王% 带表中间包含着个字就行
        查询姓李的学生信息: select * from 表名 where name like '%李%'
        查询英语成绩是69,75,89的学生: select * form 表名 where 列名[english] in (69 , 75 , 89);
    (2)查询排序: 
        使用order by 字段名称 asc/desc; *默认是用asc , 倒序desc;
        查询学生信息按成绩排: selech * from order by 列名[english];
        查询学生成绩按倒序: selech * from order by 列名[english] desc;
        查询学生按语文成绩倒序再按英语升序排列: select * from order by  列名[chinese] desc, 列名[english] asc;
        查询姓李的学生,英语按倒序排列: select * from 表名 where 列名[name] like '李%' order by 列名[english] desc;
    (3)分组统计查询:
        聚合函数:
          sum(); 获得总数: count();*个数;  最大值:max() 最小值:min() 平均值:avg; 
            获得所有成绩的和: select sum(exam)from 表名;
          count();
            获得所有的计数: select count(*) from 表名;
          max()/min();
            获得某门考试的最大和最小成绩: select max(math) from 表名;/select min(math) from 表名;
          avg()
            获得平均数:select avg(chinese) from 表名;
        分组查询
          语法:使用group by 字段名称;
           按商品名称统计,每类商品所花费的总金额:select product,sum(price) from orderitem group by product;
         注意:
            where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字HAVING;
            例:select product,sum(price) from orderitem  group by product having sum(price) > 5000 order by sum(price) asc;
10.单表查询的执行顺序流程
    select ... from ... where ...  group by ... having ...order by ...;
11.多表查询
      表与表之间的关系-外键
        作用:保证多张表之间的数据如果有关联,则关联的数据的完整性。
      设计与建表原则
        一对多:将外键设置在多的一方,指向一的主键
        多对多:必须有第三张表,这张表中最少会有两个字段作为外键,指向多对多的两张表的主键
        一对一:唯一外键约束
                主键对应:
                  实质就是建立外键并且让这个外键唯一。
      查询:
        准备环境:多表分析创建
        连接查询:关联条件就是外键
            内连接:交集, select * from 表1, 表2 where 条件
            左外连接:左表的数据和交集数据
                select * from 表1 left join 表2 on 条件
            右外连接:右表的数据和交集数据
                select * from 表1 right join 表2 on 条件
        子查询
12.分页查询
    select * from 表名 limit begin, length  :begin 从0开始,表示索引;length:表示查询多少条记录
    select * from 表名 limit number; 从第一条数据开始,总共查询number条数据。
13.MySQL常见bug
     select * from 表名 where score = '80abc' 实质就是:SELECT * FROM stu where score = 80, 会将不能转化为数值的字符舍弃
     select * from 表名 where NAME = 'abC' :MySQL查询的时候不区分大小写      
        解决方法:
            select * from stu where BINARY NAME = 'Abc'

相关教程