老程序员分享:MySQL语句

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 老程序员分享:MySQL语句

SQL语句:


DDL、DML、DCL


DDL: CREATE、DROP、ALTER


DML: INSERT(REPLACE如果有就替换)、DELETE、UPDATE、SELECT


DCL:GRANT, REVOKE


DDL: Data Defination Language //数据定义语言,即创建或删除数据库对象,用于定义和管理 SQL 数据库中的所有对象的语言


1.CREATE - to create objects in the database 创建


2.ALTER - alters the structure of the //代码效果参考:http://www.jhylw.com.cn/111120217.html

database 修改

3.DROP - delete objects from the database 删除


4.TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed


TRUNCATE TABLE 【Table Name】。


下面是对Truncate语句在MSSQLServer2000中用法和原理的说明:


Truncate table 表名 速度快,而且效率高,因为:


TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。


DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。


TRUNCATE //代码效果参考:http://www.jhylw.com.cn/164422897.html

TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。


TRUNCATE TABLE 不能用于参与了索引视图的表。


5.COMMENT - add comments to the data dictionary 注释


6.GRANT - gives user's access privileges to database 授权


7.REVOKE - withdraw access privileges given with the GRANT command 收回已经授予的权限


DML: Data Manipulation Language //数据操作语言,SQL中处理数据等操作统称为数据操纵语言


INSERT, DELETE, UPDATE, SELECT向表中插入、删除、修改、查询数据


1.SELECT - retrieve data from the a database 查询


2.INSERT - insert data into a table 添加


3.UPDATE - updates existing data within a table 更新


4.DELETE - deletes all records from a table, the space for the records remain 删除


5.CALL - call a PL/SQL or Java subprogram


6.EXPLAIN PLAN - explain access path to data


Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。


7.LOCK TABLE - control concurrency 锁,用于控制并发


DCL: Data Control Language //数据库控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等


GRANT授权, REVOKE撤销


Grant语句:允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。


Revoke语句:可以废除某用户或某组或所有用户访问权限


在MySQL或者mariadb客户端命令行中可执行的命令有两类:


1、客户端命令,不需要分号,只能在客户端本地执行;


2、服务器端命令,需要加语句结束符:分号(;)


数据库:


创建数据库:


CREATE DATABASE|SCHEMA 【IF NOT EXISTS】 'DB_NAME';


CHARACTER SET 【=】 charset //定义字符串基于什么格式存储


COLLATE 【=】 collate //指明排序规则


删除数据库:


DROP DATABASE|SCHEMA 【IF EXISTS】 'DB_NAME';


字符集:


CHARACTER SET 'charecter set name'


排序规则:


COLLATE 'collate name'


查看支持所有字符集:


SHOW CHARACTER SET;


查看支持所有排序规则:


SHOW COLLATIONS;


获取命令使用帮助:


mysql> HELP KEYWORD;


获取帮助:


mysql> HELP CREATE TABLE; 查看支持哪些数据类型


查看创建命令:


SHOW CREATE TABLE tbl_name;



查看表状态:


SHOW TABLE STATUS LIKE 'tbl_name'\G // \G 表示可以让表中的每一行数据竖状显示



查看数据库:


mysql> SHOW DATABASES;


修饰符:


所有类型适用:


NOT NULL 非空


DEFAULT


PRIMARY KEY 主键


UNIQUE KEY 唯一键


数值型适用:


UNSIGNED 无符号,不能表示负数


AUTO_INCREMENT 自动增长,修饰正数


表:


创建表:


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} 指明行格式


SHOW ENGINES; 列出mariadb所支持的存储引擎


CREATE TABLE 【IF NOT EXISTS】 tb_name (col1 datatype 修饰符, col2 datatype 修饰符) ENGINE=''





或者









> drop table if exists tbl1; //删除是不可逆的


查看所有的引擎:


SHOW ENGINES;


查看表:


SHOW TABLES 【FROM db_name】



查看表结构:


DESC 【db_name.】tb_name



修改表:


ALTER TABLE 'tbl_name'


删除表:


DROP TABLE 【IF EXISTS】 tb_name;


> drop table if exists tbl1;


修改表:三种:字段、索引、表选项


ALTER TABLE 'tbl_name'


1、字段


添加字段:add


ADD col1 data_type 【FIRST|AFTER col_name】






删除字段:drop


修改字段:alter, change, modify


Alter 改字段定义的两个属性,设置默认值或移除默认值等属性


