MySQL数据库基本操作
MySQL中数据库的类型
- MySQL中的数据库分为系统数据库和用户数据库两大类。
-
系统数据库
- information_schema:主要存储系统中的一些数据库对象信息,如用户表信息、字段信息、权限信息、字符集信息和分区信息等。
- performance_schema:主要存储数据库服务器性能参数信息。
- mysql:主要存储系统的用户权限信息。
- test:MySQL数据管理系统自动创建的测试数据库,任何用户都可以使用。
-
用户数据库
- 用户数据库是用户根据实际需求创建的数据库
SQL简介
- SQL的全称是“结构化查询语言”的缩写,SQL语言不同于Java这样的程序设计语言,它是只能被数据库识别的指令,但是在程序中,可以利用其他编程语言组织SQL语句发送给数据库,数据库再执行相应的操作。
- SQL的组成:
- DML(数据操作语言,也被称为数据操纵语言):用来插入、修改和删除数据库中的数据,如INSERT、UPDATE和DELETE等。
- DDL(数据定义语言):用来建立数据库、数据库对象,定义数据表结构等,大部分是以CREATE开头的命令,如CREATE TABLE、CREATE VIEW及DROP TABLE等。
- DQL(数据查询语言):用来对书库中的数据进行查询,如SELECT等。
- DCL(数据控制语言):用来控制数据库组件的存取许可、存取权限等,如GRANT、REVOKE等。
MySQL数据库基本操作
-
创建数据库
-
MySQL中创建数据库的基本SQL语句的语法格式如下:
CREATE DATABASE 数据库名;
#例如 CREATE DATABASE mySchool;
在MySQL中,以英文半角分号(;)作为一条命令的结束符
注意:通过执行SQL语句的结果发现,下面有一行提示“Query OK.1 row affected(0.00sec)”,这段提示可以分为三个部分:1.“Query OK ”:表示SQL语句执行成功。2.“1 row affected”:表示操作影响的行数。3.“0.00sec”:表示操作执行的时间
-
-
查看数据库列表
- 执行查看数据库命令可以查看已存在的数据库,语法格式如下
- SHOW DATABASES;
- 执行查看数据库命令可以查看已存在的数据库,语法格式如下
-
选择数据库
-
数据是放在数据表中的,在对数据进行操作之前,需要确定该表所在的数据库,因此需要先选择一个数据库。语法格式如下
-
USE 数据库名
USE mybase; USE myschool; #从结果可以看出,如果选择的数据库不存在,则会报错;如果存在且用户有权限访问,则提示“Database changed”,即数据库已切换。
-
-
-
删除数据库
-
删除数据库的语法格式如下。
DROP DATABASE 数据库名;
DROP DATABASE myschool;
-
使用SQL语言操作数据库
数据类型... ... (详见课本27页至28页)
-
创建表
-
如何使用DDL语言创建数据库表
-
语法
- 创建数据库表的语法格式如下:CREATE TABLE[IF NOT EXISTS] 表名(字段1 数据类型 [字段属性|约束] [索引] [注释],字段2 数据类型 [字段属性|约束] [索引] [注释],字段n 数据类型 [字段属性|约束] [索引] [注释])[表类型] [表字符集] [注释];
-
字段的约束及属性
数据完整性是指数据的准确性和一致性。数据库是否具备数据完整性关系到数据库系统是否能真实地反映现实世界,因此,数据库地完整性是非常重要的。在MySQL中同样提供了约束机制以保证数据的完整性。(常用的字段属性约束详见书本第30页)
-
常用的字段属性约束中主键约束是非常重要的约束,当需要使用数据库表中某一字段或某几个字段来唯一标识所有记录时,需要将该字段设置为表的主键,主键可以是但字段的,也可以是多字段的。
-
单字段主键
语法格式:CREATE TABLE [IF NOT EXISTS]表名(字段1 数据类型 PRIMARY KEY,... ...)
在定义完所有字段之后指定主键,语法格式:CREATE TABLE [IF NOT EXISTS]表名(字段1 数据类型,... ... [CONSTRAINT]<约束名>PRIMARY KEY[列名])
CREATE TABLE student( 'studentNo' INT(4) PRIMARY KEY, ... ... ) # 或者 CREATE TABLE student( 'studentNo' INT(4), ... ... PRIMARY KEY(studentNo) )
-
多字段联合主键
主键由多字段组成,语法格式如下:CREATE TABLE[IF NOT EXISTS]表名(PRIMARY KEY[字段1,字段2......])
CREAT TABLE tb temp( 'id' INT(4), 'name' VARCHAR(11), ... ... PRIMARY KEY(id,name) )
-
-
注释
-
在创建表的同时可以为表或字段添加说明性文字,即注释。注释使用COMMENT关键字来添加的
CREATE TABLE test( 'id' int(11) UNSIGNED COMMENT'编号' )COMMENT='测试表'
-
-
编码格式设置
- 默认情况下MySQL所有数据库、表、字段的都是用MySQL默认字符集,也可以通过my.ini中的default-charachter-set 参数来修改默认字符集
- 创建表时指定字符集的语法格式如下:CREATE TABLE [IF NOT EXISTS]表名(#省略代码)CHARSET=字符集名
-
-
-
查看表
-
创建完表之后,如果需要查看以下该表是否存在,可以使用查看表的SQL命令,其语法格式如下
- SHOW tables;注意:在使用SHOW tables语句之前,必须先选择数据库,否则将会给出错误提示“No database selected”
-
如果需要查看表的定义,可以通过执行SQL语句DESCRIBE来实现,其语法格式如下
DESCRIBE 表名 或 DESC表名
USE myschool; DESCRIBE 'student';
-
-
删除表
-
与创建数据库一样,如果当前数据库中已存在student表,则再次创建时系统将提示出错。我们需要预先检测当前数据库中是否存在该表,如果存在,则先删除,然后创建。可以使用IF EXISTS语句进行判断。删除表的语法格式如下:DROP TABLE [IF EXISTS] 表名
DROP TABLE 'student'; #将上述创建student表的语句改成完整的删除并创建表的语句 USE school; DROP TABLE IF EXISTS 'student'; CREATE TABLE 'student'( ... ... )
-
-
修改表
-
修改表名
-
在一个数据库中,表名是唯一的。可以通过SQL语句对已创建的表修改表名,语法格式如下
ALTER TABLE<旧表名>RENAME[TO]<新表名>
DROP TABLE IF EXISTS 'demo01';
CREATE TABLE IF NOT EXISTS 'demo01'(
'id' INT(10) NOT NULL AUTO_INCREMENT,
'name' VARCHAR(32) NOT NULL,
PRIMARY KEY(id)
);修改表名
ALTER TABLE 'demo01' RENAME 'demo02';
-
-
-
添加字段,语法格式:ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
ALTER TABLE demo02 ADD 'password' VARCHAR(32) NOT NULL
-
-
3.修改字段,数据表中的字段包含字段名和数据类型,可以修改字段名和修改数据存储类型。
语法格式:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
-
其中,“原字段名”指修改前的字段名,“新字段名”指修改后的字段名,“数据类型”是指修改后的数据类型,如果不需要修改数据类型,则和原数据类型保持一致,但“数据类型”不能为空。
ALTER TABLE demo02 CHANGE 'name' 'username' CHAR(10) NOT NULL;
注意:由于不同类型的数据存储方式和长度不同,修改数据类型可能会影响到数据表中已有的数据,因此
-
删除字段
-
删除字段就是将数据表中的某个字段从表中移除,语法格式如下:ALTER TABLE 表名 DROP 字段名
ALTER TABLE demo02 DROP 'password';
-
-
- 添加主键约束
-
在实际应用中,也许会用到其他修改表结构的语句,这时可以通过查看系统帮助来找到他们。通过执行“HELP ALTER TABLE”;可查看所有修改表结构的SQL语句。用户可以通过查看语法定义和参数设置内容,来修改表的不同部分
-
添加主键约束的语法格式如下:ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名 (主键字段)
ALTER TABLE 'grade' ADD CONSTRAINT 'pk_grade' PRIMARY KEY 'grade'('gradeid')
-
-
添加外键约束
-
语法格式如下:ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段)
ALTER TABLE 'student' ADD CONSTRAINT fk_student_grade FOREIGN KEY(gradeId) REFERENCES grade(gradeId);
-
-
注意:在MySQL中,InnoDB存储类型的表支持外键,MyISAM存储类型的表不支持外键,因此对于MyISAM存储类型的表也可以通过建立逻辑关联的方式保证数据的完整性和一致性
HELP命令
-
MySQL 中查看帮助的命令是HELP,语法如下:HELP 查询内容;其中查询内容为要查询的关键字
#通过HELP contents命令可查看帮助文档目录列表 HELP contents; #查看具体内容,可以选择某一项进行查询,如查看所支持的额数据类型 HELP Data Types; #若要进一步查看某一数据类型,如INT类型,命令如下。 HELP INT;#可以看到INT的帮助信息,包含数据类型描述、取值范围等。 #另外,还可以查询某命令 HELP CREATE TABLE;