创建和删除用户
-
创建用户
使用create
语句创建用户:
create user 'username'@'host' idendified by 'password';
username
表示为创建的用户名,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
语句可以对用户进行授权:
grant privileges on dbname.tablename TO 'username'@'host';
-
privileges
表示要授予用户的操作权限。
grant select, insert on mysql.test TO 'test1'@'%';
表示授权用户test1
在所有登录主机均对mysql
库的test
表拥有select
和insert
权限。
grant all on *.* TO 'test2'@'localhost';
表示授权用户test2
在本地主机数据库的所有库的所有表拥有所有权限。
回收用户权限
使用revoke
语句可以对权限进行回收。
revoke privileges on databasename.tablename from 'username'@'host';
示例:
revoke select on *.* from 'test2'@'localhost';
设置与更改用户密码
使用mysql
所提供的密码设置与更改语句,语法格式:
set password for 'username'@'host' = password('newpassword');
-
username
表示要设置或更改密码的用户名; -
host
指定该用户的登录主机; -
newpassword
表示要设置或更改的密码。
示例:
set password for 'test1'@'localhost' = password('12345');
什么是数据库
数据库是按照数据结构来组织,存储和管理数据的仓库。每个数据库都有一个或多个不同的api
用于创建,访问,管理,搜索,复制所保存的数据。
将数据存储在文件中,但是在文件中读写数据速度相对较慢。
术语
-
数据库是一些关联表的集合。
-
数据表是数据的矩阵。
-
列,一列包含了相同类型的数据。
-
行,一行是一组相关的数据。
-
冗余,存储两倍数据,冗余降低了性能,但提高了数据的安全性。
-
主键,是唯一的,一个数据表中只能包含一个主键。
-
外键,用于关联两个表。
-
复合键,将多个列作为一个索引键,一般用于复合索引。
-
索引,使用索引可以快速访问数据库中的特定信息。
-
参照完整性,参照的完整性要求关系中不允许引用不存在的实体。
一个关系型数据库由一个或数个表格组成:表头,行,列,键,值。
表头为每一列的名称,列为具有相同数据类型的数据的集合,行为每一行用来描述某条记录的具体信息,值为行的具体信息,每个值必须与该列的数据类型相同,键的值在当前列中具有唯一性。
MySQL
下载地址为: MySQL
下载
https://dev.mysql.com/downloads/mysql/
安装 MySQL
https://dev.mysql.com/downloads/repo/yum/
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 函数格式如下:
mysqli_function(value,value,...);
mysqli_connect($connect);
mysqli_query($connect,"SQL 语句");
mysqlifetcharray()
mysqli_close()
使用 PHP 脚本连接 MySQL
mysqli_connect()
函数来连接数据库
语法:
mysqli_connect(host,username,password,dbname,port,socket);
参数说明:
-
host
为主机或ip
地址; -
username
为mysql
用户名; -
password
为mysql
密码; -
dbname
为默认使用的数据库; -
port
尝试连接到mysql
服务器的端口号;
语法:
bool mysqli_close ( mysqli $link )
连接mysql
服务器:
<?php
$dbhost = 'localhost'; // mysql 服务器主机地址
$dbuser = 'root'; // mysql 用户名
$dbpass = '123456'; // mysql 用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>
mysql
创建数据库
使用create
命令创建数据库,语法:
create database 数据库名;
使用 php 脚本创建数据库
语法:mysqli_query(connection,query,resultmode);
-
connection
为要使用的mysql
连接; -
query
为查询字符串; -
resultmode
一个常量,值MYSQLI_USE_RESULT
和MYSQLISTORERESULT
。
使用 PHP 来创建一个数据库
代码:
<?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 = 'create database web';
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
die('创建数据库失败: ' . mysqli_error($conn));
}
echo "数据库 web 创建成功\n";
mysqli_close($conn);
?>
drop 命令删除数据库
drop
命令格式:
drop database <数据库名>;
使用 php 脚本删除数据库
语法
mysqli_query(connection,query,resultmode);
使用PHP mysqli_query
函数来删除数据库:
删除数据库:
<?php
$dbhost = 'localhost:3306'; // mysql 服务器主机地址
$dbuser = 'root'; // mysql 用户名
$dbpass = '123456'; // mysql 用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功<br />';
$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
来获取一个数据库
语法:
mysqli_select_db(connection,dbname);
示例:
mysqli_select_db
函数来选取一个数据库:
选择数据库
<?php
$dbhost = 'localhost:3306'; // mysql 服务器主机地址
$dbuser = 'root'; // mysql 用户名
$dbpass = '123456'; // mysql 用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功';
mysqliselectdb($conn, 'web' );
mysqli_close($conn);
?>
MySQL 数据类型
mysql
支持多种类型,分三类:
-
数值;
-
日期/时间;
-
字符串类型。
MySQL 5.0 以上的版本
1、一个汉字占多少长度与编码有关:
UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节
2、varchar(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 '连接成功<br />';
$sql = "create table table_tbl( ".
"tableid int not null autoincrement, ".
"table_title varchar(100) not null, ".
"table_author varchar(40) not null, ".
"submission_date DATE, ".
"primary key ( runoob_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
mysqliselectdb( $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 '连接成功<br />';
$sql = "drop table table_tb1";
mysqliselectdb( $conn, 'web' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('数据表删除失败: ' . mysqli_error($conn));
}
echo "数据表删除成功\n";
mysqli_close($conn);
?>
MySQL 插入数据
mysql
数据表插入数据通用insert into
语法:
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 '连接成功<br />';
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
$table_title = '学习';
$table_author = 'web';
$submission_date = '2018-03-06';
$sql = "insert into table_tbl ".
"(tabletitle,tableauthor, submission_date) ".
"values ".
"('$tabletitle','$tableauthor','$submission_date')";
mysqliselectdb( $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)......;