MySQL基本语句2020-07-07

一、DDL 语句(Data Definition Languages,数据定义语言)

这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。

1.创建数据库

create database db_name;

2.删除数据库

drop database db_name;

3.创建表

create table tb_name (
column_name_1 column_type_1 constraints,
column_name_2 column_type_2 constraints,
column_name_3 column_type_3 constraints,
...
)default charset = utf8; //指定中文字符集,可以给字段赋值中文
column_name 为列的名字, column_type 为列的数据类型, constraints 为列的约束条件。

4.查看表定义

desc tb_name;

5.查看创建表的SQL语句

show create table db_name;

6.删除表

drop table tb_name;//删除整个表连表名一起删除

7.修改表
修改表的数据类型

alter table tb_name modify [COLUMN] column_name column_definition [first | after column_name];

增加表字段

alter table tb_name add [COLUMN] column_name column_definition [first | after column_name];

删除表字段

alter table tb_name drop [COLUMN] column_name;

修改字段名

alter table tb_name change [COLUMN] old_column_name column_name column_definition [first | after column_name];

修改字段顺序

alter table tb_name modify [COLUMN] column_name column_definition [first | after column_name];
修改字段顺序主要是通过 first 和 after,在其后指定字段名则是调整至该字段前一位或后一位,不指定字段名则是调整至最前或者最后。

更改表名

alter table tb_name RENAME [to] new_tb_name;

二、DML 语句(Data Manipulation Language,数据操纵语句)

1.插入记录

insert into tb_name (field1, field2, ..., fieldn) values(value1, value2, ...,valuen);
可空字段、非空但是含有默认值的字段、自增字段可以不列在字段列表中。

insert into tb_name values(value1, value2, ...,valuen);
也可以不指定字段名称,VALUES 顺序和字段排列顺序一致。

insert into tb_name (field1, field2, ..., fieldn)
values
(record1_value1, record1_value2, ...,record1_valuen),
(record2_value1, record2_value2, ...,record2_valuen),
...
(recordn_value1, recordn_value2, ...,recordn_valuen);
也可以同时插入多行的记录。

2.更新记录

update tb_name set field1=value1, field2=value2, ... [where condition];

3.更新多个表中的数据

update tb_name1, tb_name2, ... set tb_name1.field=value, ... [where condition];

4.删除记录
  1. delete from tb_name [where condition];
  2. truncate table tb_name;//删除整个表数据,释放磁盘空间,自动增长的列的值返回为默认的种子,不能按条件删除,速度比delete快
5.删除多个表中的数据

delete tb_name1, tb_name2, ... FROM tb_name1, tb_name2, ... [where condition];
真正要删除的记录在 from前的 tb_name 中,FROM 后的 tb_name 是用于 WHERE 中的条件判断。

6.查询记录

select column_name from tb_name;
查询不重复的记录

在要查询的 column_name 前添加字段 distinct

select distinct column_name from tb_name;
条件查询

select column_name from tb_name WHERE condition;
排序

select * from tb_name [where condition] [order by field1 [desc|asc], field2 [desc|asc], ...,]];
desc 表示按照字段进行降序排序, asc 表示升序排序,不指定默认升序排序。

限制

select * from tb_name [limit offset_start, row_count];
offset_start 表示偏移量, row_conut 表示显示的行数。
select * from tb_name [limt row_count];
只指定一个参数时,默认偏移量为0。

聚合
很多情况下,需要对一些数据进行汇总。
select [field1, field2, ...] function_name
from tb_name
[where condition]
[group by field1, field2, ..., fieldn
[WITH ROLLUP]
[HAVING condition]];

  • function_name 表示要做的聚合操作,又称聚合函数。常用的有 sum()、 count(*)、 max() 和 min()。
  • group by 关键字表示要进行分类聚合的字段。
  • with rollup 表明是否对分类聚合后的结果进行再汇总。
  • having 关键字表示对分类后的结果再进行条件的过滤。

注意:having 和 where的区别在于,having 是对聚合后的结果进行条件的过滤,而 where 是对聚合前的记录进行过滤。

  • 表连接
    需要同时显示多个表中的字段的时候,通过表连接可以实现,表连接分为内连接和外连接两种。
    内连接选出两张表中互相匹配的记录。外连接会选出其它的记录。
  • 内连接

select field1, field2, ...,fieldn from tb_name1, tb_name2, ... [where condition];
外连接

外连接分为左连接和右连接
左连接:包含左边表中的所有记录,左边表中某些字段的记录在右边表中有没有匹配项会被显示为空。
右连接:包含右边表中的所有记录,右边表中某些字段的记录在左边表中有没有匹配项会被显示为空。

  • select left_field, right_field from left_tb_name
    LEFT JOIN right_tb_name ON condition;
  • select left_field, right_field from right_tb_name
    LEFT JOIN left_tb_name ON condition;
    子查询
    查询的时候,condition 需要的条件是另外一个 select 语句的结果,称为子查询。

子查询的关键字主要包括:in、 not in、 =、 !=、 exists 和
not exists 等。

  • 记录联合

将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来。关键字是 union 和 union all。

select * from tb_name1 [where condition]
union | union all
select *from tb_name2 [where condition]
...
union | union all
select * from tb_namen [where condition]
union all 是表示全部记录,包括了多个查询结果的重复记录。如果希望去掉多个查询结果的重复记录,使用 union 关键字。

三、DCL 语句(Data Control Language,数据控制语句)

这些语句主要是 DBA 用于管理系统中的对象权限

1.权限控制

授权
grant 权限列表 on 库名 to 用户名@"客户端地址"
idetified by "密码" //授权用户密码
with grant option ; //有授权权限,可选项

  • grant all on . to mydba@"%" identified by "passwd" with grant option;
  • grant all on db_name.tb_name to 'user_name'@'host_name';
    撤权
    revoke 权限列表 on 库名.表名 from 用户名@"客户端地址" ;
  • revoke all on db_name.tb_name from 'user_name'@'host_name';

2.grant授权

  • 权限列表
    • all //所有权限
    • usage //无权限
    • select,update,insert //个别权限
    • select,update(字段1,...字段N)//指定字段
  • 库名
    • . //所有库所有表
    • 库名.* //一个库
    • 库名.表名 //一张表
  • 用户名
    • 授权时自定义要有标示性
    • 存储在msql库的user表里
  • 客户端地址
    • % //所有主机
    • 192.168.1.% //网段
    • 192.168.1.1 //单台主机
    • localhost //本机
查询权限

select user();//显示登陆用户名及客户端地址
show grants;//用户显示自身访问权限
show grants for 用户名@"客户端地址"; // 仅限管理员查看普通用户权限
set password for 用户名@"客户端地址" = password("密码"); //管理员重置授权用户连接密码
drop user 用户名@"客户端地址"; //删除授权用户(必须有管理员权限)

四、DTL语句(数据事务语言)

如:commit ,rollback, savepoint

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348