MySQL 具有开源免费、跨平台性、可扩展性、安全性和社区支持等优点,这些优势使得它成为当今最主流的数据库之一,如今的互联网时代我们难免会与各种数据打交道。因此,学习一些数据库相关知识也是必要的。
数据库就是按照一定的规律将数据(文本类型的数据,图像、音乐、声音等各种数据)存储和管理数据的计算机软件系统。简言之,可以理解为存放数据的“仓库”。
数据库管理系统是用来管理数据库而设计的电脑软件系统,常被称为数据库,如mysql数据库。
全名(Relational Database Management System:RDBMS)
主要特点是采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便,具有灵活性。
例如:MySQL、Microsoft SQL Server(仅支持windows下运行)、Oracle、MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)、Sybase等。
分类:
键值(Key-Value)存储数据库:主要用到一个有特定的键和指针指向特定数据的哈希表。
优点:简单、易部署. 缺点:对其中部分值进行查询或更新时效率比较低.
例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存储数据库: 键指向了多个列,这些列是由列家族来安排的。
如:Cassandra, HBase, Riak.
文档型数据库:数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。
同第一种键值存储相类似,可
以看作是键值数据库的升级版.允许之间 嵌套键值.
如:CouchDB, MongoDb,SequoiaDB(国内开源)
图形(Graph)数据库:使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标
准的查询语言(SQL),因此进行数据库查询需要制定数据模型。
如:Neo4J, InfoGrid, Infinite Graph。
相比之下去掉了关系数据库的关系型特性,数据之间无关系,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。增强了架构可拓展性,高性能,数据库结构简单。
进入MySQL官网下载适合操作系统版本的压缩文件,然后将压缩文件解压到一个非中文的目录中。(由于路径识别的时候出现中文可能会报错)
可以下载5.7.24这个版本 ,原因是各个库支持的最完善且相对于最新版本更加的稳定。
方法一:MySQL具体安装方法可参见MySQL技能树,这里就不再赘述了。
方法二:通过phpstudy直接安装MySQL的,比较方便。phpstudy下载官网
1.cmd命令行启动(添加环境变量后):
在命令提示符窗口中运行net start mysql,此时,我们已经成功启动MySQL服务。
net start mysql
运行net stop mysql即可停止MySQL服务。
net stop mysql
可以通过运行mysqladmin -u root password 1234修改默认账户密码,这里的1234指默认管理员(即root账户)的密码。
mysqladmin -u root password 1234
在命令行中输入:mysql -uroot -p,按照提示输入密码 ,即登录成功。
登录命令中的参数:mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306);
退出MySQL时输入:exit或quit.
2.phpstudy启动图形化mysql界面:
输入用户名,密码,执行即可
也可以将mysql安装路径加入环境变量用命令行启动mysql,不过要先通过phpstudy启动mysql服务。
第一步:运行net stop mysql
第二步:运行mysqld -remove mysql
第三步:删除MySQL目录及相关的环境变量。
SQL是Structured Query Language的缩写,是一种用于管理关系型数据库的语言。它可以用于创建、修改和查询数据库中的数据,以及控制数据库的访问权限和安全性。
优点:因其简单、易学、灵活、高效等
被广泛应用于企业级应用、Web应用、移动应用等领域。
SQL语言包括数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL) 等多种类型,每种类型都有不同的语法和用途。(sql语句结尾以分号";"结束)
全名(Data Definition Language):
用来对进行数据库对象的创建,删除和修改的,所以DDL主包括create(创建),drop(删除),alter(修改),truncate (清空),show(查询),use(使用)
其中数据库对象包含数据库(database)、表(table)、列(column)、索引(index)、约束(constraint)、视图(view)、触发器(trigger)、存储过程(StoredProcedure)和函数(function).这里仅以库,表,列进行阐述。
SQL语句中关键词(如create,database,select等单词)建议使用时候都用大写,否则可能不能正常执行
查所有库名:show databases;
查某个库下所有表名:show tables;
查询表结构:desc 表名称;
拓:(select * from 表名;查询表中内容)
创建表:create table 表名称(
字段名1 数据类型,
字段名2 数据类型,
…
字段名n 数据类型 #这里是不需要加上,的
);
补充:
SQL创建表时可以定义多种数据类型,常见的数据类型包括:
1. 整数类型(INT、INTEGER):用于存储整数,可以指定长度和是否有符号。
2. 小数类型(DECIMAL、NUMERIC、FLOAT、DOUBLE):用于存储小数,可以指定精度和范围。
3. 字符串类型(CHAR、VARCHAR、TEXT):用于存储字符串,可以指定长度和字符集。
4. 日期时间类型(DATE、TIME、DATETIME、TIMESTAMP):用于存储日期和时间,可以指定格式和时区。
5. 布尔类型(BOOLEAN):用于存储真假值。
6. 二进制类型(BLOB、BINARY、VARBINARY):用于存储二进制数据,如图片、音频等。
需要注意的是,不同的数据库管理系统可能支持不同的数据类型,而且在定义数据类型时需要考虑数据的实际需求和存储
空间的限制。
使用(进入某个数据库):use 数据库名; (分号可以不加,还是建议加上养成习惯…)
关于MySQL对于数据库的重命名:
在MySQL中,尽管有RENAME命令,但是它并不支持重命名数据库1。如果需要更改一个数据库
的名称,可以使用下列步骤进行:
1. 创建一个新的数据库,并将源数据库中的数据导入到新数据库中。
2. 删除原数据库。
下面是具体的步骤:
1. 创建一个新的数据库:
CREATE DATABASE new_database_name;
2. 将原数据库中的数据导入到新数据库中:
USE new_database_name;
SOURCE /path/to/old_database.sql;
其中,将SOURCE后的路径改为源数据库的.sql文件所在路径。
3. 删除原数据库:
DROP DATABASE old_database_name;
通过以上步骤,可以把原数据库重命名为一个新的数据库名了。注意在重命名数据库的过程中,务必要先备份数据,新数据库的名称不要与已存在的数据库重名。该方法也适用于其他关系型数据库软件。
对表操作:
修改表名:
alter table 表名 rename to 新的表名;
增加一列:
alter table 表名 add 列名 数据类型;
修改数据类型:
alter table 表名 modify 列名 新数据类型;
修改列名和数据类型:
alter table 表名 change 列名 新列名 新数据类型;
删除列:
alter table 表名 drop 列名;
(修改表名时要注意命名规范,否则会报错,比如数字,下划线等的位置通常有要求)
(其他命令可以自行演示)
drop table 表名; drop database 数据库名;
删除表(判断表/数据库是否存在):
drop table if exists 表名; drop table if exists 数据库名;
truncake 表示清空,具体表现为把一个表结构摧毁然后重构,只剩表头。
使用语法
truncate的作用是清空表或者说是截断表,只能作用于表。truncate的语法很简单,后面直接跟表名即可。
例如: truncate table tbl_name 或者 truncate tbl_name 。执行truncate语句需要拥有表的drop权限,
从逻辑上讲,truncate table类似于delete删除所有行的语句或drop table然后再create table 语句的组合。
为了实现高性能,它绕过了删除数据的DML方法,因此,它不能回滚。尽管truncate table与delete相似,
但它被分类为DDL语句而不是DML语句。
用于对数据库中的数据进行增、删、改等操作,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。
用于从数据库中查询数据,包括SELECT等命令。
基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权,包括GRANT、REVOKE等命令。
创建表:create table 表名称(
字段名1 数据类型 (PRIMARY KEY AUTO_INCREMENT),
字段名2 数据类型,
…
字段名n 数据类型 #最后不需要逗号了
)(ENGINE INNODB);
如果在 MySQL 建表时设置了某一列为自增列,那么在插入数据时,可以不用指定该列的值,MySQL 会自动为该列生成一个唯一的自增值。例如,建立一个名为 users
的表,其中 id
列为自增列,可以按照以下方式插入数据:
INSERT INTO users (name, age) VALUES ('John', 25);
在这个例子中,我们没有指定 id
列的值,MySQL 会自动为其生成一个唯一的自增值。如果需要获取插入数据后的自增值,可以使用 LAST_INSERT_ID()
函数,例如:
INSERT INTO users (name, age) VALUES ('John', 25);
SELECT LAST_INSERT_ID();
这样可以获取到插入数据后 id
列的自增值。需要注意的是,只有在插入数据时才会生成自增值,如果直接修改该列的值,MySQL 不会自动为其生成自增值。
在 MySQL 中,自增值是由系统自动生成的,一般情况下是不能手动修改的。如果需要修改自增值的规则,
可以通过修改表结构来实现。具体来说,可以使用 `ALTER TABLE` 命令来修改自增值的起始值和步长。
例如,以下命令可以将 `users` 表的自增值起始值设置为 100,步长设置为 2:
ALTER TABLE users AUTO_INCREMENT = 100, AUTO_INCREMENT_INCREMENT = 2;
需要注意的是,修改自增值的规则可能会影响到已有数据的自增值,因此需要谨慎操作。如果需要修改已有数据的自增值,可以使用 UPDATE
命令手动修改。但是需要注意,手动修改自增值可能会导致数据不一致,因此需要谨慎操作。
虽然有些文章说可以用rename重命名,但是我试了他们的命令会报错… ↩︎