MySQL基本语法总结

创建数据库

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_%’;
MySQL基本语法总结_第1张图片

切换数据库

use 数据库;

显示数据库中的数据表

show tables ; – 获取当前所处的数据库中的数据表

show tables from 数据库名;— 获取指定数据库中的数据表
MySQL基本语法总结_第2张图片

显示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 数据库名.表名

显示数据库定义信息

MySQL基本语法总结_第3张图片

show cteate database 数据库名
show cteate database 数据库名 \g
show cteate database 数据库名 \G

显示表的定义信息

MySQL基本语法总结_第4张图片
MySQL基本语法总结_第5张图片

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;
MySQL基本语法总结_第6张图片
MySQL基本语法总结_第7张图片

创建指定存储引擎、字符串、排序
CREATE TABLE 表名(
列名1 数据类型(长度) CHARACTER SET 字符集名称 关键字,
列名2 数据类型(长度) CHARACTER SET 字符集名称 关键字,
列名3 数据类型(长度) CHARACTER SET 字符集名称 关键字,

)ENGINE = 存储引擎 CHARACTER SET 字符集名称 COLLATE 集合名称;
MySQL基本语法总结_第8张图片

查看表结构

desc table 表名;
MySQL基本语法总结_第9张图片

查看创建表的语句

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(),(),()
MySQL基本语法总结_第10张图片

使用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   计算列
);

你可能感兴趣的:(mysql,oracle,数据库)