mysql基础-数据库表的管理-记录(四)
0x01
MySQL中字符大小写
1.SQL关键字及函数不区分大小写
2.数据库、表及视图名称的大小写区分与否取决于底层OS及FS
3.存储过程、存储函数及事件调度器的名字不区分大小写,但触发器区分大小写
4.表别名区分大小写
5.对字段中的数据,如果字段类型为binary类型,则区分大小写,非binary不区分大小写
创建数据库
create database
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[[DEFAULT] CHARACTER SET [=] charset_name 字符集 | [DEFAULT] COLLATE [=] collation_name 排序方式]
如果要修改数据库名 ---- 需要先备份数据库,之后删除数据库,再创建数据库,导入备份的数据
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
修改数据库的字符集和排序字符以及数据字典
ALTER {DATABASE | SCHEMA} [db_name]
[[DEFAULT] CHARACTER SET [=] charset_name 字符集 | [DEFAULT] COLLATE [=] collation_name 排序方式]
ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORY NAME
select database(); 查看当前所在库
create table tb1 (Name varchar(50) not null, Age tinyint unsigned not null, primary key(Name,Age)); --创建表并制定Name Age 都为主键
查看存储引擎,默认存储引擎innodb
show engines;
创建表的时候制定存储引擎
create table tb1 (Name varchar(50) not null, Age tinyint unsigned not null, primary key(Name,Age)) engine='myisam';
查看表的存储引擎
show table status like 'tb5'\G;
0x02
创建表
第一种方式
CREATE [TEMPORARY(临时表,保存在内存中)] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
(create_definition,...)
字段的定义:字段名、类型和类型修饰符
键、索引和约束
primary key 主键,unique key 唯一建,foreign key 外键,check 校验
{index|key} [table_options] engine [=] engine_name 引擎 AUTO_INCREMENT [=] value 指定AUTO_INCREMENT的起始值
[DEFAULT] CHARACTER SET [=] charset_name 指定默认字符集
CHECKSUM [=] {0 | 1} 是否使用校验值
[DEFAULT] COLLATE [=] collation_name 排序规则
COMMENT [=] 'string' 注释
DELAY_KEY_WRITE [=] {0 | 1} 是否启用键延迟写入 ---可以在性能上有一定的调优作用
ROW_FORMAT [=] {DEFAULT(默认)|DYNAMIC(动态)|FIXED(静态)|COMPRESSED(压缩)|REDUNDANT(冗余)|COMPACT(紧致)} 表格式
TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}] 表空间
MyISAM表,每个表有三个文件,都位于数据库目录中
tb_name.frm:表结构定义
tb_name.MYD:数据文件
tb_name.MYI:索引文件
InnoDB表,有两种存储方式
1.默认:每表有一个独立文件和一个多表共享的文件
tb_name.frm:表结构的定义,位于数据库目录中
ibdata1 ...... :共享的表空间文件,默认位于数据目录(datadir指向的目录)中 有个弊端,在数据庞大,数据库多,表多的情况下,会造成此文件很大,给备份带来麻烦
2.独立的表空间文件:(优)
每表有一个表结构文件tb_name.frm
一个独立的表空间文件 tb_name.ibd
show global variables like 'innodb%';

