首页 > 数据库 >数据库、表的创建、修改、删除

数据库、表的创建、修改、删除

时间:2024-03-18 20:00:55浏览次数:27  
标签:varchar 删除 创建 数据库 字符集 demo table TABLE

一、数据库

1.1、创建数据库

语法:
CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET 字符集;

例子:(推荐)
CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

1.2、使用数据库

  • 查看当前所有的数据库
SHOW DATABASES; #有一个S,代表多个数据库
SHOW DATABASES LIKE '%小写字母%';
  • 查看当前正在使用的数据库
SELECT DATABASE();  #使用的一个 mysql 中的全局函数,未使用数据库会返回null
  • 查看指定库下所有的表
SHOW TABLES IN 数据库名 LIKE '%小写字母%';
  • 使用/切换数据库
USE 数据库名;

1.3、修改数据库

  • 更改数据库字符集
语法:
ALTER DATABASE 数据库名 CHARACTER SET 字符集 CHARACTER SET 比较规则; 

# ALTER DATABASE是修改数据库所有属性,因此修改字符集的时候最好带上比较规则
例子:
create database if not exists demo ; 
show create database demo;
-- CREATE DATABASE `demo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
alter database demo CHARACTER SET utf8mb4 COLLATE utf8mb4_is_0900_ai_ci
show create database demo
-- CREATE DATABASE `demo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_is_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
alter database demo CHARACTER SET utf8mb4
show create database demo
-- CREATE DATABASE `demo` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */

【注意】数据库不能改名。一些可视化工具改名,是通过建新库,把所有表复制到新库,再删旧库完成的。

1.4、删除数据库

DROP DATABASE IF EXISTS 数据库名;

二、表

2.1、创建表

前置条件:CREATE TABLE权限、存储空间
方式1:

# character set 字符集 collate 比较规则 [约束条件] [默认值] COMMENT 的顺序最好按照这个顺序
# [约束条件] [默认值] COMMENT先后顺序不影响建表,但是要在character set 和 collate 后面
CREATE TABLE IF NOT EXISTS 数据库.表名(
	字段1  数据类型 character set 字符集 collate 比较规则 [约束条件] [默认值] COMMENT '列备注1',
	字段2  数据类型 character set 字符集 collate 比较规则 [约束条件] [默认值] COMMENT '列备注2',
	字段3  数据类型 character set 字符集 collate 比较规则 [约束条件] [默认值] COMMENT '列备注3',
	……
	[表约束条件]
)ENGINE=InnoDB DEFAULT CHARSET=字符集 COLLATE=比较规则 COMMENT '';

方式2:CREATE TABLE AS SELECT

# 创建表的同时,将数据导入到新表
# * 可以换成具体字段,也可以对字段取别名
# 如果只想要表结构,不想要数据,则可以卡条件为:where 1=2
# 用途:备份表
CREATE TABLE IF NOT EXISTS 新表名 AS SELECT * FROM 旧表名 WHERE 条件; 

# 仅创建表结构,不同步数据
create table IF NOT EXISTS 新表名 like 旧表名;

例子:
# 创建demo.demo1
create table demo.demo1(
id varchar(10)
,name varchar(20)
,age int
);

create table demo.demo2 
as
select  id                    # 可以直取原有字段
	   ,name as new_name  # 可以对原有字段取别名
	   ,age +1 as new_age # 可以对原有字段做计算
  from demo.demo1;

desc demo.demo1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | varchar(10) | YES  |     | NULL    |       |
| new_name | varchar(20) | YES  |     | NULL    |       |
| new_age  | bigint      | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)   

2.2、查看表结构

show create table 表名;
desc 表名;
describe 表名;

2.3、修改表结构

  • 增加一个列
# 不加【FIRST|AFTER 字段名】时,默认加到最后一个字段的位置
ALTER TABLE 表名 ADD    【COLUMN】 字段名 字段类型 character set 字符集 collate 比较规则 [约束条件] [默认值] COMMENT '列备注1'【FIRST|AFTER 字段名】;
  • 修改一个列
# modify 相当于对该列重新定义(除了列名称),原有的约束、默认值、列备注等需要添上
# modify 不会对表中原有数据造成影响,但是新增的约束,必须表中数据都满足才能修改成功
ALTER TABLE 表名 MODIFY 【COLUMN】 字段名 字段类型 character set 字符集 collate 比较规则 [约束条件] [默认值] COMMENT '列备注1'【FIRST|AFTER 字段名】;
# 开发时,修改一个列步骤
1、备份表:create table if not exists 目标表_8位日期 as select * from 目标表;
2、查看建表语句:show create table 目标表; -- 查看该列是否有:约束、默认值、列备注、字符集、比较规则等
3、修改列:ALTER TABLE 表名 MODIFY 【COLUMN】 字段名 字段类型 + 原有的约束、默认值、列备注等
# modify不会对表中原有数据造成影响,但是新增的约束,必须表中数据都满足才能修改成功
例子:
create table demo.demo1(
id varchar(10)
,name varchar(20)
,age int
);

insert into demo.demo1 
values 
('1','Tom',2),
('2',null,3),
('123456789','JoJo',18);

