MySQL之简介及基础操作
Posted 嗯我想想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL之简介及基础操作相关的知识,希望对你有一定的参考价值。
mysql
简介
- MySQL是一种关系型数据库管理系统,是一种开源软件。
- 由瑞典MySQL AB公司开发,2008年1月16号被Sun公司收购。2009年,Sun又被Oracle收购。
- MySQL软件采用双授权政策,分为社区版和商业版。由于体积小、速度快、总体拥有成本低,尤其是开放源码特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配php和Apache可组成良好的开发环境。
- MySQL能够工作在众多不同的平台上。
- 默认端口:3306
- 默认用户:root
- 默认字符集:UTF-8
常用命令
启停MySQL
连接MySQL
mysql -uroot -p
这里u代表user用户,后面跟的root是MySQL的默认用户,p代表password密码,这种连接方式不会显示密码
也可以后面直接跟上所用密码
mysql -uroot -proot
这种方式就会显示密码
停止MySQL
exit;
其实exit加不加分号都可以的,但是笔者建议加分号,养成MySQL语句的习惯,注意分号一定要是英文的,否则会报错!!!(下图是不带分号的,只是为了验证QWQ)
库操作database
创建数据库
create databaese <数据库名> [库选项];
库选项:数据库的相关属性
字符集:charset 字符集,代表着当前数据库下的所有表存储的数据默认指定的字符集(如果当前不指定,那么采用DBMS默认的,现在默认的基本都是UTF-8)
e.g.: create database mydatabase charset gbk
校对集:collate
显示数据库
显示全部数据库
show databases;
MySQL默认带有的4个数据库
- information_schema:这个数据库保存了mysql服务器所有数据库的信息。比如数据库的名、数据库的表、访问权限、数据库表的数据类型,数据库索引的信息等等。
- mysql:mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
- performance_schema:主要用于收集数据库服务器性能参数,可用于监控服务器在一个较低级别的运行过程中的资源消耗、资源等待等情况。链接:performance_schema全方位介绍
- sys:库中所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。链接: MYSQL的SYS数据库
显示部分数据库
可以指定需要查看数据库的条件
show databases like '匹配模式';
- _:匹配当前位置单个字符
- %:匹配指定位置多个字符
e.g.
获取以my开头的全部数据库:'my%';
获取以m开头,后面的第一个字母不确定,最后为database的数据库: 'm_database';
获取以database结尾的数据库:'%database';
显示数据库创建语句
show create database <数据库名>;
看到的指令并非原始指令,而是已经被系统加工过的。
选择数据库
use <数据库名>;
- 成功后出现 Database changed 表示当前已经进入到指定的数据库环境
- 为什么要选择数据库?因为数据是存储在数据表中的,而数据表又存在数据库下。如果要操作数据,那么必须进入到对应的数据库才行
修改数据库
通常不怎么用,尤其是数据库中有数据后更不能用。
修改数据库字符集
alter database <数据库名> charset = <字符集>;
- 是否可以修改数据库名字?不可以的,5.5版本之前可以,之后的版本是不行的
- 一旦修改成功,那么对应的opt文件中就会体现
删除数据库
drop database <数据库名>;
- 删除虽简单,但是切记要做好安全操作:确保里面数据没有问题不需要使用了
- 删除数据库之后,对应的存储数据的文件夹也会被删除(opt文件也被删除)
表操作table
必须先放到对应的数据库下,有两种方式可以将表挂入到指定的数据库下:
- 在数据表名字前面加上数据库名字,用"."连接即可:数据库.数据表
- 在创建表之前,先进入到某个具体的数据库即可,需要先:
ues <数据库名>;
创建数据表
普通创建表
create table <表名> (字段名 字段类型(num) [字段属性],字段名 字段类型(num) [字段属性],...) [表选项];
num表示不能超过的位数
表选项
- engine:存储引擎,MySQL提供的具体存储数据的方式,默认是innodb(5.5以前默认是myisam)
- charset:字符集,只对当前表有效,默认是utf-8(级别比数据库高)
- collate:校对集
复制已有表结构
通常不会用到
create table <新表名> like <原表名>;
- 从已经存在的表复制一份(只复制结构,如果原表中有数据不复制)
- 只要使用数据库.表名,就可以在任何数据库下访问其他数据库的表名
显示数据表
每当一张数据表创建,那么就会在对应的数据库下创建一些文件(与存储引擎有关)
显示所有表
show tables;
显示部分匹配表
show tables like '匹配模式';
_:匹配当前位置单个字符
%:匹配指定位置多个字符
显示表结构
本质含义:显示表中所包含的字段信息(名字,类型,属性等),下面三种方式效果相同
describe <表名>;
desc <表名>;(最常用,因为比较短)
show columns from <表名>;
Field表示字段名字
Type表示字段类型
Null表示值是否允许为空,yes表示允许
Key表示索引
Default表示默认值,null表示默认为空
Extra表示额外的属性
显示表创建语句
查看数据表创建时的语句:此语句看到的结果已经不是用户之前输入的,已经被系统加工过了。
show create table <表名>;
补:MySQL中有多种语句结束符
- \\g与;所表示的效果是一样的,字段在上排横着,下面跟对应的数据
- \\G字段在左侧竖着,数据在右侧竖着(有时候会比较方便)
修改表结构
修改表名
rename table <旧表名> to <新表名>;
数据库中数据表名字通常有前缀:取数据库的前两个字母加上下划线
修改表选项
表选项:engine,charset和collect
alter table <表名> <表选项> [=] 值;
注意:如果数据库已经确定了,里面有很多数据了,不要轻易修改表选项(字符集修改影响相对较小)
新增字段
第一种方式
alter table <表名> add [column] <新字段名> <列类型> [列属性] [位置first/ after 字段名];
默认是加到表的最后
- first直接使用,表示加在该表最前面
- after要跟具体的字段名,表示加在该具体字段的后面一列 修改字段名
第二种方式
alter table <表名> change <旧字段名> <新字段名> <字段类型> [列属性] [新位置];
必须跟上对应的字段类型,就算不变也要加上
修改字段类型
alter table <表名> modify <字段名> <新类型> [新属性] [新位置];
删除字段
alter table <表名> drop <字段名>;
删除表结构
drop table <表名>[,表名2...];
可以同时删除多个数据表
数据操作
插入数据
含义:将数据以SQL的形式存储到指定的数据表(字段)里面
第一种方式:向表中指定字段插入
insert into <表名> [(字段列表)] values(对应字段列表);
- 后面values中对应的值列表只需要与前面的字段列表相对应即可(不一定与表结构完全一致)
- 字段列表并不一定非要有所有表中字段
第二种方式:向表中所有字段插入
insert into <> values (对应表结构);
值列表必须与字段列表一致
查询数据
查询表中全部数据
select * from <表名>;
**是一个通配符,表示匹配所有的字段
查询表中部分字段
select <字段列表1,字段列表2...> from <表名>;
简单条件查询数据
select <字段列表>/* from <表名> while <字段名> <比较符号> <值>;
- 比较符号为:>,<,>=,<=,=
- MySQL中没有==符号,就是普通的=符号
删除数据
delete from <表名> [where 条件];
如果没有where条件,意味着系统会自动删除该表所有数据,所以一定要慎用where条件!
修改数据
通常是修改部分字段数据
update <表名> set <字段名1> = <新值1>[,<字段名2> = <新值2>...] [where 条件];
如果没有where条件,那么表中对应的那个字段都会被修改成统一值,如下图所示
以上是关于MySQL之简介及基础操作的主要内容,如果未能解决你的问题,请参考以下文章
网络安全从入门到精通 (第二章-2) 后端基础SQL—MySQL数据库简介及SQL语法