首页 理论教育 MMM结构化查询语言简介

MMM结构化查询语言简介

时间:2023-10-29 理论教育 版权反馈
【摘要】:在用phpMyAdmin对MySQL数据库进行操作时,经常可以看到一些SQL语言。SQL是Structured Query Language的缩写,翻译为“结构化查询语言”,它是一种针对数据库操作设计的编程语言。这种语言不仅仅用于MySQL数据库,它几乎在各种数据库中都适用。可以说SQL语言是真正的跨媒体的数据库操作语言,学习数据库必须学习SQL语言。输入上述SQL语言点击执行,同样可以添加名为“zm”用户到数据库中。

MMM结构化查询语言简介

在用phpMyAdmin对MySQL数据库进行操作时,经常可以看到一些SQL语言。SQL是Structured Query Language的缩写,翻译为“结构化查询语言”,它是一种针对数据库操作设计的编程语言。这种语言不仅仅用于MySQL数据库,它几乎在各种数据库中都适用。在后面我们学的PHP语言中,我们会用到SQL语言,实际上在Java、C、ASP等语言中都可以使用这种语言来对数据库进行操作。可以说SQL语言是真正的跨媒体的数据库操作语言,学习数据库必须学习SQL语言。

前面我们用phpMyAdmin界面操作的方法了解了如何交互地对数据库进行操作,下面我们举一些例子来看一下同样的操作是如何用SQL语言来实现的。

1.创建用户及删除用户

CREATE USER 'zm'@'localhost' IDENTIFIED BY 'zmpassword';

GRANT ALL PRIVILEGES ON *.* TO 'zm'@'localhost'IDENTIFIED BY 'zmpassword';

这两句话就是创建用户用的语言,点击右边菜单中的“SQL”,出现如图5-12所示的界面。输入上述SQL语言点击执行,同样可以添加名为“zm”用户到数据库中。

CREATE USER 'zm'@'localhost' IDENTIFIED BY 'zmpassword';

“zm”是创建用户的用户名,“localhost”是创建用户可访问的主机名,如果用“%”代替“localhost”,就表明可以用任何主机访问(如果是一台对外的服务器就需要用“%”),“zmpassword”是为这个用户设置的访问密码。

GRANT ALL PRIVILEGES ON *.* TO 'zm'@'localhost' IDENTIFIED BY 'zmpassword';

这句话是授权(GRANT)给“zm”这个用户所有的权限(ALL PRIVILEGES)。

图5-12 SQL语言执行界面

如果在创建用户时屏幕下方出现错误界面(图5-13),有可能是你已经有这个用户了。删掉用户的SQL语言是:

drop user zm@'localhost';

其中“zm”是用户名,“localhost”是被删除用户的主机地址

图5-13 出错界面

2.建库及删库

CREATE DATABASE zm DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

上面一句话就是SQL创建数据库(CREATE DATABASE)“zm”的语言。在建库时,为了防止汉字乱码的产生,还要选择缺省字符编码设置(DEFAULT CHARACTER SET)以及排序规则(COLLATE)。

删除数据库(DROP DATABASE)的SQL语句如下:

DROP DATABASE zm;

3.创建表及删除表

CREATE TABLE zm.addresslist(

id INT NOT NULL AUTO_INCREMENT ,

name VARCHAR(30)NOT NULL,(www.xing528.com)

address VARCHAR(255)NOT NULL,

tel VARCHAR(30)NOT NULL,

PRIMARY KEY(id)

)ENGINE = InnoDB DEFAULT CHARSET=utf8;

以上是创建表(CREATE TABLE)语句,第一行需要给定所创建表的表名(表名前最好加上库名,中间加“.”,否则可能会建到别的库中);第二行给定第一个字段id为整型自动编号(AUTO_INCREMENT)类型;第三行至第五行分别给定三个数据项的数据类型和字节长度,同时告诉数据库这一项不能为空值(NOT NULL);第六行定义id项为主键(PRIMARY KEY);第七行告诉数据库存储引擎的类型为ENGINE = InnoDB,缺省编码为utf8。

NOT NULL不要嫌麻烦,还是一定要设,NULL表示可以是任何值,在数据库做比较操作的时候,会使用三值逻辑(TRUE、FALSE、UNKNOWN),而不是二值逻辑(TRUE、FALSE)。因此,设计数据库结构时尽量设置为NOT NULL类型,如果这项不填数据,可以设定默认值来代替NULL。例如int可以用0,字符串可以是空字符串。

删除表(DROP TABLE)如下:

DROP TABLE zm.addresslist;

4.插入数据

建好表后要向表中插入(INSERT INTO)数据语句如下:

INSERT INTO `zm`.`addresslist`(`id`, `name`, `address`, `tel`)VALUES(NULL, '张三', '北京东城区', '13300001111');

注意:zm(库名)、addresslist(表名)、id、name……(数据项名)外面括的单引号是“~”键上面的单引号“`”,这个单引号有时可以缺省;“张三”“北京东城区”等常量外面括的单引号是“"”键上面的单引号“'”,这个单引号不能缺省。

删除(DELETE FROM)表zm.addresslist中当(WHERE)id=1的数据行语句如下:

DELETE FROM zm.addresslist WHERE id=1;

删除记录时必须写明id,这时候id为什么设置为AUTO_INCREMENT就很清楚了,id只能是唯一的,不能有重复,否则就会将不应该删的行删掉。

前面所述的创建用户的方法也可以用以下语句代替:

insert into mysql.user

(Host,User,Password)

values

("localhost","zm",password("zmpassword"));

这明明是要在一个MySQL库的一个user表里插入一条数据的含义,怎么实现的创建用户呢?

打开左边目录树可以看到,在我们建库前就已有5个原来建好的数据库,其中一个叫“mysql”的库中有一个“user”表,点击“user”表可以看到最下面一行就有我们刚添加进去的“zm”用户(图5-14)。由此我们可以看出,创建用户实际上就是在MySQL库的user表中加一条记录。

图5-14 MySQL库中的user表

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