初始化完成后mysql 登录数据库,就可以启动数据库了。有两种方法可以启动数据库。
使用服务器管理界面启动;
从 mysql 命令开始。
使用 mysql 命令启动数据库:
按+r组合键打开窗口,进入命令行;
使用cd命令进入mysql目录;
输入 bin 启动 mysql 服务。
启动数据库
使用 binmysql -u root -p 命令进入mysql运行环境。
服务镜像,打开数据库:
创建数据库
让我们创建一个数据库,语句。
语法格式如下:
create database [db_name];
创建一个名为 web 的数据库:
create database web;
数据库创建完成后,会在mysql的data目录下自动生成一个名为web的目录,数据库的数据会存放在这个目录下。
mysql中可以支持多个数据库,所以我们可以创建多个数据库。
查看数据库
数据库创建完成后,使用show语句查看mysql当前有哪些数据库。
show databases;
删除数据库
使用drop语句删除数据库,语法如下:
drop database db_name;
删除创建的web数据库,命令如下:
drop database web
删除数据库是不可逆的操作。
mysql数据表管理
使用table语句创建数据表,语法如下。
user 数据库名;
create table 表名 (字段名 类型(长度),字段名 类型(长度));
创建表语句:
明确数据表的结构;
名字字段的名称;
类型;
长度等
查看数据表
查看表点:
查看数据库中包含哪些表
查看一个表的具体结构
使用的语句是显示语句和语句。
show tables
describe 库名.表名;
使用语句可以查看表的每个字段的名称、类型、长度、是否为空、是否有主键、默认值、备注等信息。
修改数据表
可以修改表结构,如表名、字段名、字段类型等。可以使用alter语句来实现修改操作。
修改表名
修改表名的语句:
alter table 旧表名 rename 新表名;
修改数据表以更改为 .
alter table student rename student1
修改字段名称
修改字段名的语法如下:
alter table 表名 change 旧属性名 新属性名 新数据类型;
alter table student1 change name s_anme varchar(50);
修改字段类型
修改字段类型的语法格式:
alter table 表名 modify 属性名 数据类型;
alter table student1 modify name varchar(32);
添加字段
添加字段的语法如下:
alter table 表名 add 属性名 数据类型;
alter table student1 add sex char(1);
删除字段
删除字段语句:
alter table 表名 drop 属性名;
例子:
alter table student1 drop sex;
删除数据表
使用 drop 语句删除数据库中的表。
use 数据库名;
drop 表名;
或者
drop table 数据库名.表名;
要删除数据中的表:
use test;
drop table student;
或者
drop table test.student;
mysql用户管理
MySQL 提供了完整的数据库用户和权限管理系统。
创建和删除用户
创建用户
使用以下语句创建用户:
create user 'username'@'host' idendified by 'password';
表示为创建的用户名,host指定用户可以登录的主机。
create user 'test1'@'localhost' idendified by '1234';
create user 'test3'@'122.xxx' idendified by '1234';
用户删除
使用 drop 语句删除用户,语法格式:
drop user 'username'@'host';
一个例子如下:
drop user 'test1'@'localhost';
授予和撤销用户权限授予用户权限
授权语句可以授权用户:
grant privileges on dbname.tablename TO 'username'@'host';
表示要授予用户的操作权限。
grant select, insert on mysql.test TO 'test1'@'%';
表示授权用户test1对所有登录主机上的mysql库的test表具有和权限。
grant all on *.* TO 'test2'@'localhost';
表示授权用户test2对本地主机数据库中所有库中的所有表拥有所有权限。
收回用户权限
可以使用语句回收权限。
revoke privileges on databasename.tablename from 'username'@'host';
例子:
revoke select on *.* from 'test2'@'localhost';
设置和更改用户密码
使用mysql提供的密码设置和修改语句,语法格式:
set password for 'username'@'host' = password('newpassword');
表示要设置或更改密码的用户名;
host 指定用户的登录主机;
指示要设置或更改的密码。
例子:
set password for 'test1'@'localhost' = password('12345');
什么是数据库
数据库是按照数据结构组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API,用于创建、访问、管理、搜索、复制它所拥有的数据。
数据存储在文件中,但是在文件中读写数据比较慢。
术语
数据库是相关表的集合。
数据表是数据的矩阵。
,一列包含相同类型的数据。
行,一行是一组相关的数据。
冗余,存储两倍的数据,冗余降低了性能但提高了数据安全性。
主键是唯一的,一个数据表只能包含一个主键。
外键,用于关联两个表。
复合键,使用多列作为索引键,一般用于复合索引。
索引,使用索引可以快速访问数据库中的特定信息。
参照完整性,参照完整性要求在关系中不允许引用不存在的实体。
关系数据库由一个或多个表组成:标题、行、列、键和值。
表头是每一列的名称,列是相同数据类型的数据集合,行用来描述一条记录的具体信息,值是行的具体信息,每个值必须是与列的数据类型相同,键的值在当前列内是唯一的。
MySQL下载地址为:MySQL
安装 MySQL
Mysql安装成功后,默认root用户密码为空,可以使用如下命令创建root用户密码:
[root@host]# mysqladmin -u root password "new_password";
登录到Mysql
命令行:mysql -h 主机名 -u 用户名 -p
运行mysql服务:
mysql -h localhost -u root -p
MySQL PHP 语法
PHP函数格式如下:
mysqli_function(value,value,...);mysqli_connect($connect);
mysqli_query($connect,"SQL 语句");
mysqli_fetch_array()
mysqli_close()
使用 PHP 脚本连接到 MySQL
() 函数连接数据库
语法:
mysqli_connect(host,username,password,dbname,port,socket);
参数说明:
host 是主机或 IP 地址;
是mysql用户名;
mysql的密码;
是默认使用的数据库;
port 尝试连接mysql服务器的端口号;
语法:
bool mysqli_close ( mysqli $link )
连接到mysql服务器:
mysql创建数据库
使用命令创建数据库,语法:
create database 数据库名;
使用 php 脚本创建数据库
语法:(,查询,);
使用 mysql 连接;
query 是查询字符串;
一个常数,值总和。
使用 PHP 创建数据库
代码:
<?php
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接错误: ' . mysqli_error($conn));
}
echo '连接成功
';
$sql = 'create database web';
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
die('创建数据库失败: ' . mysqli_error($conn));
}
echo "数据库 web 创建成功n";
mysqli_close($conn);
?>
drop 命令删除数据库
删除命令格式:
drop database ;
使用 php 脚本删除数据库
语法
mysqli_query(connection,query,resultmode);
使用 PHP 函数删除数据库:
删除数据库:
<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功
';
$sql = 'DROP DATABASE web';
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('删除数据库失败: ' . mysqli_error($conn));
}
echo "数据库 web 删除成功n";
mysqli_close($conn);
?>
使用 PHP 脚本选择 MySQL 数据库
使用函数获取数据库
语法:
mysqli_select_db(connection,dbname);
例子:
选择数据库的函数:
选择数据库
MySQL 数据类型
MySQL支持多种类型,分为三类:
价值;
约会时间;
字符串类型。
MySQL 5.0 及以上
1、汉字的长度与编码有关:
UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节
2、(n)表示n个字符,不分汉字和英文,Mysql可以存储n个字符,只是实际字节长度不同
3、MySQL检查长度,可以用SQL语言查看
MySQL创建数据表
表名
表字段名
定义每个表字段
语法:
用于创建 mysql 数据表的 SQL 语法。
CREATE TABLE table_name (column_name column_type);
在数据库中创建数据表:
create table if not exists `table_tb` (
`table_id` int unsigned auto_increment,
`table_title` varchar(100) not null,
`table_author` varchar(40) not null,
`table_date` date,
primary key (`table_id`)
)engine=InnoDB default charset = utf8;
注意:在auto_increment定义列为自增的属性,一般用于主键,数值会自动加1,。engine设置存储引擎,charset设置编码。
创建数据表
代码:
<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功
';
$sql = "create table table_tbl( ".
"table_id int not null auto_increment, ".
"table_title varchar(100) not null, ".
"table_author varchar(40) not null, ".
"submission_date DATE, ".
"primary key ( runoob_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('数据表创建失败: ' . mysqli_error($conn));
}
echo "数据表创建成功n";
mysqli_close($conn);
?>
MySQL字段属性应尽可能设置为NOT NULL
首先,考虑空值“”和null的概念:
空值不占空间
在mysql中,null其实是占空间的
MySQL删除数据表
语法,删除mysql数据表的语法:
drop table table_name;
使用 PHP 脚本删除数据表
语法:
mysqli_query(connection,query,resultmode);
使用 PHP 脚本删除数据表:
<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功
';
$sql = "drop table table_tb1";
mysqli_select_db( $conn, 'web' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('数据表删除失败: ' . mysqli_error($conn));
}
echo "数据表删除成功n";
mysqli_close($conn);
?>
MySQL插入数据
MySQL数据表插入数据一般成语法:
insert into table_name(field1,field2,...fieldN)
values
(value1,value2,...valueN);
添加数据
代码:
<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功
';
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
$table_title = '学习';
$table_author = 'web';
$submission_date = '2018-03-06';
$sql = "insert into table_tbl ".
"(table_title,table_author, submission_date) ".
"values ".
"('$table_title','$table_author','$submission_date')";
mysqli_select_db( $conn, 'web' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('无法插入数据: ' . mysqli_error($conn));
}
echo "数据插入成功n";
mysqli_close($conn);
?>
INSERT 插入多条数据
INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
SQL 基本语法
学习sql语句和mysql基本数据类型,学习掌握sql语句、查询语句以及数据插入、修改、删除的各种具体查询语句。
了解数据库事务的概念、特性和用法。
sql目录还组织了一张思维导图:
SQL 语句简介结构化查询语言简称SQL。结构化查询语言是一种数据库查询和编程语言,用于访问数据和查询、更新和管理关系数据库系统。
SQL 语句是一种对数据库进行操作的语言。
sql分为三种:
DDL语句,数据定义语句,定义不同的数据库、表、列、索引等数据库对象。
DML 语句,数据操作语句,用于添加、删除、更新和查询数据库记录,以及检查数据的完整性。
DCL语句,数据控制语句,定义数据库、表、字段、用户的访问权限和安全级别。
mysql基本数据类型
MySQL 提供了多种数据类型,包括数字类型、字符串类型、日期和时间类型。
数字类型
字符串类型
日期和时间类型
数字类型
mysql的数值类型:
整数类型
浮点型
定点型
整数类型:
小整数
整数
整数
大整数
浮点型:
漂浮
定点类型:
整数类型的划分是基于存储空间的大小和表示范围的大小。
浮点型是一种用来表示实数的方法。根据位数和精度,浮点类型分为单精度浮点数(8 位精度)和双精度浮点数(16 位精度)。
Types 提供了几种字符串类型:
字符
斑点
文本
枚举
放
字符与
char 定义一个固定长度的字符串
定义可变长度字符串
char 的长度固定为建表时声明的长度,取值范围为 0~255。保存 char 值时,右边补空格,达到指定长度。
当一个 char 值被检索到时,尾部的空格会被移除,所以在存储的时候,字符串的右边应该没有空格。如果字符串右侧有空格,则查询完成后将其删除。
长度可指定为0~6535,该值在保存时只保存需要的字符串,另外增加一个字节来记录长度。
和
并用于存储二进制字符串。没有字符集,将根据列值字节对值进行排序和比较。
文本和 blob
text 和 blob 是存储为对象类型的文本和二进制文件。
text 被认为足够大,blob 被认为足够大,但是 text 和 blob 与 sum 不同:
保存或检索 blob 和文本的值时,不会删除尾随空格。
比较时,文本会用空格扩展以适应被比较的对象。
对于 blob 和文本索引,必须指定索引前缀的长度。
blob 和 text 不能有默认值。
国际象棋文本和 blob 对象的最大字符串长度由它们的类型决定。
文字分为四种,文字,和。
博客分为,blob,和四种类型。
枚举
enum 表示枚举类型,创建表时需要通过枚举明确指定其取值范围。枚举不区分大小写。枚举只允许从一组值中选择一个值,而不是一次选择多个值。
放
集合是一个集合对象,可以包含 0 到 64 个成员,它占用的存储空间大小随集合中成员的数量而变化。
日期和事件类型
有多种日期和时间类型可供选择:
年
时间
日期
日期格式,年份,YYYY;时间,HH:MM:SS;日期, YYYY-MM-DD;, YYYY-MM-DD HH:MM:SS, ,YYYY-MM-DD HH:MM:SS。
数据插入
insert into 表名 values (值1,值2,...);
insert into 表名 (列1,列2,...) values (值1,值2);
在mysql中,一条语句可以一次插入多条记录。语法格式如下。
insert into 表名 (列1,列2,...) values (值1,值2,...), (值1,值2,...),...;
数据修改通过命令修改:
update 表名 set 列名 = 新值 whert 列名 = 某值;
update 表1,表2,...set 表1.列1,表2.列2,...where 条件;
数据删除
可以使用以下命令删除:
delete from 表名 where 列名=值;
该命令可以一次从多个表中删除数据:
delete 表1,表2,... from 表1,表2,...where 条件;
数据查询
最基本的语句的语法:
select 字段 from 表名 where 条件;
条件查询
条件查询语句:
select 字段 from 表名 where 条件;
联合查询
联合运算符
union 运算符用于组合两个或多个语句的结果集。
代码:
select 条件 from 表1
union
select 条件 from 表2;
union 和 union all 的主要区别
union all 用于将结果集直接合并在一起。
union 用于在 union all 一次之后进行解构,以去除重复的结果记录。
不要重复查询
语法格式如下:
select distinct 字段 from 表名;
模糊查询
语法格式:
select 字段 from 表名 where 字段 like 值;
使用%用于匹配0个或多个字符,可以匹配任意类型和长度的字符mysql 登录数据库,长度没有限制。
“_”的使用用于匹配任何单个字符,并且通常用于限制表达式的字符长度。
排序查询
使用 order by 关键字进行排序:
select 字段 from 表名 where 条件 order by field1 desc/asc, field2 desc/asc, ...;
排序方式:desc表示降序,asc表示升序。默认值为升序。
order by 后面可以跟多个不同的排序字段。
限制查询
使用limit关键字限制查询,格式:
select 字段 limit 起始偏移量,行数;
聚合
汇总报表格式:
select 字段 op_name from 表名 where 条件 group by filed1, filed2, ... with rollup having 条件;
表示要执行的聚合操作,即聚合函数。
聚合函数:
求和函数
计数功能记录数
max 函数最大值
min 函数最小值
表示分类聚合的字段
with 表示是否对分类聚合后的结果进行聚合
表示分类结果的条件过滤
连接内连接
内连接查询是指查询的所有结果在连接表中都可以有对应的记录。默认是inner join,可以不写join关键字,也可以写inner join。
join分为三类:
内连接:获取两个表中匹配字段的记录。
左连接:获取左表中的所有记录,即使右表中没有匹配的记录。
右连接:用于获取右表中的所有记录,即使左表中没有对应的匹配记录。
左连接和右连接
左连接是指以左侧表中的数据为基准,匹配右侧表中的数据。
如果匹配到对应的数据,就会显示匹配结果
如果对应的数据不匹配,则显示为null
左连接关键字:左连接。右连接的关键字:右连接。
右连接则相反。
事务
事务概述:事务一般是指要完成或完成的事情。在计算机术语中,访问并可能更新数据库中的各种数据项的程序执行单元。
事务由在事务开始和事务结束之间执行的集合操作组成。
事务是由 SQL 语句组成的一组业务逻辑。只有事务中的所有SQL语句都执行成功,才能认为整个事务成功,否则为失败。
交易的四大特征
原子性
一致性
隔离
持久性
事务提交
默认情况下,自动提交 SQL 语句。每条 SQL 语句执行完毕后,会自动提交事务。如果要统一提交事务,需要先关闭MySQL的自动提交功能。
检查数据库是否开启了自动提交:
show variables like 'autocommit';
使用以下命令关闭自动提交:
set autocommit=0;
手动提交事务的命令:
commit
事务回滚
事务中成功执行语句的结果应该回滚到未执行状态,称为事务回滚。
事务回滚:
rollback
事务隔离级别
事务并发读取问题
脏读:从另一个事务中读取未提交的数据;
不可重复读:两次读不一致;
幻读( read):读取已经被另一个事务提交的数据。
开始交易
事务以 begin 开始:
格式:
begin transaction |@
语法如下:
@用户自定义变量,该变量必须声明为char,,nchar或数据类型。
begin 语句的执行。
提交事务
表示提交一个事务,即提交一个事务的所有操作。
撤消事务
表示事务被撤销,即事务运行过程中出现某种故障,无法继续执行事务。系统撤消事务中对数据库的所有已完成操作,并回滚到事务开始时的状态。
语法格式:
rollback[transaction]
MySQL 正则表达式
^ 匹配输入字符串的开头。
$ 匹配输入字符串的结尾。
[…] 字符集合。匹配任何一个包含的字符。
[^…] 负值字符的集合。匹配任何未包含的字符。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
{n}n 是一个非负整数。匹配一定数量的 n 次。
{n,m}m 和 n 是非负整数,其中 n
超过
=
大于或等于
文章来源:https://www.csdn.net/gather_2e/NtDacgwsMzgzNTItYmxvZwO0O0OO0O0O.html