mysql学习小结

来源:互联网 发布:jquery清空表单数据 编辑:程序博客网 时间:2024/04/18 12:01
一,基于数据库的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为空,则什么也不返回
0 0
原创粉丝点击