MySQL基本语法总结

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

创建数据库

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   计算列
);
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql