Mysql DML DCL DDL
在介绍这些SQL语言之前,先罗列一下mysql的常用数据类型和数据类型修饰,供查询参考
后面的带数字表示此类型的字段长度
数值型:
TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ,INT 4,BIGINT 8,DECIMAL,FLOAT 4,DOUBLE 8,BIT
字符串型
CHAR,VARCHAR,BINARY,VBINARY,TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOG,TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT,EMUM,SET
日期时间型
date,time,datetime,timestamp
数据限定修饰:
NOT NULL,NULL,DEFAULT,AUTO_INCREMENT,UNSIGNED,PRIMARY KEY,UNIQUE KEY,FOREIGN KEY
CHARACTER SET #ps:SHOW CHARACTER SET 显示当前数据库所支持的所有字符集
COLLATION #ps:SHOW COLLATION 显示所支持的所有排序规则
以下是SQL的每种DDL,DCL,DML语言
DDL
----Data Definition Language 数据库定义语言
如 create procedure之类
创建数据库
| CREATE DATABASE [IF NOT EXISTS] DBNAME [CHARACTER SET 'CHAR_NAME'] [COLLATE 'COLL_NAME'] |
修改:ALTER 删除:DROP
创建一张新表
| CRTATE TABLE [IF NOT EXISTS] TBNAME(col_name col_definition,...) |
EXAMPLE:
|
1
|
mysql>CREATE TABLE students(Id INT PRIMARY KEY NOT NULL AUTO_INCREMENT UNSIGNED,Name CHAR(20) UNIQUE KEY NOT NULL,Age TINYINT UNSIGNED INDEX,Gender CHAR(1) NOT NULL) [ENGINE={MyISAM | InnoDB }]; |
也可以这样写(区别在于单独定义主键,唯一键和索引):
|
1
|
mysql>CREATE TABLE students(Id INT NOT NULL AUTO_INCREMENT UNSIGNED,Name CHAR(20) NOT NULL,Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL,PRIMARY KEY(id),UNIQUE KEY(name),INDEX(age)) |
查询出一张表的数据后创建新表(字段定义会丢失,数据会保留)
| CREATE TABLE TBNAME SELECT... |
EXAMPLE:
|
1
|
mysql>CREATE TABLE test SELECT * FROM students WHERE Id>5; |
以一张表的格式定义,创建一张新的空表
| CREATE TABLE TBNAME1 LIKE TBNAME2 |
修改表:
|
ALTER TABLE tb_name MODIFY #修改字段定义 CHANGE #可以修改字段名和字段定义 ADD DROP |
EXAMPLE:
给表添加字段
|
1
|
mysql>ALTER TABLE students ADD (course VARCHAR(100),teacher CHAR(20)); |
添加惟一键
|
1
|
mysql>ALTER TABLE students ADD UNIQUE KEY Name; |
修改字段:
修改course字段为Course字段,并放在Name字段之后(修改字段需要带上新的字段的定义)ps:MODIFY只能修改字段定义
|
1
|
mysql>ALTER TABLE students CHANGE course Course VARCHAR(100) [AFTER Name]; |
重命名表名
|
1
2
|
mysql>ALTER TABLE students RENAME TO stu;mysql>RENAME TABLE stu TO students; |
添加一个外键约束
|
1
|
ALTER TABLE students ADD FOREIGN KEY foreign _cid (CID) REFERENCES course (CID); |
创��索引
| CREATE INDEX index_name ON TABLE (col_name[(length)] [ASC|DESC]) [USING {BTREE|HASH}]; |
删除索引
| DROP INDEX index_name ON TBNAME; |
查看表状态:SHOW STATUS LIKE 'TBNAME';
查看表的索引:SHOW INDEXES FROM TBNAME;
DML
----Data Manipulation Language 数据操纵语言
如insert,delete,update,select(插入、删除、修改、检索)
插入修改数据
#如果每个字段都有值,不需要写字段名称,每组值用,隔开
|
mysql>INSERT INTO tb_name (col1,col2) VALUES ('STRING',NUM),('STRING',NUM); mysql>INSERT INTO tb_name SET col1='string',col2='string'; mysql>INSERT INTO tb_name (col1,col2,col3) SELECT...; |
EXAMPLE:
|
1
2
|
mysql>INSERT INTO students (Name,Gender,teacher) VALUE ('lujunyi','M','mage'),('wusong','M','zhuima');mysql>INSERT INTO students SET Name='lujunyi',Gender='M',tearcher='zhuima'; |
更新数据
|
1
2
|
mysql>UPDATE tb_name SET column=value WHERE column=value;mysql>UPDATE students SET Course='mysql' WHERE Name='lujunyi'; |
替换数据:
和UPDATE使用方式一样,只要将UPDATE换成REPLACE即可
删除数据
| mysql>DELETE FROM tb_name WHERE conditions; |
|
1
|
mysql>DELETE FROM students WHERE Course='mysql'; |
清空表:将会重置计数器
| mysql>TRUNCATE tb_name |
查询数据
单表查询:
| mysql>SELECT [DISTINCT] column FROM tb_name WHERE CONDITION; |
EXAMPLE:
#基本投影查询
|
1
|
mysql>SELECT Name,teacher FROM students WHERE Name='wusong'; |
#重复的结果只显示一次
|
1
|
mysql>SELECT DISTINCT Gender FROM students; |
#组合条件,可以使用AND,OR,NOT,XOR组合多个条件
|
1
|
mysql>SELECT * FROM students WHERE Age>20 AND Gender='M'; |
#使用BETWEEN...AND...筛选出年龄介于20-25之间的数据
|
1
|
mysql>SELECT * FROM students WHERE Age BETWEEN 20 AND 25; |
#查询Name以Y开头的的数据,%表示任意长度的任意字符,_表示任意单个字符
|
1
|
mysql>SELECT * FROM student WHERE Name LIKE 'Y%'; |
#使用正则表达式匹配查询,关键词为RLINK或者REGEXP
|
1
|
mysql> SELECT * FROM students WHERE Name RLINK '^[MNY].*$'; |
#使用IN关键词,将条件限定在一个列表中。用IS关键词,表示条件是否为空(IS NULL 或者 IS NOT NULL)
|
1
|
mysql>SELECT * FROM students WHERE Age IN (20,22,24); |
#将查询的结果进行排序
|
1
|
mysql>SELECT * FROM students ORDER BY Name {ASC|DESC}; |
#查询结果别名显示
|
1
|
mysql>SELECT Name AS Stu_Name FROM students; |
#LIMIT限定查询结果的条数,LIMIT 2,3表示偏移2条数据后,取3条数据
|
1
|
mysql>SELECT * FROM students LIMIT 2; |
#求平均数:AVG(),最大值:MAX() 最小值MIN() 数量:COUNT() 求和:SUM()
|
1
|
mysql>SELECT AVG(age) FROM students; |
#分组GROUP BY
|
1
|
mysql>SELECT Age, Gender FROM students GROUP BY Gender; |
#别名:AS
|
1
|
mysql>SELECT COUNT(Age) AS Num,Age FROM students GROUP BY Age; |
#过滤:HAVING
|
1
|
mysql>SELECT COUNT(Age) AS Num,Age FROM students GROUP BY Age HAVING Num>2; |
多表查询:
#指定已哪个字段连接2张表
|
1
|
mysql>SELECT students.Name,courses.Cname FROM students,courses WHERE students.CID1 = courses.CID; |
#连接时指定别名
|
1
|
mysql>SELECT students.Name,courses.Cname FROM students,courses WHERE students.CID1 = courses.CID; |
#左外连接...LEFT JION...ON...
|
1
|
mysql>SELECT s.Name,c.Cname FROM students AS s LEFT JION courses AS c ON s.CID1=c.CID; |
#右外连接...RIGHT JION...ON...
|
1
|
mysql>SELECT s.Name,c.Cname FROM students AS s RIGHT JION courses AS c ON s.CID1=c.CID; |
子查询
#查询年龄大于平均年龄的数据
|
1
|
mysql>SELECT * FROM students WHERE Age > (SELECT AVG(Age) FROM students); |
#在FROM中使用子查询
|
1
|
mysql>SELECT Name,Age FROM (SELECT * FROM students WHERE CID IN (2,3)) AS t WHERE Age>20; |
#联合查询
|
1
|
mysql>(SELECT Name,Age FROM students) UNION (SELECT Tname,Age FROM tutors); |
创建视图
| CREATE VIEW VIEW_NAME AS SELECT.... |
DCL
----Data Control Language 数据库控制语言
如grant,deny,revoke等,只有管理员才有这样的权限。
创建用户
| mysql>CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD' |
删除用户
|
mysql>DROP USER 'USERNAME'@'HOSHOST支持通配符 _:任意单个字符 %:任意多个字符 |
授权
| mysql>GRANT pri1,pri2...ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWORD'] |
取消授权
| mysql>REVOKE pri1,pri2...ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST'; |
查看授权
| mysql>SHOW GRANTS FOR 'USERNAME'@'HOST'; |
EXAMPLE:
|
1
2
3
|
mysql>CREATE USER 'lujunyi'@'%' IDENTIFIED BY '123456';mysql>SHOW GRANTS FOR 'lujunyi'@'%';mysql>GRANT ALL PRIVILEGES ON testdb.* TO 'lujunyi'@'%'; |
Mysql DML DCL DDL的更多相关文章
- DDL DML DCL SQL
https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_ddl SQL The Structured Query Language tha ...
- SQL语句的分类:DQL、DML、DDL、DCL、TCL的含义和用途
MySQL中提供了很多关键字,将这些关键字 和 数据组合起来,就是常说的SQL语句,数据库上大部分的操作都是通过SQL语句来完成.日常工作中经常听到 DML.DDL语句这些名词,使用字母缩写来表达含义 ...
- DML、DDL、DCL区别及介绍
DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作 ...
- DML、DDL、DCL的分别是什么
DML.DDL.DCL的分别是什么 一直以来,分不清这三者的简称代表什么,甚至在面试中遇到可能会张冠李戴.今天特意记录一下. 一.DML(data manipulation language) 数据操 ...
- SQLServer语言之DDL,DML,DCL,TCL
数据库语言分类 SQLServer SQL主要分成四部分: (1)数据定义.(SQL DDL)用于定义SQL模式.基本表.视图和索引的创建和撤消操作. (2)数据操纵.(SQL DML)数据操纵分 ...
- MySQL中的DDL,DML
MySQL中的DDL,DMLDDL:数据定义语言: CREATE,ALTER,DROP DB组件:数据库.表.索引.视图.用户.存储过程.存储函数.触发器.事件调度器等 CR ...
- 数据库的dml、ddl和dcl的概念
学过数据库肯定会知道DML.DDL和DCL这三种语言,这种基础概念性的东西是必须要记住的. DML(Data Manipulation Lanaguage,数据操纵语言) DML就是我们经常用到的SE ...
- 数据库操作语句类型(DQL、DML、DDL、DCL)
数据库操作语句类型(DQL.DML.DDL.DCL)简介 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语言DQL 数据查询语 ...
- 数据库DQL、DML、DDL及DCL详解
目录 1. 数据查询语言(DQL,Data Query Language) 2. 数据操纵语言(DML,Data Manipulation Language) 3. 数据定义语言(DDL,Data D ...
随机推荐
- Flutter上拉加载下拉刷新---flutter_easyrefresh
前言 Flutter默认不支持上拉加载,下拉刷新也仅仅支持Material的一种样式.Android开发使用过SmartRefreshLayout的小伙伴都知道这是一个强大的刷新UI库,集成了很多出色 ...
- linux下使用sha256sum生成sha256校验文件,并校验其一致性
[root@localhost ]# " >test.zip 生成sha256文件校验文件 [root@localhost ]# sha256sum test.zip >test ...
- memcach 命令行
1. cmd上登录memcache # telnet 127.0.0.1 11211 2. 列出所有items stats items 3. 通过itemid获取key 接下来基于列出的i ...
- 【数学建模】day05-微分方程建模
很多问题,归结起来是微分方程(组)求解的问题.比如:为什么使用三级火箭发射卫星.阻滞增长人口模型的建立…… MATLAB提供了良好的微分方程求解方案. 一.MATLAB求微分方程的符号解 matlab ...
- Centos安装python3
安装环境 系统:阿里云服务器centos7.5系统 看见好多博客对centos安装python3的方式各不相同且都不完整,今天我来完整的演示安装python3 1.下载python3源码包 命令 wg ...
- Marriage Match II HDU - 3081(二分权值建边)
题意: 有编号为1~n的女生和1~n的男生配对 首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 然后输入f组,c,d表示编号为c的女生和编号为d的女生是朋友 进行配对的要求满足其一即 ...
- 【XSY1552】自动机 构造
题目大意 给你一个自动机,包含\(n\)个状态,指令集为前\(m\)个小写字母,对于每个状态\(s\)和每个指令\(i\),自动机均有后继\(T(s,i)\).请你求出一个长度不超过\(2^{20}\ ...
- composer阿里云短信服务不支持传参为数值--为2017年短信接口,2018阿里云有更新http://www.cnblogs.com/q1104460935/p/8916096.html
composer 阿里云短信服务使用 xuying/aliyun_mns 更新到2017年初,不再更新 ){;, ); }; } ; }; }; }} 以下为发送成功返回对象 object(A ...
- 「洛谷5283」「LOJ3048」「十二省联考2019」异或粽子【可持久化01trie+优先队列】
题目链接 [洛谷传送门] [LOJ传送门] 题目大意 让你求区间异或和前\(k\)大的异或和的和. 正解 这道题目是Blue sky大佬教我做的(祝贺bluesky大佬进HA省A队) 我们做过某一些题 ...
- 使用rt-thread中BSP-stm32 ENV构建工具报错
@2019-01-23 [小记] --路径问题 参照rtt官方<STM32 系列 BSP 制作教程> 构建项目时出现如下错误 error1:打开 menuconfig 出错 解决方法: 根 ...