一,基于数据库的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为空,则什么也不返回
详细解决方案
mysql学习总结
热度:81 发布时间:2016-05-05 17:07:35.0
相关解决方案
- mysql 简单化 or能否实现
- 请问registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister
- MySQL 5.5 Command Line Client 窗口1输密码就退出
- 请问上Linux平台上怎么搭建JDK \TOMCAT\MYSQL
- 在LINUX上配置 MySQL 开机自动 启动
- mysql 转 orocle java ssh项目一条 sql 句不通!
- 急求帮忙!mysql 【 Column count doesn't match value count 】,该怎么解决
- jsp中的注册登录系统(mysql)
- 上了个 MySQL 5.5.25 但是安装时出错了
- 求jsp博客源代码mvc+mysql,该如何解决
- java mysql 中文乱码有关问题
- 请教各位,使用PreparedStatement mysql 数据库 不回滚,盼望解答。多谢。 具体如上
- mysql Statement parameter 一 not set
- java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306,该怎么处理
- MyBatis 读取 Mysql Blob类型的SQL如何写呢
- JDBC MYSQL 驱动加载失败 JSP DAO ECLIPSE,该怎么解决
- Only a type can be imported. com.mysql.jdbc.Driver resolves to a package解决方案
- tomcat 中抛异com.mysql.jdbc.exceptions.MySQLTransactionRollbackException,该如何处理
- struts+iBatis+mysql,该如何解决
- mysql 有外键的插入解决方案
- JSP 更新 MySQL 语句时遇到异常了= =
- mysql,该如何处理
- +++++ mysql 插入成功,查询不到记录?
- MyBatis3.1.1 Insert 回到主键 long类型 MYSQL 数据库
- mysql:假若一个表中,有两个属性name和id,删除同名的保留id小的,问这样写有误吗
- java mysql where限制有关问题
- mysql 数据库,如果信息存在调出,如果不存在转到另一个jsp中解决思路
- mysql jdbc的配置解决方案
- java.lang.ClassNotFoundException:com.mysql.jdbc.Driver,该如何解决
- 救助。Mysql 的条件删除语句如何写,就是删除部门的时候,如果部门下有用户,就不能删除