开发者社区> 技术小胖子> 正文

SQL语句

简介:
+关注继续查看

SQL语句


DDL: CREATE, DROP, ALTER

DML: INSERT(REPLACE), DELETE, UPDATE, SELECT

DCL: GRANT, REVOKE

数据类型:

字符:

变长字符:VARCHAR(#),VARBINARY(#)

定长字符: CHAR(#), BINARY(#)

内建类型: ENUM, SET

对象: TEXT, BLOB

数值:

精确数值

整型: INT

TINYINT, AMALLINT, INT, MEDIUMINT, BIGINT

十进制:DECIMAL

近似数值

单精度: FLOAT

双精度:  DOUBLE

日期时间型:

DATE:    日期

TIME:   时间

DATATIME: 日期时间

TIMESTAMP: 时间戳

YEAR(2|4):  年份

修饰符:

NOT NULL

DEFAULT VALUE

UNSIGNED 

AUTO_INCREMENT

PRIMARY KEY


DDL:

数据库

CREATE DATABASE [IF NOT EXISTS] db_name;

CHARACTER SET [=] charset

COLLATE [=] collate

SHOW CHARACTER SET;    查看字符集

SHOW COLLATIONS;       查看排序规则

DROP DATABASE [IF EXISTS] db_name;  删除数据库

数据表

CREATE TABLE [IF NOT EXISTS] tb_name (col1 type1,col2,type2,...)

PRIMARY KEY(col1,col2,...)

INDEX(col1,col2,...)

UNIQUE(col1,col2,...)

表选项

ENGINE [=] engine_name

ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}

SHOW ENGINES;  查看存储引擎;

获取帮助:

mysql> HELP CREATE TABLE;

查看创建命令:

SHOW CREATE TABLE tb_name;

查看表状态:

SHOW TABLE STATUS LIKE 'tb_name'\G

删除表:

DROP TABLE [IF EXISTS] tb_name;

修改表:

ALTER TABLE tb_name;

字段:

添加字段: ADD

ADD col1 data_type [FIRST | AFTER col_name]

删除字段: DROP

修改字段: ALTER ,CHANGE,MODIFY

改字段名称: CHANGE

改属性定义:  MODIFY

索引:

添加索引: add

删除索引:  drop {INDEX} INDEX_NAME;

表选项


查看表上的索引:

SHOW INDEXES FROM [db_name.]tb_name;

删除索引:

ALTER TABLE tb_name DROP INDEX index_name;


索引:

索引是一种特殊数据结构; 定义在查找时作为查找条件的字段; 

索引,要有索引名称;

创建索引:

CREATE INDEX index_name ON tb_name(index_col_name,...);

删除索引:

DROP INDEX index_name ON tb_name;

DML: 

INSERT :

INSERT [INTO] tbl_name [(col_name,...)]{VALUES | VALUE}(val1,...)


例:

#INSERT INTO tb1 VALUES (1,'yanguo','m'),(2,'xiaolongnv','f');

#INSERT INTO tb1 (id,name) VALUES (3,'zhangwuji'),(4,'zhaomin');

DELETE:

DELETE FROM tbl_name [WHERE where_condition]

例:

DELETE FROM tb1 WHERE id=3;

    

SELECT:

SELECT col1,col2,... FROM tb_name;

SELECT col1,col2,... FROM tb_name [WHERE clause][ORDER BY 'col_name'][LIMIT [m,]n];

字段表示法:

* : 表示所有字段

as : 字段别名, col1 AS alias1

WHERE clase:

操作符

<, > ,==,>=,<=,!=

BETWEEN ... AND... (在..和..之间)

LIKE:

% 任意长度的任意字符

— 任意单个字符

RLIKE:

正则表达式,不建议使用;

条件逻辑操作:

and 

or

not

例:

SELECT * FROM tb1;

SELECT * FROM tb1 WHERE id <3;

SELECT * FROM tb1 WHERE gender IS NULL;

SELECT * FROM tb1 ORDER BY id DESC;

SELECT * FROM tb1 WHERE id BETWEEN 2 AND 4;

SELECT * FROM tb1 WHERE name LIKE 'z%';

SELECT * FROM tb1 WHERE name LIKE 'z%';



UPDATE

UPDATE tb_name SET col1=new-val1,col2=new_val2,... [WHERE clause]

注意:后面一定要指定条件WHERE,不然会更改整个表;

例:

UPDATE tb1 SET gender='f' WHERE id=4;



用户账号及权限管理:


用户账号: ‘user’@'host'

user: 用户名

host: 此用户访问mysql服务时允许通过哪些主机远程创建连接;

IP, 网络地址, 主机名, 通配符(%和_);

禁止检查主机名

my.cnf [mysqld]

skip_name_resove = yes  跳过主机名解析

创建用户

CREATE USER 'username'@'host' [IDENTIFIED BY 'passwd'];

例:

CREATE USER 'candy'@'%' IDENTIFIED BY 'candy';

SELECT User,Host,Password FROM mysql.user;

删除用户:

DROP USER ‘username’@'host';

授权:

权限: 管理权限,数据库,表,字段,存储例程

GRANT priv_type,...ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'passwd']

[with option];

priv_type: ALL [PRIVILEGES]

db_name.tb_name:

*.* 所有库的所有表;


db_name.* 指定库的所有表;

db_name.tb_name: 指定库的指定表;

db-name.routine_name: 指定库的存储例程;

查看指定用户获得的授权:

SHOW GRANTS FOR 'user'@'host';

 

查看当前用户的授权:

SHOW GRANTS FOR CURRENT_USER;

撤消授权:

REVOKE priv_type,... ON db_name.tb_name FROM 'user'@'host';

注意:mariaDB服务进程启动时会读取mysql库中的所有授权表至内存中;

1.GRANT或REVOKE等执行权限操作会保存于表中,mariadb的服务进程会自动重读授权表;

2.对于不能够或不能及时重读授权表的命令,可手动让mariadb的服务进程重读授权表;

mysql> flush privileges;





      本文转自limingyu0312  51CTO博客,原文链接:http://blog.51cto.com/limingyu/1956848,如需转载请自行联系原作者







版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
21006 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
17485 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
30393 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
16701 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
23140 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
14173 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载