mysql学习小结

一,基于数据库的PHP项目
    目前的动态网站都是基于数据库的,将网站内容使用数据库管理系统去管理用户,栏目,图片,文章,评论都存储在数据库中
    比如
        XSCMS库
            users
            clumn
            pic
            articles
            commention
二,为什么使用MySQL?
    Oracle,DB2,SQL Server,……
    MySQL-----开源
        表结构
    中小型项目

三,MySQL架构
    C/S结构
    3306  MySQL的默认端口
    MySQL DBMS
        客户端
        服务器端----数据库----数据表----(记录,字段)
四,PHP程序员主要学习哪些操作
    ·为你的项目设计表
    ·如何使用SQL语句增删改查
    程序中用不到的都可以使用工具完成
五,MySQL的安装和启动
    和PHP整合
    Linux下的启动
        service mysqld stop
        service mysqld start
        service mysqld restart
六,MySQL的目录结构
    配置文件----my.ini
    文件夹bin----命令
    文件夹data-----存储数据库
        在data文件夹下创建一个文件夹就是创建一个数据库
七,了解数据库的MySQL语句操作
    DDL
        定义和管理数据对象(库,表,视图,索引)
        CREATE DROP ALTER
        创建库
            create database if not exists test
        删除库
            drop database if exists test
        创建表
            create table databaseName.tableName
        删除表
            drop table databaseName.tableName

    DML
        对数据操纵,和表中的数据记录有关
        INSERT UPDATE DELETE
        insert into users(colName,...) values(colValue,...);
        插入表数据
            insert into tableName([字段列表]) values(值列表1),(值列表2),(值列表3);
                特点:
                      如果在表名后没有给出字段列表,则值列表要列出所有字段的值,必须按默认的顺序
                      所有需要写字段名的地方,都不要加单引号或双引号,但所有的值都要使用单引号或双引号(建议,MySQL可以自动转换)
                      再插入数据时,最好给出字段列表,则值要和字段列表对象即可,可以不按表中的字段的顺序
        修改表数据
            update 表名 set 字段=‘值’[,字段2=‘值‘,...][条件] 条件是确定要更改的记录,可以通过条件指定一条,也可以指定多条
            update cats set id=id-1 where id >= 8;
            delete from 表名 [条件]
            注意:没有条件,会更改/删除整个表
                  delete from tableName;//删除表
                  truncate tableName;//删除表,效率更高
                  只要你想更新,删除,查找,只要写对条件就能准确找到要管理的一条或多条语句
    DQL
        SELECT
        查询
            select [all|distinct]{*|table.*|[table.]field1[as alias1][ 其他字段]}
            from    表名
            [where ]
            [group by]
            [order by]
            [having]
            [limit count]
            使用select语句,目的就是可以按照你的想法将数据查出来,将结果返回给你
            1,字段要列出要查询的字段
            2,可以为每一个字段用as起一个别名,(关键字冲突,多表查询时)
            3,DISTINCT针对整个查询列表取消相同的记录
            4,在SQL语句中,使用表达式的列(算数运算符号,逻辑运算符号,条件)
            5,where 可以在select,update,delete中
                逻辑运算符(多个条件组合)
                    &&  ||  !
                    AND OR not
                比较运算符
                    =(<=>)   和程序中不一样 ,<=> 可以比较空值,而=不可以比较空值,如name=null,这个将查不出来,而name<=>null 则可以查出来
                     !=(<>)
                    <
                    >
                    >=
                    <=
                    is NULL
                    is not null
                    SQL中所用: between…and 连续的取值区间
                            not between and
                            like    模糊查询 _和%两个通配符   _ 任意一个字符  % 0个或多个字符
                            not like
                            in  单个检索    select * from products where id in(5,10,20,25,30);
                            regexp   rlike   模糊查询  正则表达式
            6,多表查询(连接查询)
            7,嵌套查询
                select … where(select ……)
            8,order by 字段[desc|sac] 排序
                    desc 倒序
                    多个字段查询必排序
            9,limit num
                限制查询数量
                limit num1,num2//从num1取,取num2个
            10,group by ziduanNanme
                count()   sum()    avg()  max()  min()
            11,Having 给出分组的条件
                每一个组的条件,having avg(price) > 50;
                having 要在group by 后使用
    DCL
        数据控制,管理权限和数据更改
        GRANT,REVOKE,COMMIT,ROLLBACK

    use tes1;//转到一个数据库中
    desc tableName; //查看表结构
    MySQL示弱类型,创建时使用字符串操纵,进入数据库时会自动转换成相对应的类型
    \s 看数据库状态
    show databases 看所有库
    show tables 看所有表
    show variables 配置文件的变量
    desc tableName 看表结构
    帮助的使用
        ?contents
    1,执行SQL语句,连接数据库服务器
        mysql -h localhost -u root -ppassword //-p是不可少的,不是密码的部分
        show variables;查询所有的变量
        show variables like ‘part‘;
        show databases;//查看库
        create database test; 创建库
        drop database test;//删除库
    2 创建数据库

    3 选择默认数据库
        use databaseName
