数据库和表的增删查改
一、数据库
1.创建数据库
方法一:
sql
create database 数据库名(db_name);
方法二:
if not exists: 表示不存在,如果该数据库不存在就删除
sql
create database if not exists 数据库名(db_name);
补充: 创建数据库本质就是在 /var/lib/mysql 创建一个目录
为什么呢?
原因:配置文件中默认的创建路径就是 /var/lib/mysql
数据库字符集和校验集
在创建数据库时,每个数据库都有一个对应的字符集和校验集
-
字符集的作用: 在向数据库写入内容时,按什么编码写入
-
校验集的作用: 在查找数据库中的内容时,按什么校验规则查找
查看mysql支持的字符集
sql
show charset;
查看mysql支持的校验集
sql
show collation;
按指定字符集和校验集创建数据库
sql
create database 数据库名 charset=utf8 collate utf8_general_ci;
字符集:gbk 校验集: gbk_chinese_ci;
sql
create database 数据库名 charset=gbk collate gbk_chinese_ci;
校验规则对数据库的影响
不区分大小写
创建一个数据库,校验规则使用 utf8_general_ci (不区分大小写)
sql
create database test1 collate utf8_general_ci;
进入test1数据库内部
sql
use test1
创建表
sql
create table person(name varchar(20));
向表中插入数据
sql
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
在表中查找一个数据,结果:
区分大小写
创建一个数据库,校验规则使用 utf8_bin (区分大小写)
sql
create database test2 collate utf8_bin;
进入test2数据库内部
sql
use test2
创建表
sql
create table person(name varchar(20));
向表中插入数据
sql
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
在表中查找一个数据,结果:
可以发现它们得出的结果是不同的,不区分大小写得出了两个答案,区分大小写以后得出了一个答案。再根据排序看看结果如何:
sql
select * from 表名 order by name
不区分大小写:
区分大小写:
2.删除数据库
方法一:
sql
drop database 数据库名(db_name);
方法二:
if exists : 表示存在的意思,就是说如果该数据库存在就删除
sql
drop database if exists 数据库名(db_name);
3.查看数据库
sql
show databases 数据库名(db_name)
4.显示创建语句
sql
show create database 数据库名
5.查看当前所在的数据库
sql
select database();
6.修改数据库的字符集和校验集
sql
alter database 数据库名 charset=字符集名 collate 校验集名
7.数据库的备份和恢复
数据库的备份:
- 备份单个数据库
- 3306:表示端口号
- test.sql :表示文件名,后缀为sql,文件名可更改
sql
mysqldump -u root -P 3306 -p 密码 -B 数据库名 > test.sql(数据库存放路径);
- 备份多个数据库
sql
mysqldump -u root -p -B 数据库名1 数据库名2 > 数据库存放路径;
- 备份数据库中的某些表
sql
mysqldump -u root -p 数据库名 表名1 表名2 > test.sql;
补充:如果备份一个数据库时没有带上-B参数,那么在恢复数据库时,需要先创建空数据库,然后使用数据库,在使用source来还原
数据库的还原:
在mysql服务器中,调用下面指令
sql
source 要还原文件的路径;
8.查看连接情况
sql
show processlist
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况
二、表
1.创建表
sql
create table 表名 (
field1 datatype,
field1 datatype,
field1 datatype
)character set 字符集 collate 校验规则 engine 存储引擎;
说明:
-
field:列名
-
datatype:列的类型
-
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
-
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
示例:
sql
create table if not exists usr1(
name varchar(20) comment '用户名',
password char(32) comment '用户名',
birthday date comment '用户的生日'
)character set utf8 collate utf8_general_ci engine MyIsam;
说明:存储引擎不同,创建的表结构不同。
2.查看表结构
查看表结构
sql
desc 表名;
查看创建表时的语句
sql
show create table 表名;
3.修改表
修改表名
sql
alter table 原表名 rename to 需要的表名
向表中插入数据
sql
insert into 表名 values(数据1,数据2,数据3,....);
在表中新增一列
sql
alter table 表名 add 列名 varchar(128) comment '描述' after birthday;
说明:
- varchar(128) : 表示类型大小,根据情况自己定义
- comment '描述' : 这个描述可自行确定。
- after birthday :表示在birthday这列的后面插入一列
修改表中某列的属性
sql
alter table 表名 modify 列名 属性;
改的属性会将原属性覆盖
删除表中某一列
sql
alter table 表名 drop 列名;
删除以后那么这一列就没了,想找也找不到了,所以删除要慎重考虑
更改某一列的名称
sql
alter table 表名 change 原列名 需要的列名 新的属性;
说明:使用change 时,该列的属性全都会被改,所以如果我们需要保持原属性不变,就输入原属性的值即可
4.表的删除
语法格式:
sql
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
示例:
sql
drop table 表名;
注意:表删除以后就没了,慎重考虑