数据库查询语言(Structured Query Language)

数据库查询语言:

DDL(data definition language) -数据定义语言,建库建表

DML (data manipulate language ) -数据操作语言,增删改

DQL (data query language) -数据查询语言

1.DDL(data definition language)

1.库操作

  1. 1.查看数据库
  2. show databases
  3. 2.查看数据库创造过程
  4. SHOW CREATE DATABASE
  5. 3.创建数据库
  6. CREATE DATABASE 数据库名
  7. 4.查看数据库
  8. SHOW SCHEMAS;
  9. 5.修改数据库(只能修改数据的默认字符编码)
  10. ALTER DATABASE DB CHASET GBK;
  11. 6.删除库
  12. drop database db1;

2.表操作

  1. 1.查看表
  2. show tables
  3. 2.查看所有列
  4. SHOW COLUMNS FROM tablename
  5. 3.查找表创建过程
  6. SHOW CREATE TABLE
  7. 4.查看用户权限
  8. SHOW GRANTS;
  9. 5.创建表
  10. create table tb1
  11. id int,
  12. name varchar(20)
  13. 6.删除表
  14. drop table tb
  15. 7.删除重建
  16. truncate table tb

单表修改操作

  1. 1.修改表名
  2. rename table tb1 to tb2
  3. 2.增加字段
  4. Alter table tb2
  5. add col varchar first;
  6. -first 表示加到最前面
  7. -after 表示加到某个字段之后
  8. 3.修改字段名
  9. alert table tb1
  10. change col1 col2 varcha4(100)
  11. 4.修改字段类型
  12. alert table tb1
  13. modify col decimal(3,2)
  14. 5.修改字段位置
  15. alert table tb
  16. modify col varchar(100) first;
  17. 6.删除字段
  18. alter table tb2
  19. drop column col1;

1.3创建表取值约束(对字段取值范围进行约束)

关键字 知识点 备注
not NULL值 NULL值表示没有值。但是''双单引号表示一个有效的值。
不同点,NULL还是占数据库存储空间的,但是''双单引号不占存储空间
primary key 1.主键可以是单列也可以是多列;
2.主键只允许非NULL值的列
3.主键默认有索引;4.主键是唯一的,不重复的
AutoIncrement 自动增加 自增主键,通过的LAST_INSERT_ID( )函数可以查看
自增主键不能回退;
可以手动的插入一个手动的值,如果这个值是表中的最大值,下一个自增值会从这个自增值开始增长;
填入null时自动增加
default value 设置默认值
unique 表示字段不能重复,允许重复的null值
foeign key 外键约束,限制某个字段的取值,只能取另一个键的值
增加外键,会相应增加外键索引。但是删除外键不能删除外键索引,要单独删除索引

详细语法

非空约束(NOT NULL)

  1. 1.添加非空约束
  2. create table tb2(
  3. col varchar(10) not null
  4. )
  5. alter table tb
  6. modify col varchar(10) not null
  7. 2.取消非空约束
  8. alter table tb
  9. modify col varchar(10);
  10. alter table tb
  11. modify col varchar(10) null;

主键约束(primary key)

  1. 1.添加主键
  2. creat table tb(
  3. id int primary key ;
  4. )
  5. creat table tb(
  6. id int ;
  7. name varchar(20);
  8. primary key (id,name);
  9. )
  10. 2.删除及修改主键
  11. alter table tb
  12. add primary key(id);
  13. alter table tb
  14. drop primary key(id);

自增(一般用域主键自增)

  1. creat table tb(
  2. id int primary key auto_increment ;
  3. )

