2. MySQL数据库基础

一、数据库的操作

1. 显示当前的数据库

sql 复制代码
SHOW DATABASES;

2. 创建数据库

语法:

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification...];

//create_specification包括:
  [DEFAULT] CHARACTER SET charset_name
  [DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • \] 是可选项

  • COLLATE:指定数据库字符集的校验规则

示例:

  • 创建名为 db_test1 的数据库。

    sql 复制代码
    CREATE DATABASE db_test1;
  • 如果系统没有 db_test2 的数据库,则创建一个名叫 db_test2 的数据库,如果有则不创建。

    sql 复制代码
    CREATE DATABASE IF NOT EXISTS db_test2;
  • 如果系统没有 db_test 的数据库,则创建一个使用 utf8mb4 字符集的 db_test 数据库,如果有则不创建。

    sql 复制代码
    CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4;

3. 使用数据库

sql 复制代码
use 数据库名;

4. 删除数据库

语法:

sql 复制代码
DROP DATABASE [IF EXISTS] db_name;

**说明:**数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除。

示例:

sql 复制代码
drop database if exists db_test1;
drop database if exists db_test2;

二、常用数据类型

1. 数值类型

分为整型和浮点型:

扩展资料:

数值类型可以指定为无符号(unsigned),表示不取负数。

1字节(bytes)= 8bit。

对于整型类型的范围:

  • 有符号范围:-2^(类型字节数*8-1)到 2^(类型字节数*8-1)-1,如int是4字节,就是 -2^31 到 2^31-1。
  • 无符号范围:0 到 2^(类型字节数*8)-1,如 int 就是 2^32-1。

尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。

2. 字符串类型

3. 日期类型

三、表的操作

需要操作数据库中的表时,需要先使用该数据库:

sql 复制代码
use db_test;

1. 查看表

sql 复制代码
--查看表
show tables;

--查看表结构
desc 表名;

示例:

2. 创建表

语法:

sql 复制代码
CREATE TABLE table_name (
    field1 datatype,
    field2 datatype,
    field3 datatype
);

可以使用 comment 增加字段说明。

示例:

sql 复制代码
create table stu_test (
   id int,
   name varchar(20) comment '姓名',
   password varchar(50) comment '密码',
   age int,
   sex varchar(1),
   birthday timestamp,
   amout decimal(13,2),
   resume text
);

3. 删除表

语法:

sql 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

sql 复制代码
-- 删除 stu_test 表
drop table stu_test;

-- 如果存在 stu_test 表,则删除 stu_test 表
drop table if exists stu_test;

4. 修改表

4.1 修改表名

语法1:

sql 复制代码
alter table 旧表名 rename to 新表名;

语法2:

sql 复制代码
rename table 旧表名1 to 新表名1,旧表名2 to 新表名2,旧表名3 to 新表名3,...,旧表名n to 新表名n;

4.2 增加列

**语法1:**在建表完后,需要增加一些列:

sql 复制代码
alter table 表名 add column 列名 数据类型 [列的属性];

**语法2:**把新增的这一列,放到第一列:

sql 复制代码
alter table 表名 add column 列名 数据类型 [列的属性] first;

**语法3:**在某一个列后面新增一列:

sql 复制代码
alter table 表名 add column 列名 数据类型 [列的属性] after 指定列名;

4.3 删除列

语法:

sql 复制代码
alter table 表名 drop column 列名;

4.4 修改列的信息

**注意:**在修改后的数据类型和属性一定要兼容表中现有的数据。

**语法1:**只能修改列的相关数据类型和属性。

sql 复制代码
alter table 表名 modify 列名 新数据类型 [新属性];

**语法2:**既可以修改数据类型和属性,也可以修改列名。

sql 复制代码
alter table 表名 change 旧列名 新列名 新数据类型 [新属性];

**语法3:**将某列设为表的第一列。

sql 复制代码
alter table 表名 modify 列名 列的类型 列的属性 first;

**语法4:**将某列放到指定列的后面。

sql 复制代码
alter table 表名 modify 列名 列的类型 列的属性 after 指定列名;
相关推荐
XiaoLeisj28 分钟前
【MyBatis】深入解析 MyBatis XML 开发:增删改查操作和方法命名规范、@Param 重命名参数、XML 返回自增主键方法
xml·java·数据库·spring boot·sql·intellij-idea·mybatis
dleei1 小时前
MySql安装及SQL语句
数据库·后端·mysql
信徒_2 小时前
Mysql 在什么样的情况下会产生死锁?
android·数据库·mysql
嘴对嘴编程3 小时前
oracle数据泵操作
数据库·oracle
苹果酱05673 小时前
Golang标准库——runtime
java·vue.js·spring boot·mysql·课程设计
·薯条大王9 小时前
MySQL联合查询
数据库·mysql
morris13110 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
hycccccch11 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
这个懒人12 小时前
深入解析Translog机制:Elasticsearch的数据守护者
数据库·elasticsearch·nosql·translog
Yan-英杰12 小时前
【百日精通JAVA | SQL篇 | 第二篇】数据库操作
服务器·数据库·sql