应该修改innodb_file_per_table为ON
set global innodb_file_per_table=ON
不会立即生效,退出mysql重新登录即可,让其永久生效 就要编辑配置文件 vim /etc/my.cnf 找到[mysqld] 添加即可
第二种方式:创建表(复制表数据)
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
select_statement
create table tb6 select * from tb1; ----- 创建一张表tb6 并复制tb1表的所有数据及字段,但是不能复制主键 等其他的修饰符
第三种方式:创建表(复制表结构)
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name)
create table tb7 like tb1; ---- 创建一张表,复制tb1的结构,但是不复制tb1的数据
删除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]
修改表:
ALTER TABLE tbl_name
[alter_specification [, alter_specification] ...]
修改字段定义:
插入新字段:
ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]
实例:
alter table tb6 add Age tinyint unsigned not null; ----添加一个Age字段
alter table tb6 add Gender enum('m','f') not null default 'm' after Name; ---添加一个Gender字段,指定插入在Name字段后面
alter table tb6 add Sex enum('n','v') not null default 'n' first; --- 添加一个Sex字段,指定插入到第一个位置
删除字段
DROP [COLUMN] col_name
修改字段
修改字段名称
CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
实例:alter table tb6 change Name Hname char(30) not null; ----将原来字段名称Name修改为Hname
修改字段类型及属性等
MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
实例: alter table tb6 modify Gender enum('m','n') not null after ID; ----修改了字段Gender的属性--即去掉了之前的default值,并制定插入到字段ID之后
创建索引:
实例:alter table tb6 add index (Hname); -- 创建的时候可以不指定索引的名字
查看索引 : show indexes from tb6;
表改名:
rename to|as new tb_name
实例:rename table tb6 to tb8; or alter table tb8 rename to tb6;
修改存储引擎:
engine =
实例: alter table tb6 engine=myisam; 查看: show table status like 'tb6'\G;
指定排序标准的字段
ORDER BY col_name [, col_name] ...
mysql基础-数据库表的管理-记录(四)的更多相关文章
- mysql基础-数据库表简单查询-记录(五)
0x01 MySQL的查询操作 单表查询:简单查询 多表查询:连续查询 联合查询 选择和投影 投影:挑选要符合的字段 select ...
- mysql基础篇--表的管理
表的创建 常见的数据类型 数值型: 整型 tinyint.smallint.mediumint.int/integer.bigint 特点: 1.如果不设置无符号还是有符号,默认是有符号,如果想设置无 ...
- MySQL基础之表的管理
添加和删除字段操作 添加字段 alter table tbl_name add 字段名称 字段属性 [完整性约束条件] [first|after 字段名称之后]; 删除字段 alter table t ...
- MySQL基础知识:启动管理和账号管理
整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...
- SQL Server 数据库表的管理
上一篇文章简单梳理了一下SQL Server数据库的安装和基本操作,这篇文章主要讲述一下数据库表的管理 一.数据库的创建 有关数据库的创建有两种方式,一种是通过视图创建,第二种就是通过T-SQL语句来 ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- MySQL查看数据库表容量大小
本文介绍MySQL查看数据库表容量大小的命令语句,提供完整查询语句及实例,方便大家学习使用. 1.查看所有数据库容量大小 select table_schema as '数据库', sum(table ...
- MySQL更改数据库表的存储引擎
MySQL更改数据库表的存储引擎 1.查看表的原存储引擎 show create table user; 'user', 'CREATE TABLE `user` (\n `id` int(11) N ...
- MySQL中将数据库表名修改成大写的存储过程
原文:MySQL中将数据库表名修改成大写的存储过程 MySQL中将数据库表名修改成大写的存储过程 创建存储过程的代码: DROP PROCEDURE IF EXISTS uppercaseTablen ...
随机推荐
- flex和flex:1的含义
一.flex详解 flex可以参考阮一峰老师的flex布局教程,很详细看完啥都懂了 链接:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.htm ...
- webpack4多页应用HTML按需添加入口依赖chunk【html-webpack-plugin & html-inline-entry-chunk-plugin】
在webpack4中使用splitChunkPlugin时,根据需要将公共代码拆分为多个依赖后,需要在创建htmlWebpackPlugin时候按需引入对应入口文件依赖的chunk.但是html-we ...
- 终于明白了vue使用axios发送post请求时的坑及解决原理
前言:在做项目的时候正好同事碰到了这个问题,问为什么用axios在发送请求的时候没有成功,请求不到数据,反而是报错了,下图就是报错请求本尊 vue里代码如下: this.$http.post('/ge ...
- Js运算符和逻辑结构
1.运算符 (1)赋值运算符 = += -= *= /= %= (2)三目运算符 一目 一个运算符连接一个数据 -- ++ ! 二目 一个运算符连接两个数据 + - * / ...
- web项目——javax.servlet.ServletException: Circular view path [registerForm]
报错: 控制台输出: 三月 21, 2019 10:12:32 上午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: N ...
- 循序渐进VUE+Element 前端应用开发(1)--- 开发环境的准备工作
之前一直采用VS进行各种前端后端的开发,随着项目的需要,正逐步融合纯前端的开发模式,开始主要选型为Vue + Element 进行BS前端的开发,后续会进一步整合Vue + AntDesign的界面套 ...
- shiro的使用详解~
在家无聊复习一下shiro 打开了之前的项目,由于lombok插件安装不了,不知道idea抽什么风所以get,set方法报错了,将就一下 只看shiro的使用,配置在shiro分类中有 登录方法 pa ...
- Spring基础之IOC
一.ioc能解决什么问题 1.Spring是什么 spring是以ioc和aop为核心,能整合第三方框架和类库的企业级应用开源框架. 2.程序的耦合问题 例子:Driver类必须存在,编译才通过,Jd ...
- [CSharp]传一个包含多个属性的对象,只改变其中个别属性值的方法
需求 假如有这么一个需求,一个对象Person内的属性设置外包给了另外一个类Options, 而要设这个Person对象的属性,就必须传一个Options实例, 但又不能每个属性重新设一遍,只设要修改 ...
- Java 获取IP工具类、Vo类整理记录
前言 日常开发中,获取ip是常用的功能,本文记录如何在Java中获取本机外网ip.地理位置,访问用户的外网ip.地理位置,以及指定外网ip的地理位置: 代码编写 1.获取访问用户外网ip,我们从访问者 ...