一、数据库
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