MySQL入门(一)

MySQL安装

只需下载安装包,随地把它解压缩,并运行 mysql.exe. 下载地址:http://dev.mysql.com/downloads/

验证MySQL安装

使用 mysqladmin 来检查服务器版本:

mysqladmin --version

可以使用MySQL客户端使用 mysql 命令连接到 MySQL 服务器。此时,不需要给任何密码,因为默认情况下它被设置为空。 所以,只需要使用下面的命令:

mysql

应该出现一个mysql>提示符。 现在,已连接到MySQL服务器,可以在MySQL的命令>提示符下执行所有SQL,如下:

SHOW DATABASES;

MySQL附带了一个空密码有的root用户。成功后安装了数据库和客户端,需要进行如下设置root密码:

mysqladmin -u root password “123456”;

再进入,使用用户名root和刚才设置的新密码 123456 登录。

mysql -u root -p

运行和关闭MySQL服务器

如果服务器没有运行,那么可以使用下面的命令来启动它:

D:\software\mysql-5.6.25-winx64\bin>mysqld

关闭已经运行的 MySQL 服务器,那么可以使用下面的命令做到这一点:

mysqladmin -u root -p shutdown

创建一个数据库:tutorials,使用以下命令:

mysql -u root -p password;

create database tutorials default character set utf8 collate utf8_general_ci;

注意: MySQL不会终止命令,直到给一个分号(;)在SQL命令的结尾。

管理 mysql 命令

这里是重要的MySQL命令,经常在MySQL数据库的管理或工作中使用:
USE Databasename : 用于选择在MySQL工作区指定的数据库。
SHOW DATABASES: 列出了MySQL数据库管理系统中的所有可访问的数据库。
SHOW TABLES: 显示已经选择数据库中的表的命令。 SHOW COLUMNS FROM tablename: 显示属性,属性类型,关键信息,NULL是否被允许,默认值和其它的表信息。
SHOW INDEX FROM tablename: 提供所有指标的详细信息表,其中包括PRIMARY KEY.
SHOW TABLE STATUS LIKE tablename\G: 报告MySQL的数据库管理系统的性能和统计数据的详细信息。

使用MySQL二进制连接MySQL

从命令提示符连接MySQL服务器:

mysql -u root -p

任何时候使用exit命令在mysql>提示符下,从MySQL数据库断开。

exit

MySQL创建数据库

假如有权使用 root 用户,就可以用mysql中的mysqladmin来创建数据库。
创建名为 tutorials 的数据库。

mysqladmin -u root -p create tutorials

mysql -u root -p
Enter password:
create database yiibai_tutorials1;

MySQL删除数据库

需要特殊权限来创建或删除一个MySQL数据库。因此,假如你有机会获得root用户来登录,可以用mysql中mysqladmin二进制来创建任何数据库。

mysqladmin -u root -p drop yiibai_tutorials1

从命令提示符选择MySQL数据库

使用SQL命令的 user 来选择一个特定的数据库。

use test;

注意: 所有的数据库名,表名,表中的字段名称是区分大小写的。所以,我们必须使用适当的名称,在给定任何SQL命令。

MySQL表字段类型

MySQL使用许多不同的数据类型,总体上分为三类:数字,日期,时间和字符串类型。

数字数据类型

INT - 正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-2147483648到2147483647。如果是无符号,允许的范围是从0到4294967295。 可以指定多达11位的宽度。

日期和时间类型

DATETIME - 日期和时间组合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30,会被存储为1973-12-30 15:30:00。

字符串类型
  • VARCHAR(M) - 可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如:
    VARCHAR(25). 创建VARCHAR类型字段时,必须定义长度。

  • BLOB or TEXT - 字段的最大长度是65535个字符。BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。定义为TEXT文本字段还持有大量的数据;
    两者之间的区别是,排序和比较上存储的数据,BLOB大小写敏感,而TEXT字段不区分大小写。不用指定BLOB或TEXT的长度。

MySQL创建表

create table tutorials_tbl(
tutorial_id INT NOT NULL AUTO_INCREMENT,
tutorial_title VARCHAR(100) NOT NULL,
tutorial_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( tutorial_id )
);

在这里,一些数据项需要解释:

  1. 字段使用NOT NULL属性,是因为我们不希望这个字段的值为NULL。因此,如果用户将尝试创建具有NULL值的记录,那么MySQL会产生错误。
  2. 字段的AUTO_INCREMENT属性告诉MySQL自动增加id字段下一个可用编号。
  3. 关键字PRIMARY KEY用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。关键字PRIMARY KEY用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。
