数据库和表的基本操作

数据库基础知识

创建数据库

CREATE DATABASE 数据库名称 ;

查看数据库(显示数据库名列表)

SHOW DATABASES ;

查看某数据库信息(显示创建的信息)

SHOW CREATE DATABASE 数据库名称 ;

修改数据库编码

ALTER DATABASE 数据库名称
DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin ;

删除数据库

DROP DATABASE 数据库名称 ;

数据类型

整数类型
数据类型 字节数 无符号数取值范围 有符号数取值范围
TINYINT 1 0~255 -128~127
SAMLLINT 2 0~65535 -32768~32767
MEDIUMINT 3 0~16777215 -8388608~8388607
INT 4 0~4294967295 -2147483648~2147483647
BIGINT 5 0~18446744073709551615 -9223372036854775808~9223372036854775807
浮点数类型和定点数类型

单精度浮点数类型FLOAT,4字节;

双精度浮点类型DOUBLE,8字节;

定点数类型DECIMAL(D,B),M+2字节,M表示数据的长度,D表示小数点后的长度。

日期与时间类型
数据类型 字节数 取值范围 日期格式 零值 补充
YEAR 1 1901~2155 YYYY 0000 字符串格式'0'表示2000,数字格式0表示0000
DATE 4 1000-01-01 YYYY-MM-DD 0000-00-00 使用CURRENT_DATE或者NOW()表示当前系统日期
TIME 3 -838:59:59~838:59:59 HH:MM:SS 00:00:00 可以输如'D HH:MM:SS'字符串,D表示0~34之间的值,相当于D*24+HH .使用CURRENT_DATE或者NOW()表示当前系统日期
DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00 使用NOW()表示当前系统日期
TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00 使用CURRENT_TIMESTAMP来输入当前系统日期;输入NULL时系统会输入系统当前日期和时间;无任何输入时,系统会输入系统当前日期和时间。
字符串和二进制类型
数据类型 类型说明 补充
CHAR 用于表示固定长度的字符串
VARCHAR 用于表示可变长度的字符串
BINARY 用于表示固定长度的二进制数据
VARBINARY 用于表示固定长度的二进制数据
BLOB 用于表示二进制大数据
TEXT 用于表示大文本数据
ENUM 表示枚举类型,只能存储一个枚举字符串值
SET 表示字符串对象,可以有零或多个值
BIT 表示位字段类型

数据表的基本操作

选择数据库

USE 数据库名 ;

创建数据表

CREATE TABLE 数据表名
(
字段名1 数据类型[完整性约束条件] ,
字段名2 数据类型[完整性约束条件] ,
...
字段名n 数据类型[完整性约束条件]
) ;

查看此数据库下的表(显示表名列表)

SHOW TABLES ;

查看数据表(显示定义语句,字符编码)

SHOW CREATE TABLE 表名 ;

整齐的查看数据表(显示定义语句,字符编码)

SHOW CREATE TABLE 表名\G

查看数据表(显示字段信息)

DESCRIBE 表名 ;

或简写为:

DESC 表名 ;

执行结果如下:

+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(20) | YES | | NULL | |
| grade | float | YES | | NULL | |
| username | varchar(10) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

(1).NULL:表示该列是否可以存储NULL值;

(2).Key:表示该列是否已经编制索引;

(3).Default:表示该列是否有默认值;

(4).Extra:表示获取到的与给定列相关的附加信息。

修改表名(to可以省略)

ALTER TABLE 旧表名
RENAME [To] 新表名 ;

修改字段名

ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 ;

修改字段的数据类型

ALTER TABLE 表名
MODIFY 字段名 数据类型 ;

添加字段

ALTER TABLE 表名
ADD 新字段名 数据类型
[约束条件][FIRST | AFTER 已存在字段名]

上述格式中,“FIRST”为可选参数,用于将新加字段设为第一个字段,“AFTER”也为可选参数,用于将新加字段添加到指定“已存在字段名”的后面。

修改字段的排列位置

修改为第一个字段:

ALTER TABLE 表名
MODIFY 字段名1 数据类型 FIRST;

将字段名1插入到字段名2之后:

ALTER TABLE 表名
MODIFY 字段名1 数据类型 AFTER 字段名2 ;

删除字段

ALTER TABLE 表名
DROP 字段名 ;

删除数据表

DROP TABLE 表名 ;

表的约束

约束条件 说明
PRIMARY KEY 主键约束,用于唯一标识对应的记录
FOREIGN KEY 外键约束
NOT NULL 非空约束
UNIQUE 唯一性约束
DEFAULT 默认值约束,用于设置字段的默认值
AUTO_INCREMENT 字段值自动增加

举个例子:

id为主键且值自动增加,name字段值唯一,grade字段默认值为0。

CREATE TABLE TB_GRADE
(
id INT(10) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) UNIQUE,
grade FLOAT DEFAULT 0
);

索引