创建数据表
    1,什么是数据表
        记录+字段
    2,创建数据表的SQL
        DDL语句
            CAREATE TABLE [IF NOT EXISTS]tableName(
                字段名1 列类型[属性][索引]
                字段名2 列类型[属性][索引]
                ...
                字段名n 列类型[属性][索引]
            )[表类型][表字符集];
            中括号中的都是可选类型

    3,数据值和类型
        ·数值型
            整型
                1字节 TINYINT
                2字节 SMALLINT
                3字节 MEDIUMINT
                4字节 INT
                8字节 BIGINT
            浮点型
                4字节 float(M,D)   M 总共占据的位数 D 保留的小数位位数
                8字节 double(M,D)
                M+2字节   定点数decimal(M,D)
        ·字符串
            声音,图像,图片等二进制数据
            char(M)     255字符       固定长度
            vchar(M)    255字符       可变长度
            char固定长度,处理速度块,缺点会浪费空间,char在连接时会去掉末尾的空格
            vchar  值变化大
            text    文本数据(文章)   2e16-1字节
                MEDIUMTEXT      2E24-1
                LONGTEXT
            注意:varchar的文本不支持换行,而text类型支持换行
            blob    保存二进制,照片,压缩数据
                MEDIUMBLOB
                LONGBLOB
            enum    枚举类型   1-2字节 ----65535个成员
                  一次只能用enum中的一个值
                例:存储enum(‘男’,‘女’)
            set 集合类型   1,2,3,4,8字节-----64个成员
                    一次可以使用集合中的多个值
        ·日期型
            DATE
                YYYY-MM-DD
            TIME
                hh:mm:ss
            DATETIME
                YYYY-MM-DD hh:mm:ss
            TIMESTAMP
                YYYYMMDDhhmmss
            YEAR
                YYYY
            时间的存储形式如上所示
            存储的时间一定要注意格式
            创建表时最好不要使用这些中的时间格式(PHP时间戳 1970-1-1 0:0:0)
            用整数保存时间 (PHP中的time())
        ·NULLphpMyAdmin
    4,数据字段属性
        ·unsigned   设置无符号的类型,可以使空间增加一倍
                只能用在数值型字段
        ·zerofill   只能用在数值型字段,在数值数据前加入前导,该字段会自动加上无符号
        ·AUTO_INCREMENT
                只能是整数,数据每增加一条就值自动增加1
                字段值不允许重复
                此字段留空,null,0,都会使此字段自动增加1
                如果自己手动增长,要>=最大值
        ·NULL 和 NOT NULL
            默认是空,时间戳除外
            将来将这个表转为PHP程序的数据时,整数列有NULL  能转为0吗?字符串中有NULL 能转成0吗--------------------不一定
            建议:在创建表时每一个字段都不要插入null
        ·default
            缺省值
         例:创建一个用户表
            create table users(
                id int unsigned not nullauto_increment primary key,
                name varchar(30) not null default ‘‘,
                height double(10,2) not null default 0.00,
                age int not null default 0,
                sex char(4) not null default ‘男‘
            );
    5,创建索引
        通常是为了查询,确保数据的唯一性
        1,主键索引
            主要是确定一条特定记录的位置,
            最好为每一张表定义一个主键
            一个表只能只能指定一个主键
            主键的值不能为空
            可以有多个候选索引
            primary key 指定主键
        2,唯一索引
            都可以防止创建重复的值
            每一个表都可以有多个唯一索引
            unique
            作用,为了防止数据的重复1111111111111111111
        3,常规索引
            最重要的技术
            提升数据库的性能
            索引优化要优先考虑常规索引
            1111111111111111111
            22222222222
            3333333333333
            ............
            999999999999999999
            共几百万条数据
            缺点:占用磁盘空间
            可以提高查找速度,但会减慢数据列上的插入,删除,修改
            不要试图为每一列创建索引
            技巧: Alter table tableName add columnName 类型 属性
                分表,创建索引的为一个表,不创建索引的为一个表
                需要条件搜索的,需要条件分组的,需要条件排序的,这样的列可以使用常规索引,但不要太多,要适可而止
            可以单独使用,也可以在创建表时创建,索引是一个独立的对象
            create index indexname on tableName(字段);
            drop index  indexname on tableName
            index key 是同义词
            单列多列都可以

        4,全文索引
            fulltext类型索引,MyISAM表类型上使用,只有在varchar char text文本字符串上使用,也可以在多个数据列上使用
            把某个数据表中的某个数据列中出现的所有单词生成一个清单
    6,表类型及存储位置
        MySQL与大多数数据库不同,MySQL有一个存储引擎的概念
        MySQL可以针对不同的数据引擎需求可以选择最优的存储引擎
        引擎 数据表类型(查询 show engines)
        我们只学12个中的MyISAM和InnoDB两个
        create table () type InnoDB;
        create table () engine InnoDB;
            MyISAM是默认的
        根据不同的需求选择不同的存储引擎
        注意:在一个MySQL库中可以(创建表时)指定不同的表类型
        MyISAM
            成熟稳定,易于管理,
            OPTIMIZE TABLE 表名
            强调快速读取操作
            有一些功能不支持
        InnoDB
            恢复回滚
            支持外键
            空间占用量比MyISAM大得多
            支持MyISAM不支持的功能
            不支持全文索引
        功能        MyISAM        InnoDB
        事务处理          不支持            支持
        数据行锁定     不支持        支持
        外键约束      不支持        支持
        表空间       相对小       相对大,最大2倍
        全文索引      支持             不支持
    7,默认字符集
        对于汉字:
            GBK 2个字节
            UTF-8 3个字节
        MySQL服务器,数据库,数据表,字段都可以指定字符集,相对于其他的数据库显得灵活
        show character set//查看数据库支持的字符集
        数据库中的UTF-8是没有中间的-的,即数据库的UTF-8是utf8
        MySQL的字符集包括
            字符集,是用来定义MySQL存储的方式
            校对规则:对规则定义了比较字符串的方式
            1个字符集可以对应多个校对规则
    8,修改表
        没有改不了的地方
        Alter table tableName add columnName 类型 属性//添加字段到表末尾
        Alter table tableName add columnName 类型 属性 after 已存在的列名//加大已存在列之后
        Alter table tableName add columnName 类型 属性 first//加到第一列
        alter table tableName modify sex char(3);//修改列的属性  modify 修改类型
        alter table tableName change oldname newname varchar(30);//可以改变字段名,modify不能更改字段名
        alter table tableName rename as newtableName;//更改表名
        alter table tableName drop columnName
        drop table  