# SQL 错误 [1265] [01000]: Data truncated for column 'id' at row 3
alter table demo.demo1 modify column id varchar(5)
# 正确的
alter table demo.demo1 modify column id varchar(15) 

SQL 错误 [1138] [22001]: Data truncation: Invalid use of NULL value
alter table demo.demo1 modify column name varchar(20) not null
# 正确的 
alter table demo.demo1 modify column name varchar(20) default 'NAME' 

mysql> desc demo.demo1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | varchar(15) | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NAME    |       |
| age   | int         | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

2.4、重命名一个列

ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型 character set 字符集 collate 比较规则 [约束条件] [默认值] COMMENT '列备注1'【FIRST|AFTER 字段名】;
  • modify 和 change 的区别
change 是加强版的 modify 
modify 能实现的 change 都能够实现
change 可以对列重命名,但是modify不可以

2.5、删除一个列

ALTER TABLE 表名 DROP 【COLUMN】字段名

2.6、重命名表

RENAME TABLE 旧表名 TO 新表名;
ALTER table 旧表名 RENAME [TO] 新表名;  -- [TO]可以省略

2.7、删除表

DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];

2.8、清空表

TRUNCATE TABLE 表名;

标签:varchar,删除,创建,数据库,字符集,demo,table,TABLE
From: https://www.cnblogs.com/wangupai/p/18078246

相关文章

  • JAVA--数据库(增删改)
    增(INSERT)#给指定字段添加数据insertinto表名(字段1,字段2...)values(值1,值2...);给全部字段添加数据insertinto表名values(值1,值2...);批量添加数据insertinto表名(字段1,字段2...)values(值1,值2...),(值1,值2...),(值1,值2...);   insertinto......
  • 搭建springboot项目,链接数据库测试,并跑通流程
    步骤>>新建项目>>修改pom.xml文件>>创建文件mvc框架>>在主文件下创建Application启动类(注解@SpringBootApplication)>>resources文件下创建application.yml文件>>在domain下创建实体类(注解@Data)>>在mapper下创建mapper类(注解@Mapper)>>在service下创建接口>>在service下创建impl并......
  • Springboot+Redis:实现缓存 减少对数据库的压力
    ......
  • 在Linux中,在不同的Linux发行版中(如RPM-based和DEB-based)如何安装、升级、删除软件包?
    在Linux中,不同的发行版采用了不同的包管理器来处理软件安装、升级和删除操作。以下是基于RPM(RedHatPackageManager)系统(如RedHatEnterpriseLinux,CentOS,Fedora等)和基于DEB(Debianpackage)系统的(如Debian,Ubuntu,LinuxMint等)的操作说明:1.RPM-based系统(使用yum或dnf......
  • MySQL忘记数据库密码,怎么连接数据库(Windows环境)
    一、Navicat连接过数据库,还有连接历史记录1.找回原密码(1)打开注册列表【win+R】-->【regedit】打开注册表 (2)查找Navicat密码保存位置,找到数据库名【数据库名称ruoyi】计算机\HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\Navicat\Servers\ruoyi在右侧找到pwd属性,右键点击【修改......
  • Linux安装Mysql5.7数据库
    一、前置条件系统版本:Linux CentOS7.5MySQL版本:mysql5.7.31二、操作步骤2.1、关闭mysql服务servicemysqldstop提示使用命令:systemctlstopmysqld.service2.2、grep查找已安装的mysql服务rpm-qa|grep-imysql2.3、卸载mysql:yum-yremove命令—......
  • oracle数据库执行报错:ORA-01861: 文字与格式字符串不匹配
    报错sql:selectto_date(sysdate,'yyyy-mm-dd')afromuser原因是:to_date()函数第一个参数,要求的是一个字符串格式,当这个值是一个日期格式的时候就会报错,解决方案:方案一:使用to_char(日期,'yyyy-mm-dd')将日期转为字符,再使用to_date(),方案二:修改数据库配置,让数据库隐式......
  • Azure REST API (5) Azure创建Service Principal设置Client Secret过期时间100年
    《WindowsAzurePlatform系列文章目录》 我们在使用AzureServicePrinciple,通过应用程序开发API方式部署或修改Azure资源的时候,默认的ClientSecret过期时间为2年。很多客户希望ClientSecret过期时间大于2年。我们可以通过使用应用管理策略(AppManagem......
  • 拌合楼管理系统开发(五) 数据库表和字段的设计方案
    前言:继续闭门造车    今天花时间把前面一段时间思考的整个拌合楼管理系统的数据库实现在mysql中建立起来了.表和字段含义如下了一、数据库表目录序号表名注释/说明1Company往来单位2ContractAttach合同附件3ContractBody合同表体4Contr......
  • 【PostgreSQL PGCE-091题目解析14】PostgreSQL中使用CONCURRENTLY选项创建索引时,允许
    本文为云贝教育刘峰(微信:yunbee_DBA)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。PostgreSQL中使用CONCURRENTLY选项创建索引时,允许增删改数据表。A.正确B.错误参考答案:A解析:我们知道,PG是有行级琐的,在创建索引的时候,会在行上加琐......