首页 > 数据库 >第二十天:mysql基本语法

第二十天:mysql基本语法

时间:2024-02-12 10:33:05浏览次数:34  
标签:name SHOW 十天 字符集 语法 mysql TABLE ALTER 字节

一、语法标准

1、数据库对象和命名

数据库的组件(对象): 数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等 命名规则: 必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $) 不要使用MySQL的保留字

2、SQL语句分类

DDL: Data Defination Language 数据定义语言
CREATE,DROP,ALTER
DML: Data Manipulation Language 数据操纵语言
INSERT,DELETE,UPDATE
软件开发:CRUD
DQL:Data Query Language 数据查询语言
SELECT 
DCL:Data Control Language 数据控制语言
GRANT,REVOKE
TCL:Transaction Control Language 事务控制语言
COMMIT,ROLLBACK,SAVEPOINT

3、SQL语句构成

SELECT *                 #SELECT子句
FROM products             #FROM子句
WHERE price>666         #WHERE子句
获取SQL 命令使用帮助: 官方帮助:https://dev.mysql.com/doc/refman/8.0/en/sql-statements.html

4、字符集和排序

早期MySQL版本默认为 latin1,从MySQL8.0开始默认字符集已经为 utf8mb4 查看支持所有字符集:
SHOW CHARACTER SET;
SHOW CHARSET;
查看当前默认字符集
 show variables like 'character%';
查看支持所有排序规则:
SHOW COLLATION;
#注意
utf8_general_ci不区分大小写
utf8_bin 区分大小写
查看当前使用的排序规则
SHOW VARIABLES LIKE 'collation%';
设置服务器默认的字符集,
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
设置mysql客户端默认的字符集
vim /etc/my.cnf
#针对mysql客户端
[mysql]
default-character-set=utf8mb4
#针对所有MySQL客户端
[client]
default-character-set=utf8mb4

二、数据库管理

1、创建数据库
CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME'
CHARACTER SET 'character set name'
COLLATE 'collate name';

2、修改数据库

ALTER DATABASE DB_NAME character set utf8;

3、删除数据库

DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

4、查看数据库列表

SHOW DATABASES;

三、数据类型

 1、整数型 

tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)
上述数据类型,如果加修饰符unsigned后,则最大值翻倍
如:tinyint unsigned的取值范围为(0~255)
int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,规定了MySQL的一些
交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,Int(1)和Int(20)是
相同的
BOOL,BOOLEAN:布尔型,是TINYINT(1)的同义词。zero值被视为假,非zero值视为真

2、浮点型(float和double),近似值

float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位, 注意: 小数点不占用总个数 double(m,d) 双精度浮点型16位精度(8字节) m总个数,d小数位, 注意: 小数点不占用总个数 设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以 实际为准,即6位  3、定点数

在数据库中存放的是精确值,存为十进制

格式 decimal(m,d) 表示 最多 m 位数字,其中 d 个小数,小数点不算在长度内 浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储。double占用 8个字节  4、字符串(char,varchar,text)  char(n) 固定长度,最多255个字符,注意不是字节 varchar(n) 可变长度,最多65535个字符 tinytext 可变长度,最多255个字符 text 可变长度,最多65535个字符 mediumtext 可变长度,最多2的24次方-1个字符 longtext 可变长度,最多2的32次方-1个字符 BINARY(M) 固定长度,可存二进制或字符,长度为0-M字节 VARBINARY(M) 可变长度,可存二进制或字符,允许长度为0-M字节 内建类型:ENUM枚举, SET集合

 5、二进制数据BLOB

BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob以二进制方式存储, 不分大小写 BLOB存储的数据只能整体读出 TEXT可以指定字符集,BLOB不用指定字符集 6、日期时间类型 date 日期 '2008-12-2' time 时间 '12:25:36' datetime 日期时间 '2008-12-2 22:06:44' timestamp 自动存储记录修改时间 YEAR(2), YEAR(4):年份 timestamp 此字段里的时间数据会随其他字段修改的时候自动刷新,这个数据类型的字段可以存放这 条记录最后被修改的时间  7、修饰符 NULL 数据列可包含NULL值,默认值 NOT NULL 数据列不允许包含NULL值,相当于网站注册表中的 * 为必填选项 DEFAULT 默认值 PRIMARY KEY 主键,所有记录中此字段的值不能重复,且不能为NULL UNIQUE KEY 唯一键,所有记录中此字段的值不能重复,但可以为NULL  CHARACTER SET name 指定一个字符集 适用数值型的修饰符: AUTO_INCREMENT 自动递增,适用于整数类型, 必须作用于某个 key 的字段,比如primary key UNSIGNED 无符号  四、DDL语句 1、创建表 CREATE TABLE 
CREATE TABLE [IF NOT EXISTS] 'tbl_name' (col1 type1 修饰符, col2 type2 修饰符, ...)
#字段信息
col type1 
PRIMARY KEY(col1,...)
INDEX(col1, ...)
UNIQUE KEY(col1, ...)
#表选项:
ENGINE [=] engine_name
ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎 同一库中不同表可以使用不同的存储引擎 同一个库中表建议要使用同一种存储引擎类型

2、表查看

查看表:
SHOW TABLES [FROM db_name]

查看表创建命令:

SHOW CREATE TABLE tbl_name

查看表结构:

DESC [db_name.]tb_name
SHOW COLUMNS FROM [db_name.]tb_name

查看表状态:

SHOW TABLE STATUS LIKE 'tbl_name'

查看支持的engine类型

