MySQL
#查看SHOW DATABASES;
#查看表
USE
blog;SHOW TABLES;
#查看表中的列SHOW COLUMNS
FROM
auth_user;
或:DESCRIBE auth_user;
describe 表名 是 show columns from 表名 的一种快捷方式。
创建数据库
mysql
>
CREATE
DATABASE
库名;
mysql
>
USE
库名;mysql
>
CREATE
TABLE
表名 (字段名
VARCHAR
(
20
), 字段名
CHAR
(
1
));
例:
#创建表
use demo;
create table pet(
name varchar(20), #名字
owner varchar(20), #主人
species varchar(20), #种类
sex char(1), #性别
birth date, #出生日期
death date #死亡日期
)
为了验证你的表是按你期望的方式创建,使用一个DESCRIBE语句:
删除数据库:
mysql
>
DROP
DATABASE
库名;
删除数据表:
mysql
>
DROP
TABLE
表名;
将表中记录清空:
mysql
>
DELETE
FROM
表名;
创建表(复杂形式):
#
创建customer表:
create
table
customers( id
int
not
null
auto_increment, name
char
(
20
)
not
null
, address
char
(
50
)
null
, city
char
(
50
)
null
, age
int
not
null
, love
char
(
50
)
not
null
default
'No habbit'
,
primary
key
(id))engine
=
InnoDB;
#SELECT last_insert_id();这个函数可以获得返回最后一个auto_increment值.
#默认值
:
default 'No habbit',
#引擎类型,多为engine
=
InnoDB,如果省略了engine=语句,则使用默认的引擎(MyISAM)
更改表结构:
#增加一列
alter
table
pet
add
des
char
(
100
)
null
;#删除
alter
table
pet
drop
column
des;
重命名表:
#重命名表rename
table
pet
to
animals;
添加id字段
则可操作如下:
#添加id字段
alter
table
pet
add
id
int
not
null
primary
key
auto_increment first;
新安装默认密码为空
mysql -u root 即可进入,不要mysql -u root -p 进不去的
大于5.7的版本默认有随机密码,执行
cat /var/log/mysqld.log | grep password | grep 'root@localhost' | awk -F 'root@localhost: ' '{print $2}'
查看密码
1.用root 进入mysql后
mysql>set password =password('你的密码');
mysql>flush privileges;
2.使用GRANT语句
mysql>grant all on *.* to 'root'@'localhost' IDENTIFIED BY '你的密码'with grant option ;
mysql>flush privileges;
3.进入mysql库修改user表
mysql>use mysql;
mysql>update user set password=password('你的密码') where user='root';
mysql>flush privileges;
设置数据库密码
$ mysql -u root -p> # (输入密码)> create user '用户名'@'localhost' identified by '密码';> grant all privileges on 库名.* to '用户名'@'localhost';> flush privileges;> exit;
二、修改mysql数据库密码
方法一:
使用phpmyadmin,直接修改Mysql库的user 表。或者使用Navicat for Mysql 直接修改连接属性。
方法二:使用mysqladmin
cd到mysql的bin文件夹,然后执行如下D:\Mysql\bin
>
mysqladmin
-
u root
-
p password newPwd#Enter password:(在此输入原密码)#newPwd指的是新密码
然后打开mysql 直接输入新密码即可
格式:mysqladmin -u用户名 -p旧密码 password 新密码。
忘记密码:
1.用root或者运行mysqld的用户登录系统;
2.利用kill命令结束掉mysqld的进程;
3.使用--skip-grant-tables参数启动MySQL Server
shell>mysqld_safe --skip-grant-tables &
UPDATE user SET password=PASSWORD("new password") WHERE user='root';
4.为root@localhost设置新密码
shell>mysqladmin -u root flush-privileges password "newpassword"
5.重启MySQL Server
【据说可以用直接修改user表文件的方法:
关闭MySQL,Windows下打开Mysql\data\mysql,有三个文件user.frm,user.MYD,user.MYI找个知道密码的MySQL,替换相应的这三个文件,如果user表结构没改过,一般也没人去改,替换user.MYD就可以了。
也可以直接编辑user.MYD,找个十六进制编辑器,UltraEdit就有这个功能。关闭MySQL,打开user.MYD。将用户名root后面的八个字符改为565491d704013245,新密码就是123456。或者将它们对应的十六进制数字,(左边那里,一个字符对应两个数字),改为 00 02 02 02 02 02 02 02,这就是空密码,在编辑器右边看到的都是星号*,看起来很象小数点。重开MySQL,输入root和你的新密码。】
看提示,PHP执行时看错误,是用mysql还是mysqli
语法
mysql_connect(servername,username,password);
参数 | 描述 |
servername | 可选。规定要连接的服务器。默认是 "localhost:3306"。 |
username | 可选。规定登录所使用的用户名。默认值是拥有服务器进程的用户的名称。 |
password | 可选。规定登录所用的密码。默认是 ""。 |
语法
CREATE DATABASE database_name
为了让 PHP 执行上面的语句,我们必须使用 mysql_query() 函数。此函数用于向 MySQL 连接发送查询或命令。
连接:
例子:
<?php
//在一个变量中 ($con) 存放了在脚本中供稍后使用的连接。如果连接失败,将执行 "die" 部分:
$con = mysql_connect("localhost","peter","abc123");if (!$con) { die('Could not connect: ' . mysql_error()); }
创建:
// Create database
//创建了一个名为 "my_db" 的数据库:
if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; }else { echo "Error creating database: " . mysql_error(); }
// Create table in my_db database
//创建一个名为 "Persons" 的表,此表有三列。列名是 "FirstName", "LastName" 以及 "Age":
//重要事项:
在创建表之前,必须首先选择数据库。通过 mysql_select_db() 函数选取数据库。
//注释:
当您创建 varchar 类型的数据库字段时,必须规定该字段的最大长度,例如:varchar(15)。
mysql_select_db("my_db", $con);$sql = "CREATE TABLE Persons (FirstName varchar(15),LastName varchar(15),Age int)";mysql_query($sql,$con);mysql_close($con);
//提前关闭连接,请使用 mysql_close() 函数,不加此句则脚本结束后关闭。
?>
MySQL 数据类型
下面的可使用的各种 MySQL 数据类型:
数值类型 | 描述 |
int(size) smallint(size) tinyint(size) mediumint(size) bigint(size) | 仅支持整数。在 size 参数中规定数字的最大值。 |
decimal(size,d) double(size,d) float(size,d) | 支持带有小数的数字。 在 size 参数中规定数字的最大值。在 d 参数中规定小数点右侧的数字的最大值。 |
文本数据类型 | 描述 |
char(size) | 支持固定长度的字符串。(可包含字母、数字以及特殊符号)。 在 size 参数中规定固定长度。 |
varchar(size) | 支持可变长度的字符串。(可包含字母、数字以及特殊符号)。 在 size 参数中规定最大长度。 |
tinytext | 支持可变长度的字符串,最大长度是 255 个字符。 |
text blob | 支持可变长度的字符串,最大长度是 65535 个字符。 |
mediumtext mediumblob | 支持可变长度的字符串,最大长度是 16777215 个字符。 |
longtext longblob | 支持可变长度的字符串,最大长度是 4294967295 个字符。 |
日期数据类型 | 描述 |
date(yyyy-mm-dd) datetime(yyyy-mm-dd hh:mm:ss) timestamp(yyyymmddhhmmss) time(hh:mm:ss) | 支持日期或时间 |
杂项数据类型 | 描述 |
enum(value1,value2,ect) | ENUM 是 ENUMERATED 列表的缩写。可以在括号中存放最多 65535 个值。 |
set | SET 与 ENUM 相似。但是,SET 可拥有最多 64 个列表项目,并可存放不止一个 choice |
主键和自动递增字段
每个表都应有一个主键字段。
主键用于对表中的行进行唯一标识。每个主键值在表中必须是唯一的。此外,主键字段不能为空,这是由于数据库引擎需要一个值来对记录进行定位。
主键字段永远要被编入索引。这条规则没有例外。你必须对主键字段进行索引,这样数据库引擎才能快速定位给予该键值的行。
下面的例子把 personID 字段设置为主键字段。主键字段通常是 ID 号,且通常使用 AUTO_INCREMENT 设置。AUTO_INCREMENT 会在新记录被添加时逐一增加该字段的值。要确保主键字段不为空,我们必须向该字段添加 NOT NULL 设置。
例:
$sql = "CREATE TABLE Persons (personID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(personID),FirstName varchar(15),LastName varchar(15),Age int)";mysql_query($sql,$con);
插入:
语法
INSERT INTO table_nameVALUES (value1, value2,....)
您还可以规定希望在其中插入数据的列:
INSERT INTO table_name (column1, column2,...)VALUES (value1, value2,....)
注释:
SQL 语句对大小写不敏感。INSERT INTO 与 insert into 相同。
为了让 PHP 执行该语句,我们必须使用 mysql_query() 函数。该函数用于向 MySQL 连接发送查询或命令。
例子
在前面的章节,我们创建了一个名为 "Persons" 的表,有三个列:"Firstname", "Lastname" 以及 "Age"。我们将在本例中使用同样的表。下面的例子向 "Persons" 表添加了两个新记录:
<?php$con = mysql_connect("localhost","peter","abc123");if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Peter', 'Griffin', '35')");mysql_query("INSERT INTO Persons (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33')");
mysql_close($con);?>
把来自表单的数据插入数据库
现在,我们创建一个 HTML 表单,这个表单可把新记录插入 "Persons" 表。
这是这个 HTML 表单:
<html><body><form action="insert.php" method="post">Firstname: <input type="text" name="firstname" />Lastname: <input type="text" name="lastname" />Age: <input type="text" name="age" /><input type="submit" /></form></body></html>
当用户点击上例中 HTML 表单中的提交按钮时,表单数据被发送到 "insert.php"。"insert.php" 文件连接数据库,并通过 $_POST 变量从表单取回值。然后,mysql_query() 函数执行 INSERT INTO 语句,一条新的记录会添加到数据库表中。
下面是 "insert.php" 页面的代码:
<?php$con = mysql_connect("localhost","peter","abc123");if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("my_db", $con);$sql="INSERT INTO Persons (FirstName, LastName, Age)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "1 record added";mysql_close($con)?>
修改:
UPDATE 语句用于中修改数据库表中的数据。
更新数据库中的数据
UPDATE 语句用于在数据库表中修改数据。
语法
UPDATE table_nameSET column_name = new_valueWHERE column_name = some_value
注释:
SQL 对大小写不敏感。UPDATE 与 update 等效。
为了让 PHP 执行上面的语句,我们必须使用 mysql_query( 函数。该函数用于向 SQL 连接发送查询和命令。
例子
稍早时,我们在本教程中创建了一个名为 "Persons" 的表。它看起来类似这样:
FirstName | LastName | Age |
Peter | Griffin | 35 |
Glenn | Quagmire | 33 |
下面的例子更新 "Persons" 表的一些数据:
<?php$con = mysql_connect("localhost","peter","abc123");if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("my_db", $con);mysql_query("UPDATE Persons SET Age = '36'WHERE FirstName = 'Peter' AND LastName = 'Griffin'");mysql_close($con);?>
在这次更新后,"Persons" 表格是这样的:
FirstName | LastName | Age |
Peter | Griffin | 36 |
Glenn | Quagmire | 33 |
删除:
删除数据库中的数据
DELETE FROM 语句用于从数据库表中删除记录。
语法
DELETE FROM table_nameWHERE column_name = some_value
注释:
SQL 对大小写不敏感。DELETE FROM 与 delete from 等效。
为了让 PHP 执行上面的语句,我们必须使用 mysql_query( 函数。该函数用于向 SQL 连接发送查询和命令。
例子
稍早时,我们在本教程中创建了一个名为 "Persons" 的表。它看起来类似这样:
FirstName | LastName | Age |
Peter | Griffin | 35 |
Glenn | Quagmire | 33 |
下面的例子删除 "Persons" 表中所有 LastName='Griffin' 的记录:
<?php$con = mysql_connect("localhost","peter","abc123");if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("my_db", $con);mysql_query("DELETE FROM Persons WHERE LastName='Griffin'");mysql_close($con);?>
在这次删除之后,表是这样的:
FirstName | LastName | Age |
Glenn | Quagmire | 33 |
查询:
SELECT 语句用于从数据库中选取数据。
从数据库表中选取数据
SELECT 语句用于从数据库中选取数据。
语法
SELECT column_name(s) FROM table_name
注释:
SQL 语句对大小写不敏感。SELECT 与 select 等效。
为了让 PHP 执行上面的语句,我们必须使用 mysql_query() 函数。该函数用于向 MySQL 发送查询或命令。
例子
下面的例子选取存储在 "Persons" 表中的所有数据(* 字符选取表中所有数据):
<?php$con = mysql_connect("localhost","peter","abc123");if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("my_db", $con);$result = mysql_query("SELECT * FROM Persons");while($row = mysql_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; }mysql_close($con);?>
上面这个例子在 $result 变量中存放由 mysql_query() 函数返回的数据。接下来,我们使用 mysql_fetch_array() 函数以数组的形式从记录集返回第一行。每个随后对 mysql_fetch_array() 函数的调用都会返回记录集中的下一行。 while loop 语句会循环记录集中的所有记录。为了输出每行的值,我们使用了 PHP 的 $row 变量 ($row['FirstName'] 和 $row['LastName'])。
以上代码的输出:
Peter GriffinGlenn Quagmire
在 HTML 表格中显示结果
下面的例子选取的数据与上面的例子相同,但是将把数据显示在一个 HTML 表格中:
<?php$con = mysql_connect("localhost","peter","abc123");if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("my_db", $con);$result = mysql_query("SELECT * FROM Persons");echo "<table border='1'><tr><th>Firstname</th><th>Lastname</th></tr>";while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['FirstName'] . "</td>"; echo "<td>" . $row['LastName'] . "</td>"; echo "</tr>"; }echo "</table>";mysql_close($con);?>
以上代码的输出:
Firstname | Lastname |
Glenn | Quagmire |
Peter | Griffin |
个人学习笔记,不当之处还请指正。
----------不定期更新------------
----------不定期更新------------