MySQL删除表

删除现有MySQL表这是很容易的,但必须非常小心,当删除表后丢失的数据将不能恢复。

DROP TABLE tutorials_tbl;

MySQL插入数据

这里是INSERT INTO命令将数据插入到MySQL表的通用SQL语法:

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 

要插入字符串类型数据,则需要双或单引号保留到所有的值,例如:- “value”.

INSERT INTO tutorials_tbl (tutorial_title, tutorial_author, submission_date) VALUES (“Learn PHP”, “Paul”, NOW());

这里, NOW() 是MySQL函数,返回当前的日期和时间。

MySQL SELECT查询

通用的SQL的SELECT命令语法,从MySQL表获取数据:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N] 

可以使用逗号分隔一个或多个表,以及使用WHERE子句包括各种条件,但WHERE子句是SELECT命令的可选部分
可以在一个SELECT命令指定读取一个或多个字段 可以指定星号(*)代替选择的字段。在这种情况下,将返回所有字段
可以指定任意的条件在 WHERE 子句后面
可以使用OFFSET指定一个偏移量,SELECT从那里开始返回记录。默认情况下 offset 的值是 0 可以使用LIMIT属性限制返回的数量
从tutorials_tbl表中作者的名字是yiibai所有记录返回:

SELECT * from tutorials_tbl WHERE tutorial_author=‘yiibai’;

MySQL UPDATE查询

这里是UPDATE命令修改数据到MySQL表的通用SQL语法:

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause] 

完全可以更新一个或多个字段。
可以指定使用任何条件在WHERE子句中。
可以一次更新一个表中的值。
更新 tutorial_id 为3 的纪录中的 tutorial_title 字段。

UPDATE tutorials_tbl SET tutorial_title=‘Learning JAVA’ WHERE tutorial_id=3;

MySQL DELETE查询

这里是DELETE命令从一个MySQL表中删除数据的通用的SQL语法:

DELETE FROM table_name [WHERE Clause] 

如果WHERE子句没有指定,则所有MySQL表中的记录将被删除。
可以指定使用任何条件在WHERE子句中。
可以一次删除一个表中的所有记录。
删除 tutorial_tbl表中 tutorial_id为3的一条记录。

DELETE FROM tutorials_tbl WHERE tutorial_id=3;

条件查询

LIKE子句
从 tutorials_tbl 表中获取作者的名称以 aul 结尾的所有记录:

SELECT * from tutorials_tbl WHERE tutorial_author LIKE ‘%aul’;

排序结果
可以排序返回所列出提供的任何字段的结果
可以在多个字段排序结果
可以使用关键字ASC或DESC来执行升序或降序排序。默认情况下,按升序排列

SELECT * from tutorials_tbl ORDER BY tutorial_author ASC;

Join联接
大多数现实中的MySQL使用,需要从多个表中,在单个查询获得数据。 可以在单个SQL查询中使用多个表。连接MySQL中的行在两个或多个表到一个表。 可以使用Join在SELECT,UPDATE和DELETE语句加入MySQL表。
此查询将从表tutorials_tbl和tcount_tbl 选择所有作者的教程数量。

SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count FROM tutorials_tbl a, tcount_tbl b WHERE a.tutorial_author = b.tutorial_author;

NULL值
要查找列的值是或不是NULL,使用IS NULL或IS NOT NULL。
要查找记录中,其中 tutorial_count 列的值是或不是NULL,查询应该这样写:

SELECT * FROM tcount_tbl WHERE tutorial_count IS NULL;

正则表达式
查询查找所有以 “st” 开头的名字:

SELECT name FROM person_tbl WHERE name REGEXP ‘^st’;

查询找到所有以 ‘ok’ 结尾的名字

SELECT name FROM person_tbl WHERE name REGEXP ‘ok$’;

查询查找其中包含 ‘mar’ 所有的名字

SELECT name FROM person_tbl WHERE name REGEXP ‘mar’;

查询查找以元音 ‘ok’ 结尾的所有名称

SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

MySQL事务

事务是数据库处理操作,其中执行就好像它是一个单一的一组有序的工作单元。
事务具有以下四个标准属性,通常由首字母缩写ACID简称:

  1. 原子性: 确保了工作单位中的所有操作都成功完成; 否则,事务被中止,在失败时会被回滚到事务操作以前的状态。
  2. 一致性:可确保数据库在正确的更改状态在一个成功提交事务。
  3. 隔离: 使事务相互独立地操作。
  4. 持久性: 确保了提交事务的结果或系统故障情况下仍然存在作用。