SHOW ENGINES;

 3、修改和删除表 

修改表 
ALTER TABLE 'tbl_name'
#字段:
#添加字段:add
ADD col1 data_type [FIRST|AFTER col_name] 
#删除字段:drop
#修改字段:
alter(默认值), change(字段名), modify(字段属性)
查看修改表帮助
Help ALTER TABLE
删除表
DROP TABLE [IF EXISTS] 'tbl_name';
修改表范例 
#修改表名
ALTER TABLE students RENAME s1;
#添加字段
ALTER TABLE s1 ADD phone varchar(11) AFTER name;
#修改字段类型
ALTER TABLE s1 MODIFY phone int;
#修改字段名称和类型
ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);
#删除字段
ALTER TABLE s1 DROP COLUMN mobile;
#修改字符集
ALTER TABLE s1 character set utf8;
#修改数据类型和字符集
ALTER TABLE s1 change name name varchar(20) character set utf8;
#添加字段
ALTER TABLE students ADD gender ENUM('m','f');
alter table student modify is_del bool default false;
#修改字段名和类型
ALETR TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY; 
#删除字段
ALTER TABLE students DROP age;
#查看表结构
DESC students;
#新建表无主键,添加和删除主键
CREATE TABLE t1 SELECT * FROM students;
ALTER TABLE t1 add primary key (stuid);
ALTER TABLE t1 drop primary key ;
#添加外键
ALTER TABLE students add foreign key(TeacherID) references teachers(tid);
#删除外键
SHOW CREATE TABLE students #查看外键名
ALTER TABLE students drop foreign key <外键名>;

 

标签:name,SHOW,十天,字符集,语法,mysql,TABLE,ALTER,字节
From: https://www.cnblogs.com/dujy/p/18013598

相关文章

  • 第十九天:Mysql基础入门
    一、关系型数据库基础1、数据的分类结构化的数据   非结构化的数据  半结构化数据2、关系型数据库RDBMS (1)常用关系数据库 MySQL:MySQL,MariaDB,PerconaServerPostgreSQL:简称为pgsql,EnterpriseDBOracleMSSQLServerDB23、数......
  • 8小时速成golang(四)语法新奇
      1、从一个main函数初见golang语法packagemainimport"fmt"funcmain(){/*简单的程序万能的helloworld*/fmt.Println("HelloGo")}终端运行$goruntest1_hello.goHelloGo$gorun表示直接编译go语言并执行应用......
  • 十四、MySQL与Django之Model基础
    数据库Django默认支持sqlite、mysql、oracel、postgresql等数据库1、sqlitedjango默认使用sqlite数据库Django.db.backends.sqlite3DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(BA......
  • 巧记Elasticsearch常用DSL语法
    记知识先记轮廓,关于DSL语法的轮廓,记住以下3句话即可:索引、文档和查询Match、Term和Bool还有翻页和聚合1、又爱又恨的DSL使用Elasticsearch时,我们一般是调用RestClientAPI的方式读取和写入集群数据。有时也会使用工具查阅和操作数据,比如:使用Chrome插件MultiElasticsearch......
  • Elasticsearch实现Mysql的Like效果
    在Mysql数据库中,模糊搜索通常使用LIKE关键字。然而,随着数据量的不断增加,Mysql在处理模糊搜索时可能面临性能瓶颈。因此,引入Elasticsearch作为搜索引擎,以提高搜索性能和用户体验成为一种合理的选择。1、客户的诉求在ES中,影响搜索结果的因素多种多样,包括分词器、Match搜索、Term搜......
  • Flink CDC引起的Mysql元数据锁
    记一次FlinkCDC引起的Mysql元数据锁事故,总结经验教训。后续在编写FlinkCDC任务时,要处理好异常,避免产生长时间的元数据锁。同时出现生产问题时要及时排查,不能抱有侥幸心理。1、事件经过某天上午,收到系统的告警信息,告警提示:同步Mysql的某张表数据到Elasticsearch异常,提示连不......
  • 一次打通FlinkCDC同步Mysql数据
    业务痛点离开了业务谈技术都是耍流氓。我们来聊聊基于业务的痛点,衍生出来的多种数据同步方案。业务中常见的需要数据同步的场景1、多个库的表合并到一张表。不同的业务线或者微服务在不同的数据库里开发,但是此时有些报表需要将多个库的类似的数据合并后做查询统计。或者,某些历......
  • MySQL表结构及数据对比工具:MySQL Utilities
    简介MySQLUtilities是一组基于python语言编写的python库的命令行实用工具集,依赖于python2.6。该工具提供了MySQL数据库运维工程中常用的一些工具,诸如克隆、复制、比较、差异、导出、导入、安装、配置、索引、磁盘查看等等。Linux下安装yuminstallmysql-utilities.noarch......
  • 一些在OI中实用的语法
    前言发电写的。以及代码不一定能过编译,重在表达意思。如果你觉得有问题,那您可以私信告诉我,有空我会看的。毕竟初三半退役了。讲一点(几个,因为那个真的的很全)这个里面没有的东西。考场上能够用的结构化绑定其实能用,只是会warning而已,不会CE。我模拟赛的时候经常用。GCC9早......
  • Python 语法——初步认识语法元素的基本含义
    Python语法——初步认识语法元素的基本含义部分内容对照c语言(实际不影响阅读)以下为3.x内容的Python一、缩进c语言常常用{}来划分包含与层次关系;而Python使用缩进——Tab键或者空格实现(一般为4个空格)二、注释c语言常常用//或者是/**/来进行单行、多行注释;而Python使......