系统数据库

  • information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
  • mysql:核心数据库,里面包含用户、权限、关键字等信息。不可以删除
  • performance_schema:mysql 5.5版本后添加的新库,主要收集系统性能参数,记录处理查询请求时发生的各种事件、锁等现象
  • sys : mysql5.7版本新增加的库,通过这个库可以快速的了解系统的元数据信息,可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助

一.数据库操作

1.创建数据库

#语法: CREATE DATABASE db_name charset utf8;

  

2.查看数据库

#查询当前用户下所有数据库
show databases; #查看创建数据库的信息
show create database db_name; #查询当前操作所在的数据库名称
select database();

3.选择数据库

USE db_name;

4.删除数据库

DROP DATABASE db_name;  #注意:drop为永久删除

5.查看默认储存引擎

SHOW ENGINES(用于查看系统默认支持的引擎)

innodb引擎

innodb事务型数据库首选引擎,支持事务安全表(acid),支持行锁定外键。mysql5.5之后作为默认储存引擎。

6.查看库的引擎

SHOW VARIABLES LIKE db_name;

二、数据表基本操作

表(TABLE) 是一种结构化的文件,可用来存储某种特定类型的数据。表中的一条记录有对应的标题,标题称之为表的字段。

1.创建数据表

CREATE TABLE 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
)ENGINE=innodb DEFAULT CHARSET utf8;
create table student(
id int not null auto_increment primary key,
name varchar(250) not null,
age int not null,
sex enum('男','女') not null default '男',
salary double(10,2) not null
)engine=innodb default charset=utf8; ps: not null :表示此列不能为空
auto_increment :表示自增长,默认每次增长+1
注意:自增长只能添加在主键或者唯一索引字段上 primary key :表示主键(唯一且不为空)
engine =innodb :表示指定当前表的存储引擎
default charset utf8 :设置表的默认编码集

创建表

主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
create table tb1(
nid int not null auto_increment primary key,
num int null
)

create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)

主键

使用主键约束

概念:主键又称主码,是表中一列或多列的组合,主键约束(primary key constraint)要求主键列的唯一数据,并且不允许为空。

作用:1.结合外键可以加快查询速度;
2.主键和记录之间关系如同人和身份证的关系是一一对应的。 1.1单子段主键(字段名 数据类型 PRIMARY KEY[默认值]) (1)定义列的同时定义主键
(2)定义完所有列后定义主键 1.2多字段联合主键(PRIMARY KEY(字段1,字段2,...字段n);) 假设表中间没有主键id,为了唯一确定一个员工,可以把姓名和部门号联合起来作为主键使用。 1.3使用外键约束 外键用来在两个表数据间建立链接,它可以是一列也可以是多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个外键可以为空值,若不为空值,则每个外键必须于另一个表主键某个值。 主表(父表):主键所在表 从表(子表):外键所在表 CONSTRAONT 外键名 FORENIG KEY 字段名 REFERENCES 主表名 主键列 1.4使用非空约束(字段名 数据类型 NOT NULL;) 字段值不能为空 1.5使用唯一性约束(字段名 数据类型 UNIQUE;) 要求唯一,允许为空,但是只能有一个空值。 1.6使用默认约束(字段名 数据类型 DEFAULT 默认值) 指定记录默认赋值 1.7使用属性值自动增加(字段名 AUTO_INCREMENT;) 注意:1.一个表只能有一个字段使用AUTO_INCREMENT,
2.且该字段必须为主键的一部分.
3.约束的字段可以是任何数据类型

主键补充

自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
create table tb1(
nid int not null auto_increment primary key,
num int null
)

create table tb1(
nid int not null auto_increment,
num int null,
index(nid)
)
注意:1、对于自增列,必须是索引(含主键)。
2、对于自增可以设置步长和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10; show global variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;

自增

2.查询表数据

#查看数据库中的数据表
show tables; #查询表数据
select 字段(多个以","间隔) from 表名;
例: select name,sex from student;
或者: select * from student; #查看表结构
desc 表名;
例: desc student; #查看表的详细语句结构
show create table student;

3.修改表结构

