php软件开发--mysql数据库进阶

 2023-09-17 阅读 22 评论 0

摘要:数据库介绍: 数据库:存储和管理“大量数据”软件 主流数据库:关系数据库:MS SQL Server, Oracle,DB2,Informix, Sybase MySQL数据库概览:数据库系统(1:n)数据库(1:nÿ

数据库介绍:

数据库:存储和管理“大量数据”软件
主流数据库:关系数据库:MS SQL Server, Oracle,DB2,Informix, Sybase
MySQL数据库概览:数据库系统(1:n)数据库(1:n)表(1:n)数据行(1:n)字段DBMS、DB(database)、table、row、record、column、field
关系数据库:基于模型设计(E-R)、二维表(有行有列)

访问数据库服务器:

开启/关闭数据库服务:通过系统服务:系统服务通过命令行方式:net start/stop mysql
客户端连接数据库服务器:命令行连接数据库:mysql -uroot -pset names gbk;quit、exit、\q连接数据库软件:Navicat、phpmyadmin、sqlyog

数据库操作:

查看所有数据库:show database;
创建新数据库:create database dbname [charset 字符集] [collate 校对规则]show charsetshow collation
查看数据库创建信息:show create database 数据库名;
删除现有数据库:drop database 数据库名;
修改现有数据库:alert database 数据库名 charset 字符集 collate 校对规则。
选择(使用)某个数据库:use dbname;

数据库表操作:

【数据表才是存储(装载)数据的具体“容器”。php创建数据库、】
创建数据表初步:create table 数据表名 (字段1,字段2,...)[charset=字符集] [engine=表类型];字符集包括:utf,gbk,gb2312,big5等等表类型包括:InnoDB,  MyIsam,BDB,等
查看所有数据表: show tables;
查看数据表结构: desc 表名;
查看数据表的创建语句: show create table 表名;
删除数据表: drop table 表名;
修改数据表添加字段: alter table 表名 add 字段名 字段类型 [字段属性...] [after 某字段名 或first];修改字段:alter table 表名 change 旧字段名 新字段名 字段类型  [字段属性...];alter table 表名 modify 要修改的字段名 字段类型 [字段属性...];删除字段: alter table 表名 drop 要删除的字段名;修改表名: alter table 表名 rename 新的表名;修改字符集:alter table 表名 charset=新的字符集;
【CRUD 操作:Create(创建), Retrieve(获取), Update(更新), Delete(删除)】
插入数据: insert into 表名 (字段名1, 字段名2, ... ) values (数据1,数据2,... );
查询数据: select 字段名1,字段名2, ... from 表名 [ where 条件];
删除数据: delete from  表名  [where 条件];
修改数据: update 表名 set 字段名1=新值1,字段名2=新值2,... [where条件];

mysql数据类型:

数据类型(列类型):数值型:整数型、小数型(浮点、定点)日期时间型:字符串型:sql中,数字型数据不需要单引号,而时间型和字符型数据需要用单引号。
整型:tinyint、smallint、mediumint、int、bigintunsigned
小数型浮点小数:float、double定点小数:decimal(M,D)
日期时间型:date、time、datetime、timestamp、year、now()、
字符串型定长字符char和变长字符varchar:char、varchar、text、enum、setchar(n)、varchar(n)char读取速度快、varchar根据数据类型计算字节。mysql数据库有什么用。text长文本类型:字段名称   textenum和set类型:单选:enum(‘选项值1’, ‘选项值2’, ‘选项值3’, ....):1234多选:set(‘选项值1’, ‘选项值2’, ‘选项值3’, ....):1248

列属性:

create table 表名 (列名 列类型 [列属性...] );null,not nullprimary keyauto_incrementunique keycomment

实体与实体关系:

基本概念:实体:现实中具体存在的可指称的“某物”。实体间关系:不同实体数据之间的关系,很多时候就是指表和表之间的关系【一对一,一对多,多对多关系】
一对一关系: 1:1
一对多关系:  1:n
多对多关系:n:m1:nm:1

高级查询:

高级查询语法概述:select 子句 [from 子句] [where 子句] [group by子句] [having子句] [order by子句] [limit 子句]
查询结果数据及select选项查询“固定数据”:select 3, now();select中可以进行计算:select 3+4*5, 6 + round(6.7) ;查询出的数据字段可以使用别名:select user_name as un, user_pass as pwd from users;使用distinct消除查询结果重复行:select disctinct 字段1, 字段2, ... from 表名;
where子句:select .... from 表名 where 查询条件;>=、<=、...mysql运算符:算术运算符: + - * / %比较运算符: = <> != > >= < <=逻辑运算符: &&(and) ||(or) !(not)其他特殊运算符:字段 like ’%keyword%‘ | '_keyword_' | ''xxx字段  between  值1  and  值2xxx字段 in (值1, 值2, ......)where content is  null (is not null);group by子句:group by 字段1,字段2, ....;count、max、min、avg、sumhaving子句: having  筛选条件order by子句: order by 字段1 [asc或desc],字段2 [asc或desc] ...limit 子句: limit 起始行号,行数

高级插入:

同时插入多行记录:insert into 表名(字段1,字段2,...) values (值1,值2,...),(值1,值2,...),...;
插入查询的结果数据:insert into 表名(字段1,字段2,...) select (xx1, xx2, ...)  ...;
set语法插入数据:insert into 表名 set 字段1=值1,字段2=值2,...;
蠕虫复制insert ignore into 表名 (字段.... ) values (值.....)insert replace  into   表名 (字段.... ) values (值.....)insert insert into 表名 (字段...) values (值...) on duplicate key update XX字段=新的值
插入时主键冲突的解决办法

高级删除:

按指定顺序删除指定数量的数据delete from 表名 where ... [order by 字段名, ...] [limit  数量n];
truncate清空:truncate 表名;

高级更新:

update 表名 set 字段名1=字段值1, ... where ...
[order by 字段名, ...] [limit 数量n];

联合查询:

联合查询概念:指将2个或2个以上的字段数量相同的查询结果,“纵向叠加”select  id,  f1,  f2  from  join1unionselect  id2,  c1,  c2  from  join2;
联合查询语法:连接(join)查询是将两个查询的结果以“横向对接”的方式合并起来的结果。php入门开发实战?select查询1:union  [all或distinct]select查询2union  [all或distinct]select查询3......[order by 字段  [asc或desc] ][limit  起始行号,数量] ;

连接查询:

连接查询概述:连接(join)查询是将两个查询的结果以“横向对接”的方式合并起来的结果。连接查询,是将两个查询(或表)的每一行,以“两两横向对接”的方式,所得到的所有行的结果。select ... from 表1 [连接方式] join 表2 [on连接条件] where ... ;
交叉连接(cross join):from  表1  [cross]  join  表2
内连接(inner join):from  表1  [inner]  join  表2  on  连接条件
外连接:左外连接(left join):from 表1 left [outer] join 表2 on 连接条件右外连接(right join):from 表1 right [outer] join 表2 on 连接条件
自连接:from 表1 as a [连接形式] join 表1 as b on a.xx字段1=b.xx字段名

子查询:

子查询的概念:子查询就是指一个“正常查询语句”中的某个部分select * from 表名 where 字段 >= (一个子查询语句);标量子查询: 子查询结果:是“单个值”(一行一列)的查询。
列子查询:子查询结果:列子查询查出的结果为“一列数据”
行子查询:子查询结果:子查询查出的结果通常是一行
表子查询:子查询查出的结果是“多行多列”的时候,就是表子查询。有关子查询的特定关键字in关键字:in关键字在子查询中主要用在列子查询中代替人为手工罗列出来的多个“字面值”数据。any关键字:any关键字用在比较操作操符的后面,表示查询结果的多个数据中的任一个满足该比较操作符就算满足。all关键字:all关键字用在比较操作操符的后面,表示查询结果的多个数据中的所有都满足该比较操作符才算满足。exists子查询:where  exists (任何子查询)

数据管理:

数据备份:备份整个数据库:mysqldump.exe  -h主机地址  -u用户名 -p密码   数据库名 > 备份文件名(含路径)备份单个表:mysqldump.exe  -h主机地址  -u用户名 -p密码   数据库名 表名 > 备份文件名(含路径)
数据还原(数据恢复)mysql.exe  -h主机地址  -u用户名 -p密码   目标数据库名  <  想要还原的备份文件名(含路径)

用户管理:

查看用户:use  mysql;select  *  from  user;
创建用户:create user ‘用户名’[@’允许登录的地址’] identified by ‘密码’;
删除用户:drop user 用户[@’允许登录的地址’];
修改/设置用户密码:set password for 用户[@’允许登录的地址’] = password(‘密码’);
授予用户权限:grant op1,op2,... on  *.*或数据库名.*或 数据库名.表名 to 用户[@’允许登录的地址’];
取消用户授权:revoke op1,op2,... on *.*或数据库名.* 或数据库名.表名 from 用户[@’允许的地址’];

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/72211.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息