Change 把一个字段从一个老名称改为新名字,改字名称和字段定义


Modify 把一个column_definition从字段的老定义改为新定义,或改字段排序



2、索引


索引是特殊数据结构;定义在查找时作为查找条件的字段;要有索引名称;


查看索引帮助: >help create index;


创建索引:CREATE INDEX index_name ON tbl_name (index_col_name,...);


查看索引:SHOW INDEXES FROM 【db_name.】tbl_name;


删除索引:DROP INDEX index_name ON tbl_name;



3、表选项


修改:


DML:INSERT, DELETE, SELECT, UPDATE


INSERT INTO:


INSERT 【INTO】 tbl_name 【(col_name,...)】 {VALUES | VALUE} (val1,...),(...),...


SELECT:


SELECT col1,col2,... FROM tbl_name 【WHERE clause】 【ORDER BY 'col_name' 【DESC】】 【LIMIT 【m,】n】; //【DESC】表示降序,默认为升序


DELETE:


DELETE FROM tbl_name 【WHERE clause】 【ORDER BY 'col_name' 【DESC】】 【LIMIT 【m,】n】; //【m,】n】表示偏移m个位置


DELETE FROM tbl_name; //特别注意:如果使用这段命令,会清空整张表的


UPDATE:


UPDATE tbl_name SET col1=new_val1, col2=new_val2, ... 【WHERE clause】 【ORDER BY 'col_name' 【DESC】】 【LIMIT 【m,】n】;


UPDATE tbl_name SET col1=new_val1, col2=newval2, ... 如果后面没有跟条件,表中所有字段将会被改掉


SELECT:








INSERT INTO:







DELETE:



UPDATE:



字段表示法:


: 所有字段;


as:字段别名,col1 AS alias1; 给col1去别名为alias1



WHERE clase:


操作符:



=2 and sid<=4;


简单写法


<p style="margin-left: 120px"] select from students where sid between 2 and 4;


BETWEEN ... AND ...


LIKE: //模糊匹配


%:任意长度的任意字符;



:任意单个字符;


RLIKE:regular expression



正则表达式模式匹配;(字符串匹配)


IS NULL


IS NOT NULL


条件逻辑操作:and or not

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11月前
|
关系型数据库 MySQL Unix
MySQL常用函数大锦囊
MySQL常用函数大锦囊
|
关系型数据库 MySQL 数据库
【MySQL】一文带你学透函数
嗨咯!各位小伙伴好呀!今天我们来学习MySQL数据库新的一个章节就是函数了,函数在整个MySQL数据库中是非常重要的,比如求学生各科的平均成绩,求班级里边学生的人数。下面让我们进入函数的世界吧!
78 1
|
SQL 关系型数据库 MySQL
MySQL这样写UPDATE语句,劝退
MySQL这样写UPDATE语句,劝退
119 0
MySQL这样写UPDATE语句,劝退
|
关系型数据库 MySQL Java
MySQL常用函数,你真得看看!
本文主要介绍 实际应用中常用的Mysql函数
83 0
|
存储 缓存 NoSQL
又是一年金九银十!mysql创建数据库命令语句
又是一年金九银十!mysql创建数据库命令语句
又是一年金九银十!mysql创建数据库命令语句
|
SQL 存储 缓存
原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》
原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》
191 0
原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》
|
关系型数据库 MySQL 数据库
【MySQL语句】MySQL基础语句,应付期末考试,木得问题~
简介:【MySQL语句】MySQL基础语句,应付期末考试,木得问题~
【MySQL语句】MySQL基础语句,应付期末考试,木得问题~
|
SQL 关系型数据库 MySQL
【写给大忙人看的mysql】DDL语句快速掌握
以下是对于MySQL的DDL语句的简单整理,对于大忙人可以快速上手,对于大佬可以加深记忆,嘿嘿 🚀 对于小白,可以看这篇文章,完成对MySQL的安装配置哦😉 【SQL笔记】 SQL并不难,保姆级入门教学
120 0
【写给大忙人看的mysql】DDL语句快速掌握
|
存储 SQL 关系型数据库
快上车,MySQL流程控制大总结
快上车,MySQL流程控制大总结
快上车,MySQL流程控制大总结
|
关系型数据库 MySQL Java
MySQL为Null会导致5个问题,个个致命!(7)
MySQL为Null会导致5个问题,个个致命!(7)
98 0
MySQL为Null会导致5个问题,个个致命!(7)