创建数据库
create database 数据库名; -- 字符集要看mysql 版本, 5.7 Latin, 8.0 utf8
create database 数据库名 character set ‘utf8’;-- 指定数据库的字符集
create database IF NOT EXISTS 数据库名 character set ‘utf8’; -- 判断数据库是否存在,部存在则创建,存在也不创建
---- character set ‘字符集’ =====》 charset ‘字符集’
character set ‘字符集’ 可以指定数据库 、表、字段
显示mysql 字符集等
show variables like ‘character_%’;
切换数据库
use 数据库;
显示数据库中的数据表
show tables ; – 获取当前所处的数据库中的数据表
show tables from 数据库名;— 获取指定数据库中的数据表
显示mysql服务器有哪些数据库
show databases;
显示当前数据库的名称
select database();
修改数据库
alter database 数据库名 character set ‘字符集’ ;
删除数据库
删除指定数据库(若指定的数据库名,不存在,也报错)
drop database 数据库名;
删除指定数据库(IF EXISTS 若指定数据库存在,则删除,不存在,也啥也不操作)
drop database IF EXISTS 数据库名
删除数据表
删除表名(若指定表名,不存在,也报错)
drop table 表名; —删除当前处的数据库中的表
删除指定表(IF EXISTS 若指定表存在,则删除,不存在,也啥也不操作)
drop table IF EXISTS 表名
删除指定数据库中的表(IF EXISTS 若指定表存在,则删除,不存在,也啥也不操作)
drop table IF Exists 数据库名.表名
显示数据库定义信息
show cteate database 数据库名
show cteate database 数据库名 \g
show cteate database 数据库名 \G
显示表的定义信息
show create table 表
show create table 表\g
show create table 表\G
数据库重命名问题
一般可视化界面是允许重命名的,这底层的逻辑如下:
是新建数据库, 把所有表复制到新的数据库,再删除旧的数据库,这过程很浪费资源的。
创建表
create table IF NOT EXISTS 表名(
col INT,
name varchar(10)
)
基于现有的表创建表,同时会把数据带过来,相当于查询数据,创建一个表存放这些数据
create table 表名
as
select emp_id,emp_name
from employee;
创建指定存储引擎、字符串、排序
CREATE TABLE 表名(
列名1 数据类型(长度) CHARACTER SET 字符集名称 关键字,
列名2 数据类型(长度) CHARACTER SET 字符集名称 关键字,
列名3 数据类型(长度) CHARACTER SET 字符集名称 关键字,
…
)ENGINE = 存储引擎 CHARACTER SET 字符集名称 COLLATE 集合名称;
查看表结构
desc table 表名;
查看创建表的语句
show create table 表名;
表的修改
追加一列
alter table 表名
add [column] 字段名 字段类型 [FIRST | AFTER 表中现有的字段]
默认是追加到表的最后一列,可以通过 [FIRST | AFTER 表中现有的字段] 若只写First 就是追加到第一个列,
alter table zen.login
add login_datetime datetime default now() 追加一个login_datetime 列。默认值 系统时间
修改字段的 数据类型、长度 、默认值
alter table 表名
modify 字段 数据类型 default ‘xxx’alter table table_1
modify colA varchar(50) AFTER colID ----- 如果表table_1 存在colA列,则会把colA列移动到colID 后,
列的重命名alter table 表名
change 原来的字段 新的字段 数据类型
删除字段
alter table 表名
drop column 字段
重命名表
方式1 sqlServer 中就是这种 sp_rename 系统存储过程
Rename table 表名
TO 新的表名方式2
alter table 表名
rename [TO] 新的表名
清除表
truncate table 表名 – 删除表的数据,表结构还在
同时插入多行记录 的Insert into
insert into 表名(…) values()
同时插入多行记录 非原子性,失败与否不影响其他的数据操作 SQL server Mysql 同样适应
insert into 表名(…) values(),(),()
使用insert into 同时插入多条记录时,MySQL会返回一些在执行单行插入时没有的额外信息,这些信息的含义如下:
① Records:表名插入的记录条数
② Duplicate:表名插入时被忽略的记录,原因可能是这些记录包含了重复的主键值
③ Warning:表明有问题的数据值,例如发生数据类型转换
一个同时插入多行记录的Insert 语句等于多个单行插入的insert 语句,但是多行的insert 语句在处理过程中效果更高,因为Mysql执行单条Insert语句插入多行数据比使用多条Insert语句快(占带宽就比多条insert语句少),所以在插入多条记录时,最好选择使用单条insert 语句方式插入
计算列
sql server
alter table 表名
add 列名 as 计算的公式 Persisted
alter table Table_1
add col as col1+col2 Persisted
MySQL 8.0 计算列
CREATE TABLE tb1(
id INT,
cloa INT,
colb INT,
c INT GENERATED ALWAYS AS (cola + colb) VIRTUAL 计算列
);