外键约束

  1. 1.创建外键
  2. create table tb1(
  3. id int,
  4. foreign key (x) reference tb(id)
  5. 2.修改删除外键
  6. alter table tb
  7. drop foreign key(id) reference tb1(id)

2.DML (data manipulate language )数据操作语言

2.1 insert

  1. 1.插入单行数据和插入多行数据
  2. insert int tb (col1,col2,col3) values(val1,val2,val2);
  3. insert int tb (col1,col2,col3) values(val1,val2,val2);
  4. insert int tb (col1,col2,col3) values(val1,val2,val2);
  5. 批量插入:
  6. insert int tb (col1,col2,col3) values(val1,val2,val2),(val1,val2,val2),(val1,val2,val2);
  7. 2. 插入其他表的数据
  8. insert into tbcol1,col2 select col1,col2 from tb2
  9. insert into tb1 select * from tb

2.2 update

  1. update table set col=1

2.3 delete

  1. delete from table

全部删除建议使用truncate table ,因为delete 的原理时逐条删除数据;truncate table是删除表再新建表

3.DQL (data query language) -数据查询语言

3.1 简单查询

  1. select col from tb
  2. select * from tb

3.2 过滤及排序

关键字 知识点 备注
ORDER BY 1.排序两种状态,DESC 和 ASC ,默认ASC
2.可以同时按照多列排序,排序规则按照排序列的顺序,前一个字段相同时才按照后一个字段排序;
WHERE 获取数据的子集
DISTINCT 去除重复数据,只能在查询字段前面出现一次
as 查询的字段,或表达式结果,可以取别名,
as可以省略
where 后面不能使用字段别名,order by后面可以使用字段别名
group by 多行分组,求多行函数的时候使用
having 对多行函数计算结果进行过滤 where 和 having的区别
1. where过滤普通条件,不能过滤多行函数
2.having 过滤多行函数结果,能过滤普通函数;
3.where 在分组前过滤;
4.having必须跟在group by 后面。分组之后再过滤

select 子句的执行顺序

  • select
  • from
  • where
  • grop by
  • having
  • order by
  • limit

WHERE子句的操作符

关键字 知识点 备注
= 等值过滤
<> 不等值过滤
>  >=   <  <= 比较大小
In(3,78,6,21) 从一组数中间选值
Like 字符中模糊查郇
% 统配多个字符
_(下划线) 统配单个字符
\ 转义符,_  %
not not  between  andnot  itnot  like
and 并且
or 或者
is null
is not null
Null值过滤
between a and b 范围查询 包含指定的开始值和结束值
REGEXP 正则表达式,和like相似,但是会降低查询性能,
.(小黑点)表示任意一个字符
REGEXP BINARY 表示区分大小写
^和&可以作为其实和结束的约束
select * from user_info where user_id regexp 'oo'
正则表达式和like的区别在于,REGEXP匹配的是子串

3.3 查询字段处理

字符串处理函数

  1. char_length('a中') - 字符数
  2. length('') - 字节数
  3. concat('a','b','cde','fff') -连接字符串
  4. locate('abc', '-abc--abc-') - 返回第一个子串的位置,从1开始,找不到返回0
  5. insert('abcdefghijkl',2, 11, '---') - 用子串取代从2位置开始的11个字符
  6. lower('AdFfLJf') - 变为小写
  7. upper('AdFfLJf') - 变为大写
  8. left('AdFfLJf',3) - 返回最左边的三个字符
  9. right('AdFfLJf',3) - 返回最右边的三个字符
  10. trim(' a bc ') - 去除两端空格
  11. substring('abcdefghijklmn', 3, 6) - 3位置开始的6个字符
  12. REPLACE('Hello MySql','My','Your') - 子串替换

数字处理函数

  1. Ceil(-3.14)- 向上取整 ,不能制定位数
  2. floor(3.94) - 舍掉小数,向下取整
  3. format(391.536, 2) - 数字格式化为字符串,第二个参数是小数点后位数
  4. round(673.4974, 2) - 第二个参数,正数表示,四舍五入到小数点后两位,负数的话表示向上进位置,也即百位以上进位
  5. TRUNCATE(234,31, 1) - 舍去至小数点后1
  6. abs() -取绝对值

日期处理函数

  1. NOW() 返回当前的日期和时间
  2. CURDATE() 返回当前的日期
  3. CURTIME() 返回当前的时间

加密函数

  1. md5() 单向加密,无法解密
  2. sha() 相比md5()更加安全

Null函数

  1. IFNULL(数据1,数据2) - 数据1null返回数据2;不是null返回数据1
  2. coalesce(数据1,数据2,......) - 从左向右第一个不是null的数据

分页查询

  1. limit a,b a开始行数,b表示查询行数
  2. 相对效率比较低

多行函数(多行数据交给函数处理,产生一个计算结果)

  • 多行函数会忽略null值
  • 不能直接与普通字段一起查询
  • 一般和group by合用
  1. count() 计数,数量,默认null值忽略,但是count(*)的时候null值不忽略
  2. sum() 求和,可以多列上进行计算
  3. avg() 求平均数,只能处理单列,多列要用多个avg()函数
  4. max() 求最大值
  5. min() 求最小值

3.4 子查询

条件子查询

关键字 知识点 备注
= , <> ,>,< 单个值的查询
in , > all(元素),> any(元素) 多个值查询,in表示存在,all表示比最大的大,any表示比最小的大
(col1,col2)in 多列查询

行内视图和select字段子查询

  1. 行内视图
  2. select ... from (select ... from...) as tb
  3. select ... from tb where col in (select col1 from tb2 where )
  4. select ... from tb where id = (select id from tb2 where name='zhangsan')
  5. 字段子查询
  6. select col,(select col1 from tb1 where tb1.id = tb.id) from tb as tb

3.5 多表联查

  • 自联结
  • 将一张表看成两张表
  • 同一张表的主键和外键进行关联
  1. select tb1.col,tb2.col2
  2. from tb tb1,tb tb2
  3. where tb1.id = tb2.refe_id
  • 自然联结

    • 选取两个表中全匹配的数据,舍弃不匹配的数据。由于自然连接会丢弃与其他表没匹配的数据,所以查询的数据可能造成数据信息丢失
  1. select ...
  2. from tb
  3. [inner] join tb1 on tb.id = tb1.id
  • 外联结

    • left [out] join 为左边的表,筛选出所有符合 连接条件的数据
    • right [out] join 为右边的表,筛选出所有符合连接条件的数据

3.6 联合查询

  • 在单个查询中多个表关联查询出相似的数据
  • 对单个表执行相似的操作,按单个表返回数据

    关键字UNION
  • 必须两个以上select语句
  • 每个查询都必须包含相同的列;
  • UNION会自动去除重复的行
  • 使用UNION ALL 不去除重复的行
  • UNION 不允许多个ORDER BY语句,只能在最后使用

数据库基础01-SQL基础语法的更多相关文章

  1. 【知识库】-数据库_MySQL常用SQL语句语法大全示例

    简书作者:seay 文章出处: 关系数据库常用SQL语句语法大全 Learn [已经过测试校验] 一.创建数据库 二.创建表 三.删除表 四.清空表 五.修改表 六.SQL查询语句 七.SQL插入语句 ...

  2. Oracle数据库之PL/SQL基础

    介绍PL/SQL之前,先介绍一个图像化工具:Oracle SQL Developer 在oracle的开发过程中, 我们难免会使用第三方开发的软件来辅助我们书写SQL, pl/sql是一个不错的sql ...

  3. python3基础01(常见语法基础汇总)

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 换行\n 续行\ s[:i] + s[i:] 等于 s#转义 \e 空 \000 八进制 \oyy 十六进制 ...

  4. SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]

    --====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...

  5. SQL基础--&gt;层次化查询(START BY ... CONNECT BY PRIOR)

    --====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...

  6. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  7. SQL Server 基础 01 数据库、表操作

    对着书慢慢学习,一天一点点! 数据库操作 (create.alter.drop)  --3-3-1 /create database 语句创建数据库 create database testSQL - ...

  8. MariaDB——数据库基础与sql语句

    数据库介绍 什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据 ...

  9. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  10. 数据库学习---SQL基础(一)

     数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) SQL(struct query language)结构化查询语言:一种专门与数据库通信的语言, ...