提交和回滚 这两个关键字Commit和Rollback主要用于MySQL的事务。
当一个成功的事务完成后,COMMIT命令发出的变化对所有涉及的表将生效。
如果发生故障,ROLLBACK命令发出后,事务中引用的每个表将恢复到事务开始之前的状态。

Alter命令
在表中添加或删除任何表字段到现有列。
要从MySQL的表中删除一个现有列,那么使用ALTER命令以及DROP子句如下:

ALTER TABLE testalter_tbl DROP i;

要添加列,使用ADD并指定列定义。

ALTER TABLE testalter_tbl ADD i INT;

若要指示列在表中的特定位置,要么使用FIRST把它放在第一列或AFTER col_name 来指定新的列应放置col_name之后。

更改列定义或名称
要改变列的定义,使用MODIFY 或CHANGE 子句以及ALTER命令。 例如, 要改变字段 c 从 CHAR(1) 修改为 CHAR(10), 那么可以这样做:

ALTER TABLE testalter_tbl MODIFY c CHAR(10);

CHANGE语法可能有点不同。CHANGE关键字后的名称是要修改的列,然后指定新的定义,其中包括新的名称。试试下面的例子:

ALTER TABLE testalter_tbl CHANGE i j BIGINT;

ALTER TABLE影响Null和缺省值属性
当使用 MODIFY 或 CHANGE修改列,还可以指定该列是否能为NULL值以及它的默认值。事实上,如果你不这样做,MySQL也会自动分配这些属性值。

ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;

更改列的默认值
可以使用ALTER命令更改任何列的默认值。

ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

从任何一列删除默认的约束,可以使用ALTER命令以及DROP子句。

ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

更改表类型
可以通过使用ALTER命令以及TYPE子句修改表的类型。试试下面的例子,将 testalter_tbl 的类型更改为MyISAM 表类型。 若想要知道一个表的当前类型,那么可使用 SHOW TABLE STATUS 语句。

ALTER TABLE testalter_tbl TYPE = MYISAM;
SHOW TABLE STATUS LIKE ‘testalter_tbl’\G

重命名表

ALTER TABLE testalter_tbl RENAME TO alter_tbl;

MySQL索引

数据库索引是一种数据结构,目的是提高表的操作速度。可以使用一个或多个列,提供快速随机查找和访问记录的高效排序来创建索引。
要创建的索引,应当认为哪列将用于使SQL查询,创建对这些列的一个或多个索引。 实际上,索引也是表,其中保存主键或索引字段的指针并指向每个记录到实际的表的类型。

简单和唯一索引
可以在表上创建唯一值索引。唯一索引意味着两行不能有相同的索引值。下面是在表上创建索引的语法

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...);

使用tutorial_author 来创建一个 tutorials_tbl 索引。

CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author)
可以在表上创建一个简单的索引。创建简单的索引只是省略UNIQUE关键字。简单的索引可以在表中重复的值。

使用ALTER命令来添加和删除索引
有四种类型的索引可以添加到一个表:

  1. ALTER TABLE tbl_name ADD PRIMARY KEY (column_list):此语句添加一个主键(PRIMARY KEY),这意味着索引值必须是唯一的,而不能为空。
  2. ALTER TABLE tbl_name ADD
    UNIQUE index_name (column_list):
    此语句创建一个索引的量的值必须是唯一的(除了不能使用NULL值,其它的可以出现多次)。
  3. ALTER TABLE tbl_name ADD
    INDEX index_name (column_list): 这增加普通的索引,其中的任何值的出现多次。
  4. ALTER TABLE
    tbl_name ADD FULLTEXT index_name (column_list):这将创建一个用于文本搜索目的一种特殊的FULLTEXT索引。

下面是一个添加索引到现有表的例子。

ALTER TABLE testalter_tbl ADD INDEX (c); 

可以通过使用ALTER命令以及DROP子句来删除索引。试试下面的例子,用来删除上面创建的索引。

ALTER TABLE testalter_tbl DROP INDEX (c);

显示索引信息
使用SHOW INDEX命令,列出所有与表相关的索引。 垂直格式输出(由\G指定),这是经常有用的语句,以避免长线概括输出: 试试下面的例子:

SHOW INDEX FROM table_name\G

MySQL复制表

通过以下步骤处理这种情况:

  • 使用 SHOW CREATE TABLE以获得CREATE TABLE语句用于指定源表的结构,索引和所有其它的。
  • 修改语句用来更改表名为克隆表并执行该语句。通过这种方式,将有确切的克隆表。
  • 或者,如果需要复制以及表的内容,再发出一个INSERT INTO… SELECT语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值