#添加表字段
alter table 表名 add 字段名 类型 约束 默认值;
例如: alter table student add age int not null default 0 after name;
ps: after name 表示在name字段后添加字段 age.
first为头部 #修改表字段
方式一: alter table 表名 modify 字段名 类型 约束 默认值;
方式二: alter table 表名 change 旧字段 新字段 类型 约束 默认值;
ps:二者区别:
change 可以改变字段名字和属性
modify只能改变字段的属性 #增加列(字段)
 alter table table_name ADD [column] 列名 类型 [完整性约束条件] [first | after 字段名]; #修改一列类型
 alter table table_name MODIFY 列名 类型 [完整性约束条件][first|after 字段名; #修改列名
 alter table table_name CHANGE [column] 列名 新列名 类型 [完整性约束条件] [first|after 字段名]; #删除一列
alter table table_name DROP [column] 列名; #删除表字段 :
alter table 表名 drop 字段名; #更新表名称:
rename table 旧表名 to 新表名; #更改表的储存引擎
ALTER TABLE 表名 ENGINE =更改后的储存引擎名; #删除表的外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; #修该表所用的字符集
 ALTER TABLE table_name CHARACTER SET utf8; 或者 ALTER TABLE table_name CHARSET utf8;

  

#添加主键 :
alter table 表名 add primary key(字段,"多个","间隔"); #移除主键 :
alter table 表名 drop primary key; ps:如果主键为自增长,以上方式则不被允许执行,请先去掉主键自增长属性,然后再移除主键
alter table 表名 modify id int not null,drop primary key

更新主键操作

#添加外键:
alter table 从表 add CONSTRAINT fk_test foreign key 从表(字段) REFERENCES 主表(字段); #移除外键:
alter table 表 drop foreign key 外键名称; ps:如果外键设置后想修改,那么只能是先删除,再添加

外键更新操作

#修改默认值 :
alter table 表 alter 字段 set default 100;
#删除默认值 :
alter table 表 alter 字段 drop default;

默认值更新操作

4.删除表

#删除表
drop table 表名; DROP TABLE IF EXISTS 表名称 这会判断表是否存在 #清空表
truncate table 表名;

5.复制表

#只复制表结构和表中数据
CREATE TABLE tb2 SELECT * FROM tb1;
ps:主键自增/索引/触发器/外键 不会 被复制 #只复制表结构
create table tb2 like tb1;
ps: 数据/触发器/外键 不会被复制 

MySQL 之 库操作,表操作的更多相关文章

  1. MySQL之库、表操作

    一.库操作 创建库 create database 库名(charset utf8 对库的编码进行设置,不写就用默认值) 库名可以由字母.数字.下划线.特殊字符,要区分大小写,唯一性,不能使用关键字, ...

  2. {MySQL的库、表的详细操作}一 库操作 二 表操作 三 行操作

    MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...

  3. MySQL的库、表的详细操作

    目录 MySQL的库.表的详细操作 一 库操作 二 表操作 MySQL的库.表的详细操作 本节目录 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset ...

  4. day 36 MySQL的库、表的详细操作

    MySQL的库.表的详细操作   MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset u ...

  5. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  6. Mysql查询库、表存储量(Size)

    Mysql查询库.表存储量(Size) 1.要查询表所占的容量,就是把表的数据和索引加起来就可以了. SELECT SUM(DATA_LENGTH) + SUM(INDEX_LENGTH) FROM ...

  7. 第八章| 1. MySQL数据库|库操作|表操作

    1.初识数据库 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个 专门的处理软件,这就是mysql等数据库管理软件的 ...

  8. MySQL的库、表详细操作

    本节目录 一.库操作 二.表操作 三.行操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 可以由字母.数字. ...

  9. mysql 库与表操作

    1. 库操作 1.1. 创建数据库 语法规则:create database 库名; CREATE DATABASE dt55; 在创建库时,希望指定编码语法:create database 库名 c ...

  10. MySQL DDL-对库和表的操作

    #DDL /* 数据定义语言 库和表的管理 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建:create 修改: alter 删除:drop */ 一.库的管理 #1.库的创建 ...

随机推荐

  1. 防火墙禁ping:虚拟机ping不通主机,但主机可以ping虚拟机

    现象:刚装的centos6.6,配置好网络却发现ping不通主机,主机却ping通虚拟机: 解决方法: 1.最简单的方法就是:关闭防火墙.但一直关闭防火墙也不是个办法,会遇到很多安全问题,建议下一个方 ...

  2. GIT的前世今生

    在重点介绍GIT的一些操作之前,我们首先来说一说GIT的前世今生,了解整个版本控制的变迁能够让我们知道该如何去选择这些工具,另外通过这些技术的变迁也能够让我们对现在的技术有着更加深入的理解,在正式介绍 ...

  3. js外部调用layui.use中的函数的写法

    layui模块化的写法固然不错,但也有让人不适应的一些地方 外部调用函数的写法就让人不太舒服 需要在函数名前面加上window这个前缀,就不太舒服 补充:window前缀,是全局变量的声明方式 如下: ...

  4. mybatis:数据持久层框架

    mybatis是一个持久层的框架,是Apache下的顶级项目. mybatis托管到goolecode下,再后来托管到GitHub下:https://github.com/mybatis/mybati ...

  5. vuex2.0 基本使用(1) --- state

    Vuex 的核心是 store, 它是一个通过 Vuex.Store 构造函数生成的对象.为什么它会是核心呢?因为我们调用这个构造函数创建store 对象的时候,给它传递参数中包装了state, mu ...

  6. FPGA中亚稳态相关问题及跨时钟域处理

    前言 触发器输入端口的数据在时间窗口内发生变化,会导致时序违例.触发器的输出在一段时间内徘徊在一个中间电平,既不是0也不是1.这段时间称为决断时间(resolution time).经过resolut ...

  7. 【BZOJ3813】【清华集训2014】奇数国 线段树 数学

    题目描述 给你一个长度为\(n\)的数列,第\(i\)个数为\(a_i\).每个数的质因子都只有前\(60\)个质数.有\(q\)个询问,每次给你\(l,r\),求\(\varphi(\prod_{i ...

  8. npm config 删除变量

    问题 安装npm时,使用npm config set 命令重新设置了变量,但是设置变量时少了个空格,设置错了.使用npm config ls -l 查看环境变量 添加错的这一个,应该如何删除? 解决 ...

  9. Hdoj 2045.不容易系列之(3)—— LELE的RPG难题 题解

    Problem Description 人称"AC女之杀手"的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多"Cole"(LELE的粉丝,即"可乐 ...

  10. 【BZOJ2125】最短路(仙人掌,圆方树)

    [BZOJ2125]最短路(仙人掌,圆方树) 题面 BZOJ 求仙人掌上两点间的最短路 题解 终于要构建圆方树啦 首先构建出圆方树,因为是仙人掌,和一般图可以稍微的不一样 直接\(tarjan\)缩点 ...