创建表的时候创建索引
CREATE TABLE 表名
(
字段名 数据类型[完整性约束条件] ,
字段名 数据类型[完整性约束条件] ,
...
字段名 数据类型[完整性约束条件] ,
[ UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
[ 别名 ] (字段名1 [ (长度)] [ ASC | DESC] )
) ;

上述相关语法解释:

(1)UNIQUE:可选参数,表示唯一索引。

(2)FULLTEXT:可选参数,表示全文索引。

(3)SPATIAL:可选参数,表示空间索引。

(4)INDEX和KEY:用来表示字段的索引,二者选一即可。

(5)别名:可选参数,表示创建的索引名称。

(6)字段名1:指定索引对应字段的名称(创建多列索引时,用逗号隔开)。

(7)长度:可选参数,用于表示索引的长度。

(8)ASC和DESC:可选参数,ASC代表升序排列,DESC代表降序排列。

在已经存在的表上创建索引

方法一:

CREATE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名
ON 表名 (字段名1 [ (长度)] [ ASC | DESC] ) ;

方法二:

ALTER TABLE 表名
ADD [ UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 (字段名1 [ (长度)] [ ASC | DESC] ) ;
删除索引

方法一:

ALTER TABLE 表名
DROP INDEX 索引名 ;

方法二:

DROP INDEX 索引名
ON 表名 ;

MySQL-数据库和表的基本操作的更多相关文章

  1. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  2. MySQL<数据库和表的基本操作>

    数据库和表的基本操作 数据库基础知识 创建数据库 就是在数据库系统中划分一块存储数据的空间 CREATE DATABASE itcast; 查看数据库 SHOW CREATE DATABASE 数据库 ...

  3. MySQL : 数据库和表的基本操作总结

    针对database和table的操作大致可分为三类:创建,查询,修改,删除 1. 创建 create ①创建数据库 create database db_name; ②创建表 create tabl ...

  4. mysql(三) 数据表的基本操作操作

    mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGIN ...

  5. MySQL数据库以及表的管理

    MySQL数据库以及表的管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 今天我们探讨的话题就是如何使用MySQL做开发,我们运维的主要工作不是去开发SQL的,但尽管如此,我们有 ...

  6. MySQL数据库分表的3种方法

    原文地址:MySQL数据库分表的3种方法作者:dreamboycx 一,先说一下为什么要分表 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目 ...

  7. mysql数据库单表只有一个主键自增id字段,ibatis实现id自增

    mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid">        insert into user_id ...

  8. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

  9. Vc数据库编程基础MySql数据库的表增删改查数据

    Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...

  10. mysql数据库user表host字段的%问题

    搜索: mysql数据库user表host字段的%问题 连接:http://blog.csdn.net/xiaomengh/article/details/48706149 在mysql数据库中,使用 ...

随机推荐

  1. [CSS布局基础]居中布局的实现方式总结

    [原创]码路工人 Coder-Power 大家好,这里是码路工人有力量,我是码路工人,你们是力量. github-pages 博客园cnblogs 做Web开发少不了做页面布局.码路工人给大家总结一下 ...

  2. Spring_自动装配 & bean之间的关系 & bean的作用域

    1.自动装配 beans-autowire.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...

  3. STM32与匿名上位机通信——使用串口DMA实现

    背景:匿名上位机功能强大,这里想要采用匿名上位机输出一些调试信息,以波形的形式显示,方便观察和调试. 平台: 硬件:STM32F405RGT6 通信:2.4G zigbee无线串口收发模块 CC253 ...

  4. 这些Java8官方挖过的坑,你踩过几个?

    导读:系统启动异常日志竟然被JDK吞噬无法定位?同样的加密方法,竟然出现部分数据解密失败?往List里面添加数据竟然提示不支持?日期明明间隔1年却输出1天,难不成这是天上人间?1582年神秘消失的10 ...

  5. win服务器管理软件巧利用——如何让服务器管理事半功倍

    那些服务器管理大牛估计看到这个标题会笑了,服务器怎么管理,靠自带的远程桌面肯定是远远不够的,要实现上千台服务器同时登陆,没有一个好程序管理,估计得三餐不食为其颠倒. 那么,有什么好的服务器推荐呢?站长 ...

  6. Spring 内部方法调用失效问题(AOP)

    AOP使用的是动态代理的机制,它会给类生成一个代理类,事务的相关操作都在代理类上完成.内部方式使用this调用方式时,使用的是实例调用,并没有通过代理类调用方法,所以会导致事务失效. 解决办法 方式一 ...

  7. Java并发编程 (十) 多线程并发拓展

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.死锁 1.死锁的定义 所谓的死锁是指两个或两个以上的线程在等待执行的过程中,因为竞争资源而造成的一种 ...

  8. Java并发编程 (八) J.U.C组件拓展

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.J.U.C-FutureTask-1 FutureTask组件,该组件是JUC中的.但该组件不是 A ...

  9. Java实现 LeetCode 415 字符串相加

    415. 字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num ...

  10. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...