mysql基础入门(开启mysql服务,命令行客户端工具和图形界面化工具workbench的使用)
mysql数据库的基本操作包括数据库、数据表和数据的操作。
1)数据库的操作
1.创建数据库
create database [if not exists]数据库名 [库选项];
注意:上述语法中的数据库名由字母、数字和下划线组成;如果创建的数据库已经存在,则程序会报错,加上if not exists表示指定的数据库不存在时执行创建操作,否则忽略,不会报错;库选项用于设置此数据库的相关特性,如字符集charset,校对集collate;"[ ]"括起的选项表示可选参数。
2.查看数据库
-- 查看服务器下所有的数据库
show databases;
-- 查看指定数据库的创建信息
show create database 数据库名;
-- 查看当前使用的数据库
select database();
图中选择的数据库是mysql安装时自动创建的,其中
- information_schema:mysql服务器的数据字典,用于保存数据表和库的结果信息
- performance_schema:性能字典,用于保存全局变量等
- mysql:主要负责mysql服务器需要使用的控制和管理信息,如用户权限关系等
- sys:包括存储过程,自定义函数等信息
3.选择数据库
use 数据库名;
4.删除数据库
drop database [if exists] 数据库名;
2)数据表的操作
1.创建表
# temporary表示临时表,仅在当前会话可见,会话关闭时会自动删除
create [temporary] table [if not exists] 表名(
字段名 字段类型 [字段属性...]
)[表选项];
- 字段名指的是数据表的列名;
- 字段类型设置字段中保存的数据类型(详细介绍见→mysql数据类型
- 可选项字段属性指的是字段的某些特殊约束条件(详细介绍见→完整性约束)
- 可选项表选项用于设置表的相关特性(eg 存储引擎 engine,字符集charset ,校对集collate)(详细介绍见→存储引擎,字符集与校对集)
注意:在创建数据表之前需要用use 数据库名;
指定操作的是哪个数据库,否则会抛出错误。当然如果不使用该命令,在创建数据表时将“数据表名”改成“数据库名.数据表名”就可以在指定的数据库下创建数据表。
2.查看表
1)查看数据库下已有的数据表
show tables [like 匹配模式];
# 匹配模式符有两种:%和_,前者匹配任意长度的字符,后者匹配一个字符
2)查看数据表的创建语句
show create table 表名;
3)查看数据表的结构
desc|describe|explain 表名;
desc|describe|explain 表名 字段名;
#省略full和desc一样,不省略可以获得更多的信息,如字段的权限,comment等
show [full] columns from 表名 [from 库名];
show [full] columns from 库名.表名;
3.删除表
drop [temporary] table [if exists] 表名1[,表名2,...];
4.修改表
alter table 表名...;
1)修改表名称
-- 语法一
alter table 旧表名 rename as/to 新表名;
-- 语法二
rename table 旧表名1 to 新表名1[,旧表名2 to 新表名2,...];
2)修改表选项
alter table 表名 表选项[=]值;
3)修改表结构——字段名,字段类型,字段属性
可修改字段名,字段类型,字段属性
alter table 表名 change [column] 旧字段名 新字段名 字段类型 [字段属性];
-- 注意字段类型不能省略,即使与旧字段类型一样
可修改字段类型,字段属性
alter table 表名 modify [column] 字段名 字段类型 [字段属性]
4)修改表结构——修改字段位置
alter table 表名 modify [column] 字段名1 字段类型 [字段属性]
[first| after 字段名2];
5)修改表结构——增加字段
alter table 表名 add [column] 字段名 字段类型 [after 字段名2 | first];
alter table 表名 add [column] (字段1 字段类型1,字段名2 字段类型2,..);
6)修改表结构——删除字段
alter table 表名 drop [column] 字段名;
补充:
表和字段的引用方式有两种:绝对引用和相对引用
- 绝对引用:数据库名.表名(.字段名)
- 相对引用:表名.(字段名)
3)数据的操作
1.添加数据
-- 为所有字段插入记录时,可以省略字段,值的顺序与表的全部字段相对应
insert into 表名 values(值1,值2,...);
-- 值与给定的字段相对应
insert into 表名(字段1,字段2,...) values(值1,值2,...);
-- 一次插入多条记录
insert into 表名[(字段列表)] values(值列表)[,(值列表),...];
-- 特殊地,当主键设置自增或者默认值,其他非主键字段设置了默认值,则可以
insert into 表名 values();
2.修改数据
update 表名 set 字段1=值1[,字段2=值2,...]
[where 条件表达式];
3.删除数据
delete from 表名 where 条件表达式;
truncate [table] 表名;
delete与truncate的主要区别:
- 实现方式不同
truncate本质上先执行删除(drop)数据表的操作,然后再根据表结构文件重新创建数据表的方式实现数据清空;delete是逐条删除表中的记录。 - 执行效率不同
对于大型数据表,truncate的效率更高,数据量小时,delete更快 - 对auto_increment字段的自增值影响不同
truncate之后,自增值从默认的初始值重新开始,delete不影响自增值 - 删除数据的范围不同
truncate只能清除所有记录,delete可以通过where 条件表达式删除符合条件的记录 - 返回值含义不同
truncate的返回值一般没有意义,delete则返回符合条件被删除的记录数 - 所属sql语言的不同组成成分
truncate通常看作DDL,delete属于DML
4.查询数据→sql查询