京建站公司,保定网站建设价格低,企业营销管理,浦东新区网站建设一、MySQL创建数据库
使用Create命令创建数据库
我们可以在登陆 MySQL 服务后#xff0c;使用 create 命令创建数据库#xff0c;语法如下:
CREATE DATABASE 数据库名;
以下命令简单的演示了创建数据库的过程#xff0c;数据名为 RUNOOB:
[roothost]# mysql -u root -p…一、MySQL创建数据库
使用Create命令创建数据库
我们可以在登陆 MySQL 服务后使用 create 命令创建数据库语法如下:
CREATE DATABASE 数据库名;
以下命令简单的演示了创建数据库的过程数据名为 RUNOOB:
[roothost]# mysql -u root -p
Enter password:****** # 登录后进入终端mysql create DATABASE RUNOOB;
建数据库的基本语法如下
CREATE DATABASE [IF NOT EXISTS] database_name[CHARACTER SET charset_name][COLLATE collation_name];
如果你希望在创建数据库时指定一些选项可以使用 CREATE DATABASE 语句的其他参数例如你可以指定字符集和排序规则
例如CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
如果数据库已经存在执行 CREATE DATABASE 将导致错误。
为了避免这种情况你可以在 CREATE DATABASE 语句中添加 IF NOT EXISTS 子句
例如CREATE DATABASE IF NOT EXISTS mydatabase; 使用 mysqladmin 创建数据库
mysqladmin 是 MySQL 提供的一个用于执行管理任务的命令行工具。
通过 mysqladmin你可以执行各种数据库管理操作包括创建数据库。
以下是使用 mysqladmin 创建数据库的基本语法
mysqladmin -u your_username -p create your_database
-u 参数用于指定 MySQL 用户名。-p 参数表示需要输入密码。create 是执行的操作表示创建数据库。your_database 是要创建的数据库的名称。
使用普通用户你可能需要特定的权限来创建或者删除 MySQL 数据库。
我们这边使用 root 用户登录root 用户拥有最高权限可以使用 mysql mysqladmin 命令来创建数据库。
执行上述命令后系统会提示你输入密码输入密码后按 Enter 键即可。
以下命令简单的演示了创建数据库的过程数据名为 RUNOOB:
[roothost]# mysqladmin -u root -p create RUNOOB
Enter password:******
以上命令执行成功后会创建 MySQL 数据库 RUNOOB。
如果你希望在创建数据库时指定字符集和排序规则可以使用 -default-character-set 和 -default-collation 参数
mysqladmin -u your_username -p create your_database \--default-character-setutf8mb4 \--default-collationutf8mb4_general_ci
以上代码创建一个使用 utf8mb4 字符集和 utf8mb4_general_ci 排序规则的数据库。 请注意在执行这些命令时请确保 MySQL 服务器正在运行并且你有足够的权限执行这些操作。 如果你希望使用 mysqladmin 连接到 MySQL 服务器执行其他管理任务例如查看服务器状态、重启服务器等可以使用以下形式的命令
mysqladmin -u your_username -p your_command
在这里your_command 是你希望执行的具体管理命令。
例如要查看 MySQL 服务器的状态可以使用
mysqladmin -u your_username -p status
这将要求你输入密码并显示有关服务器状态的信息。
二、MySQL 删除数据库 使用普通用户登陆 MySQL 服务器你可能需要特定的权限来创建或者删除 MySQL 数据库所以我们这边使用 root 用户登录root 用户拥有最高权限。
在删除数据库过程中务必要十分谨慎因为在执行删除命令后所有数据将会消失。
使用drop 命令删除数据库
drop 命令格式
DROP DATABASE database_name; -- 直接删除数据库不检查是否存在
或
DROP DATABASE [IF EXISTS] database_name;
参数说明
IF EXISTS 是一个可选的子句表示如果数据库存在才执行删除操作避免因为数据库不存在而引发错误。database_name 是你要删除的数据库的名称。
例如删除名为 RUNOOB 的数据库
-- 直接删除数据库不检查是否存在
mysql DROP DATABASE RUNOOB;-- 删除数据库如果存在的话
DROP DATABASE IF EXISTS RUNOOB;
注意 在执行删除数据库操作前请确保你确实想要删除数据库及其所有数据因为该操作是不可逆的。为了避免误操作通常建议在执行删除之前备份数据库。
使用 mysqladmin 删除数据库
你也可以使用 MySQL mysqladmin 命令在终端来执行删除命令。
以下是使用 mysqladmin 删除数据库的命令
mysqladmin -u your_username -p drop your_database
your_username 是 MySQL 用户名your_database 是要删除的数据库的名称。
执行此命令后系统会提示输入密码输入密码后按 Enter 键即可删除数据库。
以下实例删除数据库 RUNOOB(该数据库在前一章节已创建) [roothost]# mysqladmin -u root -p drop RUNOOB
Enter password:******
执行以上删除数据库命令后会出现一个提示框来确认是否真的删除数据库
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.Do you really want to drop the RUNOOB database [y/N] y
Database RUNOOB dropped
三、MySQL 选择数据库 在你连接到 MySQL 数据库后可能有多个可以操作的数据库所以你需要选择你要操作的数据库。 从命令提示窗口中选择 MySQL 数据库
在 mysql 提示窗口中可以很简单的选择特定的数据库。
在 MySQL 中要选择要使用的数据库可以使用 USE 语句以下是基本的语法
USE database_name;
参数说明
database_name 是你要选择的数据库的名称。
选择来数据库后你的后续 SQL 查询和操作在指定的数据库 database_name 上执行。
以下实例选取了数据库 RUNOOB:
[roothost]# mysql -u root -p
Enter password:******
mysql use RUNOOB;
Database changed
mysql
执行以上命令后你就已经成功选择了 RUNOOB 数据库在后续的操作中都会在 RUNOOB 数据库中执行。
在命令行中你可以通过以下方式选择数据库
mysql -u your_username -p -D your_database
-D 参数用于指定要选择的数据库。
例如
mysql -u root -p -D RUNOOB
在输入密码后你将进入 MySQL 提示符并且任何后续的查询和操作都将在 RUNOOB 数据库上执行。 请确保选择的数据库存在否则你将收到错误消息。你可以使用 SHOW DATABASES; 查询可用的数据库确保你要选择的数据库在列表中。 四、MySQL 数据类型
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型大致可以分为三类数值、日期/时间和字符串(字符)类型。 数值类型
MySQL 支持所有标准 SQL 数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC)以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。
关键字INT是INTEGER的同义词关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。
作为 SQL 标准的扩展MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
类型大小范围有符号范围无符号用途TINYINT1 Bytes(-128127)(0255)小整数值SMALLINT2 Bytes(-32 76832 767)(065 535)大整数值MEDIUMINT3 Bytes(-8 388 6088 388 607)(016 777 215)大整数值INT或INTEGER4 Bytes(-2 147 483 6482 147 483 647)(04 294 967 295)大整数值BIGINT8 Bytes(-9,223,372,036,854,775,8089 223 372 036 854 775 807)(018 446 744 073 709 551 615)极大整数值FLOAT4 Bytes(-3.402 823 466 E38-1.175 494 351 E-38)0(1.175 494 351 E-383.402 823 466 351 E38)0(1.175 494 351 E-383.402 823 466 E38)单精度 浮点数值DOUBLE8 Bytes(-1.797 693 134 862 315 7 E308-2.225 073 858 507 201 4 E-308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E308)0(2.225 073 858 507 201 4 E-3081.797 693 134 862 315 7 E308)双精度 浮点数值DECIMAL对DECIMAL(M,D) 如果MD为M2否则为D2依赖于M和D的值依赖于M和D的值小数值 日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个零值当指定不合法的MySQL不能表示的值时使用零值。
TIMESTAMP类型有专有的自动更新特性将在后面描述。
类型大小 ( bytes)范围格式用途DATE31000-01-01/9999-12-31YYYY-MM-DD日期值TIME3-838:59:59/838:59:59HH:MM:SS时间值或持续时间YEAR11901/2155YYYY年份值DATETIME81000-01-01 00:00:00 到 9999-12-31 23:59:59YYYY-MM-DD hh:mm:ss混合日期和时间值TIMESTAMP4 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC 结束时间是第 2147483647 秒北京时间 2038-1-19 11:14:07格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYY-MM-DD hh:mm:ss混合日期和时间值时间戳 字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
类型大小用途CHAR0-255 bytes定长字符串VARCHAR0-65535 bytes变长字符串TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串TINYTEXT0-255 bytes短文本字符串BLOB0-65 535 bytes二进制形式的长文本数据TEXT0-65 535 bytes长文本数据MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据MEDIUMTEXT0-16 777 215 bytes中等长度文本数据LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据LONGTEXT0-4 294 967 295 bytes极大文本数据
注意char(n) 和 varchar(n) 中括号中 n 代表字符的个数并不代表字节个数比如 CHAR(30) 就可以存储 30 个字符。
CHAR 和 VARCHAR 类型类似但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR不同的是它们包含二进制字符串而不要非二进制字符串。也就是说它们包含字节字符串而不是字符字符串。这说明它们没有字符集并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象可以容纳可变数量的数据。有 4 种 BLOB 类型TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
有 4 种 TEXT 类型TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型可存储的最大长度不同可根据实际情况选择。 枚举与集合类型Enumeration and Set Types
ENUM: 枚举类型用于存储单一值可以选择一个预定义的集合。SET: 集合类型用于存储多个值可以选择多个预定义的集合。 空间数据类型Spatial Data Types
GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION: 用于存储空间数据地理信息、几何图形等。 五、MySQL 创建数据表
创建 MySQL 数据表需要以下信息
表名表字段名定义每个表字段的数据类型
语法
以下为创建 MySQL 数据表的 SQL 通用语法
CREATE TABLE table_name (column1 datatype,column2 datatype,...
);
参数说明
table_name 是你要创建的表的名称。column1, column2, ... 是表中的列名。datatype 是每个列的数据类型。
以下是一个具体的实例创建一个用户表 users
例如CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, birthdate DATE, is_active BOOLEAN DEFAULT TRUE );
实例解析
id: 用户 id整数类型自增长作为主键。username: 用户名变长字符串不允许为空。email: 用户邮箱变长字符串不允许为空。birthdate: 用户的生日日期类型。is_active: 用户是否已经激活布尔类型默认值为 true。
以上只是一个简单的实例用到了一些常见的数据类型包括 INT, VARCHAR, DATE, BOOLEAN你可以根据实际需要选择不同的数据类型。AUTO_INCREMENT 关键字用于创建一个自增长的列PRIMARY KEY 用于定义主键。
如果你希望在创建表时指定数据引擎字符集和排序规则等可以使用 CHARACTER SET 和 COLLATE 子句
例如CREATE TABLE mytable ( id INT PRIMARY KEY, name VARCHAR(50) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
以上代码创建一个使用 utf8mb4 字符集和 utf8mb4_general_ci 排序规则的表。
以下例子中我们将在 RUNOOB 数据库中创建数据表 runoob_tbl
例如CREATE TABLE IF NOT EXISTS runoob_tbl( runoob_id INT UNSIGNED AUTO_INCREMENT, runoob_title VARCHAR(100) NOT NULL, runoob_author VARCHAR(40) NOT NULL, submission_date DATE, PRIMARY KEY ( runoob_id ) )ENGINEInnoDB DEFAULT CHARSETutf8;
实例解析 如果你不想字段为空可以设置字段的属性为 NOT NULL如上实例中的 runoob_title 与 runoob_author 字段 在操作数据库时如果输入该字段的数据为空就会报错。 AUTO_INCREMENT 定义列为自增的属性一般用于主键数值会自动加 1。PRIMARY KEY 关键字用于定义列为主键。 您可以使用多列来定义主键列间以逗号 , 分隔。ENGINE 设置存储引擎CHARSET 设置编码。 通过命令提示符创建表
通过 mysql 命令窗口可以很简单的创建 MySQL 数据表。
你可以使用 SQL 语句 CREATE TABLE 来创建数据表。
以下为创建数据表 runoob_tbl 实例:
roothost# mysql -u root -p Enter password:******* mysql USE RUNOOB; DATABASE changed mysql CREATE TABLE runoob_tbl( - runoob_id INT NOT NULL AUTO_INCREMENT, - runoob_title VARCHAR(100) NOT NULL, - runoob_author VARCHAR(40) NOT NULL, - submission_date DATE, - PRIMARY KEY ( runoob_id ) - )ENGINEInnoDB DEFAULT CHARSETutf8; Query OK, 0 ROWS affected (0.16 sec) mysql
注意MySQL 命令终止符为分号 ; 。
注意 - 是换行符标识不要复制。 六、MySQL 删除数据表
MySQL中删除数据表是非常容易操作的但是你在进行删除表操作时要非常小心因为执行删除命令后所有数据都会消失。
语法
以下为删除 MySQL 数据表的通用语法
DROP TABLE table_name; -- 直接删除表不检查是否存在
或
DROP TABLE [IF EXISTS] table_name; -- 会检查是否存在如果存在则删除
参数说明
table_name 是要删除的表的名称。IF EXISTS 是一个可选的子句表示如果表存在才执行删除操作避免因为表不存在而引发错误。
-- 删除表如果存在的话
DROP TABLE IF EXISTS mytable;-- 直接删除表不检查是否存在
DROP TABLE mytable;
请替换 mytable 为你要删除的表的名称。
如果你只是想删除表中的所有数据但保留表的结构可以使用 TRUNCATE TABLE 语句
TRUNCATE TABLE table_name;
这会清空表中的所有数据但不会删除表本身。
注意事项
备份数据在删除表之前确保已经备份了数据如果你需要的话。外键约束如果该表与其他表有外键约束可能需要先删除外键约束或者确保依赖关系被处理好。
以下实例删除了数据表 runoob_tbl:
roothost# mysql -u root -p Enter password:******* mysql USE RUNOOB; DATABASE changed mysql DROP TABLE runoob_tbl; Query OK, 0 ROWS affected (0.8 sec) mysql 七、MySQL 插入数据
MySQL 表中使用 INSERT INTO 语句来插入数据。
你可以通过 mysql 命令提示窗口中向数据表中插入数据或者通过PHP脚本来插入数据。
语法
以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
参数说明
table_name 是你要插入数据的表的名称。column1, column2, column3, ... 是表中的列名。value1, value2, value3, ... 是要插入的具体数值。
如果数据是字符型必须使用单引号 或者双引号 如 value1, value1。
一个简单的实例插入了一行数据到名为 users 的表中
INSERT INTO users (username, email, birthdate, is_active)
VALUES (test, testrunoob.com, 1990-01-01, true);
username: 用户名字符串类型。email: 邮箱地址字符串类型。birthdate: 用户生日 日期类型。is_active: 是否已激活布尔类型。
如果你要插入所有列的数据可以省略列名
INSERT INTO users
VALUES (NULL,test, testrunoob.com, 1990-01-01, true);
这里NULL 是用于自增长列的占位符表示系统将为 id 列生成一个唯一的值。
如果你要插入多行数据可以在 VALUES 子句中指定多组数值
INSERT INTO users (username, email, birthdate, is_active)
VALUES(test1, test1runoob.com, 1985-07-10, true),(test2, test2runoob.com, 1988-11-25, false),(test3, test3runoob.com, 1993-05-03, true);
以上代码将在 users 表中插入三行数据。 通过命令提示窗口插入数据
以下我们将使用 INSERT INTO 语句向 MySQL 数据表 runoob_tbl 插入数据
以下实例中我们将向 runoob_tbl 表插入三条数据:
roothost# mysql -u root -p password; Enter password:******* mysql USE RUNOOB; DATABASE changed mysql INSERT INTO runoob_tbl - (runoob_title, runoob_author, submission_date) - VALUES - (学习 PHP, 菜鸟教程, NOW()); Query OK, 1 ROWS affected, 1 warnings (0.01 sec) mysql INSERT INTO runoob_tbl - (runoob_title, runoob_author, submission_date) - VALUES - (学习 MySQL, 菜鸟教程, NOW()); Query OK, 1 ROWS affected, 1 warnings (0.01 sec) mysql INSERT INTO runoob_tbl - (runoob_title, runoob_author, submission_date) - VALUES - (JAVA 教程, RUNOOB.COM, 2016-05-06); Query OK, 1 ROWS affected (0.00 sec) mysql
注意 使用箭头标记 - 不是 SQL 语句的一部分它仅仅表示一个新行如果一条 SQL 语句太长我们可以通过回车键来创建一个新行来编写 SQL 语句SQL 语句的命令结束符为分号 ;。
在以上实例中我们并没有提供 runoob_id 的数据因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以该字段会自动递增而不需要我们去设置。实例中 NOW() 是一个 MySQL 函数该函数返回日期和时间。
接下来我们可以通过以下语句查看数据表数据
读取数据表
select * from runoob_tbl;
输出结果 八、MySQL 查询数据
MySQL 数据库使用 SELECT 语句来查询数据。
你可以通过 mysql 命令提示窗口中在数据库中查询数据或者通过 PHP 脚本来查询数据。
语法
以下为在 MySQL 数据库中查询数据通用的 SELECT 语法
SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];
参数说明
column1, column2, ... 是你想要选择的列的名称如果使用 * 表示选择所有列。table_name 是你要从中查询数据的表的名称。WHERE condition 是一个可选的子句用于指定过滤条件只返回符合条件的行。ORDER BY column_name [ASC | DESC] 是一个可选的子句用于指定结果集的排序顺序默认是升序ASC。LIMIT number 是一个可选的子句用于限制返回的行数。
MySQL SELECT 语句简单的应用实例
-- 选择所有列的所有行 SELECT * FROM users; -- 选择特定列的所有行 SELECT username, email FROM users; -- 添加 WHERE 子句选择满足条件的行 SELECT * FROM users WHERE is_active TRUE; -- 添加 ORDER BY 子句按照某列的升序排序 SELECT * FROM users ORDER BY birthdate; -- 添加 ORDER BY 子句按照某列的降序排序 SELECT * FROM users ORDER BY birthdate DESC; -- 添加 LIMIT 子句限制返回的行数 SELECT * FROM users LIMIT 10;
SELECT 语句可以是灵活的我们可以根据实际需求组合和使用这些子句比如同时使用 WHERE 和 ORDER BY 子句或者使用 LIMIT 控制返回的行数。
在 WHERE 子句中你可以使用各种条件运算符如 , , , , , !逻辑运算符如 AND, OR, NOT以及通配符如 %等。
以下是一些进阶的 SELECT 语句实例
-- 使用 AND 运算符和通配符 SELECT * FROM users WHERE username LIKE j% AND is_active TRUE; -- 使用 OR 运算符 SELECT * FROM users WHERE is_active TRUE OR birthdate 1990-01-01; -- 使用 IN 子句 SELECT * FROM users WHERE birthdate IN (1990-01-01, 1992-03-15, 1993-05-03); 通过命令提示符获取数据
以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 runoob_tbl 的数据
以下实例将返回数据表 runoob_tbl 的所有记录:
读取数据表
select * from runoob_tbl;
输出结果