Liujiahuan_2021_7_31_Night//
Learn From Runoob.com
概念
1.SQL 指结构化查询语言,全称是 Structured Query Language
2.SQL可以数据插入、查询、更新和删除
关系型数据库与非关系型数据库
1.关系型二维表,常见有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB
2.非关系型Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB
两者区别
关系型数据库
1、关系型数据库,是指采用了关系模型来组织数据的数据库;
2、关系型数据库的最大特点就是事务的一致性;
3、简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
关系数据库优点
1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;
4、支持SQL,可用于复杂的查询。
关系型数据库的缺点
1、为了维护一致性所付出的巨大代价就是其读写性能比较差;
2、固定的表结构;
3、高并发读写需求;
tips:并发高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求
4、海量数据的高效率读写
对于非关系型数据库
1、使用键值对存储数据; //类似python的 dict?
2、分布式;
3、一般不支持ACID特性; //ACID数据库事务正确执行四个基本要素的缩写 原子性,一致性,隔离性,持久性
4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 //嗯果然是dict
非关系型数据库的优点
1、无需经过sql层的解析,读写性能很高;
2、基于键值对,数据没有耦合性,容易扩展;
3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。
非关系型数据库的缺点
1、不提供sql支持,学习和使用成本较高;
2、无事务处理,附加功能bi和报表等支持也不好; //bi可视化分析?
SQL&MYSQL
sql是语言1mysql是数据库软件
启动&关闭mysql
1.win下
启动
cd c:/mysql/bin
mysqld --console
2.Linux下
过以下命令来检查MySQL服务器是否启动
ps -ef | grep mysqld
如果MySql已经启动,以上命令将输出mysql进程列表, 如果mysql未启动,你可以使用以下命令来启动mysql服务器:
/*
略,安装过程见实验 Linux_mysql搭建
*/
MySQL_PHP语法
MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP,在这些语言中,MySQL 在 PHP 的 web 开发中是应用最广泛。
基本语法格式
mysqli_function(value,value,...); //记住是mysqli
PHP调用mysql函数
<?php
$retval = mysqli_function(value, [value,...]);
if( !$retval )
{
die ( "相关错误信息" );
}
// 其他 MySQL 或 PHP 语句
?>
以下操作均基于PHP
MySQL链接
以下是从命令行中连接mysql服务器的简单实例:
[root@host]# mysql -u root -p
Enter password:******
在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。
以上命令执行后,登录成功输出结果如下:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2854760 to server version: 5.0.9
Type 'help;' or '\h' for help. Type '\c' to clear the buffer
退出命令:
mysql>exit
Bye
使用PHP脚本链接MySQL
PHP 提供了 mysqli_connect() 函数来连接数据库
语法
mysqli_connect(host, username, password, dbname,port, socket);//主机,用户名,密码,,
参数说明:
你可以使用 PHP 的 mysqli_close() 函数来断开与 MySQL 数据库的链接。
该函数只有一个参数为 mysqli_connect() 函数创建连接成功后返回的 MySQL 连接标识符。
语法
bool mysqli_close ( mysqli $link )
本函数关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接。
提示:通常不需要使用 mysqli_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。
实例
<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass); //conn用来接收返回值
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>
$conn用来接收mysqli_connect返回值,连接mysql数据库,会返回true 或者 false 用$conn接收后,方便判断连接是否成功之类的。可以自己定义变量接收,不一定要用conn的。
返回最近调用函数的最后一个错误描述
MySQL创建数据库(含php
语法 creat database +数据库名;
以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
[root@host]# mysql -u root -p
Enter password:****** # 登录后进入终端
mysql> create DATABASE RUNOOB;
使用 mysqladmin 创建数据库
使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。
所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库。
以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
[root@host]# mysqladmin -u root -p create RUNOOB
Enter password:******
使用PHP脚本创建数据库
PHP 使用 mysqli_query 函数来创建或者删除 MySQL 数据库。
该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。
mysqli_query(connection,query,resultmode);
感悟;mysqil_query第一个参数实际上就是mysqli_connect的返回值,第二个参数就是你要执行的命令
比如$a为 CREAT DATABASE A 或$b为‘DROP DATABASE A’
实例
<?php
<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(!$conn)//返回不为空
{
die('连接错误' .mysqil_error($conn));//返回错误信息
}
echo ’连接成功<br/>‘;
$sql= 'CREAT DATABASE RUNOOB';
$retval = mysqli_query($conn,$sql);
if(! $retval )//if false
{
die('创建数据库失败: ' . mysqli_error($conn));
}
echo "数据库 RUNOOB 创建成功\n";
mysqli_close($conn);
?>
MySQL删除数据库(含php
drop命令删除数据库
格式
drop database <库名>
使用 mysqladmin 删除数据库
[root@host]# mysqladmin -u root -p drop RUNOOB
Enter password:******
使用PHP脚本删除数据库
PHP使用 mysqli_query 函数来创建或者删除 MySQL 数据库。
该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。
语法
已在上文学过mysqli_query的用法,在此不作赘述
实例:
<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功<br />';
$sql = 'DROP DATABASE RUNOOB';
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('删除数据库失败: ' . mysqli_error($conn));
}
echo "数据库 RUNOOB 删除成功\n";
mysqli_close($conn);
?>
库 操作
在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。
///
一下暂不写PHP使用数据库方法
1.创建库
create database 数据库名;
此时数据库里还没有任何表:
2.删除库
drop database 库名;
3.查看库
show databases;
表 操作
首先进入指定库
use db_test;
1.创建表
mysql>create table 表名(field type, field type ,varchar(位置数));
2.删除表
drop table 表名;
3.查看表
show tables;//进入具体库之后
show columns from; 表 查看具体表名
4.改表名
alter table oldname rename newname;
字段 操作
先创建一个表
mysql> create table testalter_tbl
-> (
-> i INT,
-> c CHAR(1)
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i | int(11) | YES | | NULL | |
| c | char(1) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1.增加字段
alter table 表名 add field 类型;
执行以上命令后,i 字段会自动添加到数据表字段的末尾。
指定字段新增位置
可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;
FIRST 和 AFTER 关键字可用于 ADD 与 MODIFY 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。
2.删除字段
mysql>alter table 表名 drop field名;
ps!!!如果数据表只剩余一个字段则无法使用drop来删除
3.修改字段
如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
1.modify
例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
2.change
使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例:
alter table testalter_tb1 change i j bigint;
alter table testalter_tb1 change j j int;
4.关于字段默认值
1.modify 指定
ps!!!!!!当你修改字段时,你可以指定是否包含值或者是否设置默认值。
以下实例,指定字段 j 为 NOT NULL (不允许输入空值 )且默认值为100 。
mysql> ALTER TABLE testalter_tbl
-> MODIFY j BIGINT NOT NULL DEFAULT 100;
2.alter指定
可以使用 ALTER 来修改字段的默认值,尝试以下实例
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | 1000 | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
3.alter,drop删除默认值
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c | char(1) | YES | | NULL | |
| i | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Changing a Table Type:
数据相关命令
1.增加(插入)数据
以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:
insert into 表名(栏1,栏2.,,,栏n)
values
(值1,值2,,,值n);
如果数据是字符型,必须使用单引号或者双引号,如:"value"。
4.查数据
1.读取数据表所有记录
select * from 表名