随机推荐

  1. Python爬虫 requests库基础

    requests库简介 requests是使用Apache2 licensed 许可证的HTTP库. 用python编写. 比urllib2模块更简洁. Request支持HTTP连接保持和连接池,支 ...

  2. webpack+vue+.vue组件模板文件 所需要的包

    {  "name": "webpack-study02",  "version": "1.0.0",  "de ...

  3. let与var的一个重要区别

    我们先来看下面这一段代码 html代码 <ul> <li>sdfsdagsdgsa</li> <li>sdfsdagsdgsa</li> & ...

  4. Linux笔记(第二天)

    tail  -1  /etc/passwd 显示最后一行 一.用户类型: 超级用户:root 超级管理员 ID=0 普通用户:系统用户:uid:1~999(centos7) 1~499(centos6 ...

  5. npm run dev启动项目,electron提示throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again')

    npm run dev 项目,提示 throw new Error('Electron failed to install correctly, please delete node_modules/ ...

  6. 运行npm run start 提示primordials is not defined

    下载https://github.com/ant-motion/editor-list 执行 npm install npm start gulp构建时报错. 原因:安装gulp版本与node版本不兼 ...

  7. Uint47 calculator【map数组+快速积+各种取余公式】

    Uint47 calculator 题目链接(点击) In the distant space, there is a technologically advanced planet. One day ...

  8. Hadoop + Hive + HBase + Kylin伪分布式安装

    问题导读 1. Centos7如何安装配置? 2. linux网络配置如何进行? 3. linux环境下java 如何安装? 4. linux环境下SSH免密码登录如何配置? 5. linux环境下H ...

  9. c常用函数-strlen

    strlen 返回字符串长度 Action() { char test[] = "yyyHHHJJJoo"; unsigned int a; a = strlen(test); l ...

  10. linear-gradient,radial-gradient 渐变

    一.渐变效果 ->  线性渐变 方法: background-image: linear-gradient(direction, color-stop1, color-stop2, ...); ...