函数
    字符串函数
        1 concat(s1,...,sn);
            连接
        2 insert(des,start,len,insert);
            将des的start位置开始,len个字符串长度替换为insert
        3 lower(str) upper(str)
            将字符串转换为小写或大写
        4 Left(str,x) right(str,x)
            返回字符串的左边或右边的x个字符,若x为空,则什么也不返回
时间: 2024-10-15 05:15:55

mysql学习小结的相关文章

MogileFS学习小结

大纲: 一.关于MogileFS 二.常见分布式文件系统 三.MogileFS基本原理 四.MogileFS的实现 一.关于MogileFS 当下我们处在一个互联网飞速发展的信息社会,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化.在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集.数据存储.数据搜索.数据共享.数据传输.数据分析.数据可视化等一系列问题. 传统存储在面对海量数据存储表现出的力不从

[Z]MySQL使用小结(Linux &amp; Win)

原文:http://blog.sina.com.cn/s/blog_463648970100g0dk.html 这是从开始使用MySQL,到现在所积累的一些杂乱无章的笔记,因为不是一口气写下来,而是以追加的形式构成,大多地方还是从各种地方粘过来(很抱歉不能列出出处,地方太多,当时没记),难免有重复和累赘,所以结构逻辑不太分明,但又不想花时间改了,直接从电脑搬了出来,大家可以拿起砖头...不过有的地方还是挺关键的,所以分享出来供大家学习参考,更详细的资料可去:(MySQL doc:http://d

MySQL学习笔记-基础入门

MySQL学习笔记

我的MYSQL学习心得(八)

我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 这一篇<我的MYSQL学习心得(七)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (

我的MYSQL学习心得(一)

我的MYSQL学习心得(一) 使用MYSQL有一段时间了,由于公司使用SQLSERVER和MYSQL,而且服务器数量和数据库数量都比较多 管理起来比较吃力,在学习MYSQL期间我一直跟SQLSERVER进行对比 第一期主要是学习MYSQL的基本语法,陆续还有第二.第三.第四期,大家敬请期待o(∩_∩)o 语法的差异 我这里主要说语法的不同 1.默认约束 区别:mysql里面DEFAULT关键字后面是不用加括号的 --sqlserver CREATE TABLE emp ( id INT DEFA

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

Mysql学习实践---基本设置

此文为慕课网MySql学习笔记,地址:http://www.imooc.com/learn/122 一.在my.ini中配置默认字符集为utf8 a.客户端:[mysql]   default-character-set=utf8 b.服务端:[mysqld]   character-set-server=utf8 二.启动停止mysql服务 a.在windows环境计算机管理-服务里面找到mysql服务,右键点击启动或停止 b.使用命令,打开cmd,使用net start mysql启动服务:

Mysql 学习1

? Mysql学习 ? 一.数据库 ? 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优先: 可存储大量数据: 方便检索: 保持数据的一致性.完整性: 安全,可共享: 通过组合分析,可产生新数据. ? 1.2 数据库的发展历程 没有数据库,使用磁盘文件存储数据: 层次结构模型数据库: 网状结构模型数据库: 关系结构模型数据库:使用二维表格来存储数据: 关系-对象模型数据库: ? MySQL就是关系型数据库! ? 1.3 常见数据库 Oracl