2019-02-27MySQL基本指令一目了然版

数据库排名:
Oracle(关系型)
MySQL(关系型)
SQLServer(关系型)
PostgreSQL(关系型)
MongoDB(非关系数据库)
DB2(关系型)
Redis(非关系数据库)
ElasticSearch(非关系数据库)

行(记录)
列(字段)

关系型数据库:想

SQL语句(结构化查询语言)

DDL(数据定义语言): create / drop / alter
DML(数据操作语言 - Data Manipulation Language): insert / delete / update / select
DCL(数据控制语言): grant / revoke

1. DDL

1. 创建数据库

create database 数据库名字;
create database 数据库名字 default charset utf8; ;-- 创建数据库的时候指定数据库中的字符集编码方式
create database if not exists 数据库名字;          -- 当指定数据库不存在的时候创建数据库
use 数据库名;          -- 切换数据库

2. 删除数据库

drop database 数据库名字;          -- 删除数据库
drop database if exists 数据库名字;          -- 当数据库存在的时候删除数据库

3. 创建表

create table 表名(字段名1 字段类型1 约束1, 字段名2 字段类型2 约束2, ...);          - 创建表
create table if not exists 表名(字段名1 字段类型1 约束1, 字段名2 字段类型2 约束2, ...);          -- 当指定表不存在的时候创建表

4. 删除表

drop table 表名;          -- 删除指定表
drop table if exists 表名;          -- 删除已经存在的指定表

5. 修改表

alter table 表名 add column 字段名 字段类型 约束;          -- 添加列
alter table 表名 drop column 字段名;          --删除列

2.DML

1. 插入数据

insert into 表名 values(值列表);          -- 按表中字段的顺序依次给每一列赋值,添加一行记录
insert into 表名(字段列表) values(值列表);          -- 按字段列表顺序依次给每一列赋值,添加一行记录

2. 删除数据

delete from 表名;          -- 删除整张表(删除后表不存在了)
truncate table 表名;          -- 清空指定表中的所有数据(表还在)
delete from 表名 where 条件语句;          -- 删除满足条件的行

3.更新数据

update 表名 set 字段1=新值1,字段2=新值2,...;          --更新全表的指定字段(一般不用)
update 表名 set 字段1=新值1,字段2=新值2,... where 条件;          --更新满足条件的行的指定字段

4.查询数据

1.直接查询

select * from 表名;          -- 查询指定表的所有行所有列
select 字段1,字段2,... from 表名;          --查询表中所有行的指定列(投影)

2.列重命名

select 字段1 as 新字段名1,字段2 as 新字段2,... from 表名;          --查询表中所有行的指定列,并且给相应的字段重命名(这儿的as可以省略)

3.对查询结果重新赋值

select 字段1,if(字段2, 值1,值2),... from 表名 where 条件;          --查询表中满足条件的行指定的列的数据

注意: 在字段选中查询字段的位置可以通过if(字段条件,值1,值2)的方式来通过条件修改获取到的值。通过case 字段 when 值 then 值1 else 值2 end的方式能达到同样的效果。if的方式只在MySQL有效

4.对列做运算

select concat(字段1,字段2) from 表名 where 条件;          -- 将查询到的指定列合并在一起返回数据

5.模糊查询

查询的时候通过like条件可以对数据库进行模糊查询

6.排序

select * from 表名 order by 字段名;          --查询结果按指定字段的值升序排列
select * from 表名 order by 字段名 desc;          --查询结果按指定字段的值降序排列;如果把des换成asc就会变成升序
注意: 排序的时候还可以通过加逗号指定多个排序关键字,例如:select * from td_student order bg gender asc, stuid desc -- 对查询结果先按性别升序排序,然后再按学号降序排序

7.限制

select * from 表名 limit 数量;          --只获取前指定数量条结果
select * from 表名 limit 数量1 offset 数量2;          --跳过前数量2条数,获取数量1条数据

8. 去重

select distinct 字段 from 表名;

sql条件语句:

  • =          -- 等于

  • <>          -- 不等于

  • >          -- 大于

  • <          -- 小于

  • =          -- 大于等于

  • <=          -- 小于等于

  • and          -- 逻辑与运算

  • or          -- 逻辑或运算

  • in          -- 集合运算; 例如: stuid in(1001, 1002); 选中stuid值是1001和1002的行

  • between 值1 and 值2          -- 在值1和值2之间

  • like --通常配合通配符%_一起使用

注意: 如果条件是判断某个字段是否为空,不能使用=null<>null要用is nullis not null

SQL数据类型:
在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。 一下是MySQL中常见的数据类型。MySQL数据类型

  • char(size)          -- 定长字符串
  • varchar(size)          -- 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符
  • text          -- 存放最大长度为 65,535 个字符的字符串。
  • int(size)           -- -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
  • FLOAT(size,d)          --带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
  • DOUBLE(size,d)           --带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
  • bit          -- 相当于bool类型,只有0和1两个值
  • date          -- 日期。格式:YYYY-MM-DD, 支持的范围是从 '1000-01-01' 到 '9999-12-31'
  • DATETIME          -- 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP          -- 时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS
  • TIME          -- 时间。格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59'

SQL约束:
not null -- 不能为空
default 值 -- 设置默认值
primary key -- 主键约束(主键是表中能够唯一标识一条记录的列)
unique -- 值唯一

5.约束管理

1.添加约束/索引

alter table 表名 add constraint 索引名 约束(字段名);          --给指定字典添加指定约束

2.删除索引

alter table 表名 drop index 索引名;          --移除指定索引对应的约束

3.添加外键约束

alter table 表名 add constraint 外键索引名 foreign key (字段1) references 表名2 (字段2)

4.删除外键约束

alter table 表名 drop foreign key 外键索引名;

6.高级操作

1.聚合

max() -- 最大值
min() -- 最小值
sum() -- 求和
avg() -- 求平均值
count() -- 求个数

2.分组

group by(字段) -- 按照指定字段的值进行分组
注意: 如果是对分组后的结果进行筛选不能使用where而是使用having

3.连接

内连接: inner join 表名 on 连接条件

左外连接就是把左表不满足连接条件的记录也查出来对应的记录补上null
左外连接: left outer join 表名 on 连接条件
右外连接: right outer join 表名 on 连接条件

4.添加索引

create index 索引名 on 表(字段);
alter table 表名 drop index from 索引名;

7.DCL - grant/revoke

1.创建用户

create user '用户名'@'登录地址' identified by '密码'; -- 登录地址可以是localhost表示本机登录,也可以是指定的ip地址,还可以是%表示任意地址

2.授权

grant 权限类型 on 数据库.对象 to 用户; -- 为指定用户添加指定数据库的指定对象的指定权限
revoke 权限类型 on 数据库.对象 from 用户; -- 撤销/召回指定用户对指定数据库的指定对象的指定权限

权限类型: select(查看), insert(添加),delete(删除),update(更新),creat(创建),drop(删除), alter(更改), all privileges(所有权限)

grant 权限类型 on 数据库.对象 to 用户 with grant option; --添加权限,并且可以将自己的权限再授权给别人

3.事务

begin; --开启事务环境
commit; --事务提交
rollback; --事务回滚

8. pyMySQL

  1. 创建数据库连接
    连接对象 = pymysql.connect() - 返回连接对象
    连接对象.close() -- 关闭连接

  2. 获得游标 对象
    游标对象 = 连接对象.cursor()

3.获取游标对象取到的内容
获取内容 = 游标对象.fetchall()

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

推荐阅读更多精彩内容