Sql数据库查询语言
1、概述
Sql是一种面向数据库的结构化查询语言。是符合美国国家标准化组织ANSI的一种计算机标准语言。
Sql具对数据库的操作有:增删改查。创建数据库、创建表、创建存储过程、创建视图等
RDBMS关系型数据库管理系统,是指一套数据库软件,有Mysql,DB2。Oracle等
除了Sql标准之外,各数据库软件都有自己的私有扩展。
数据库管理系统中的数据被存储在“表”的数据库对象中。表是相关数据项的集合,它由列和行组成。
Sql分为两个部分:数据库操作语言DML(Database Manipulation Language)和数据库定义语言DDL(Database Defination Language)
DML包含:增INSERT INTO、删DELETE、改UPDATE、查SELECT
DDL包含:
对数据库(创建数据库CREATE DATABASE、改动数据库ALTER DATABASE)
对数据库的表(创建数据库中的表 CREATE TABLE、更改表ALTER TABLE、删除表DROP TABLE)
对索引(创建索引CREATE INDEX、删除索引DROP INDEX)
注意:Sql对大写和小写不敏感。
在Sql中,文本值使用单引號'str'引起,数值不须要也不能使用引號
2、DML数据库操作语言
1、查询SELECT
1.DISTINCT
tableName :返回不同的值
2.WHERE
3.AND和OR
4.ORDER BY
列1 (ASC或DESC), 列2 (ASC或DESC):依照列进行排序,假设是多列。那么先依照列1排序,在列1中有同样的值时,再依照列2排序
2、插入INSERT INTO
3、更新UPDATE
4、删除DELETE FROM
5、TOP
6、LIKE
7、通配符
8、IN
9、BETWEEN AND
值1 AND 值2 :选择指定的列介于值1和值2之间的数据。
10、别名 Alias
11、JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
12、UNION
13、SELECT INTO
3、数据库定义语言DDL
1、CREATE DATABASE
2、CREATE TABLE
DATE类型不须要也不能指定。
3、约束Constraints
NOT NULL
- CREATE TABLE persons_back
- (
- id INT(16) NOT NULL,
- firstname VARCHAR(32) ,
- birth DATE
- );
UNIQUE
- CREATE TABLE persons_back
- (
- id INT(16) NOT NULL UNIQUE,
- firstname VARCHAR(32) UNIQUE,
- birth DATE
- );
- CREATE TABLE persons_back
- (
- id INT(16) NOT NULL ,
- firstname VARCHAR(32),
- birth DATE,
- UNIQUE (id),
- UNIQUE (firstname)
- );
上述对每列单独进行约束,以下对多列同一时候约束:
- CREATE TABLE persons_back
- (
- id INT(16) NOT NULL ,
- firstname VARCHAR(32),
- birth DATE,
- UNIQUE (id,firstname)
- );
事实上每一个UNIQUE都有一个名字,默觉得列名,也能够自己指明:UNIQUE 别名 (列名)。或者 CONSTRAINT 别名 UNIQUE (列名)
- CREATE TABLE persons_back
- (
- id INT(16) NOT NULL ,
- firstname VARCHAR(32),
- birth DATE,
- UNIQUE uc_personsID (id,firstname)
- );
- CREATE TABLE persons_back
- (
- id INT(16) NOT NULL ,
- firstname VARCHAR(32),
- birth DATE,
- CONSTRAINT uc_personsID UNIQUE (id,firstname)
- );
假设不指明别名,约束多个列以第一个列的名字为UNIQUE的名字。这种别名方式也能够是单列
- ALTER TABLE persons_back ADD UNIQUE (id,firstname)
- ALTER TABLE persons_back ADD CONSTRAINT uc_personsID UNIQUE (id,firstname)
也能够通过ALTER TABLE DROP INDEX 名字 的方式删除UNIQUE约束
- ALTER TABLE persons_back DROP INDEX id
Mysql中不支持使用下边的方式。Oracle适用:
- ALTER TABLE persons_back DROP CONSTRAINT uc_personsID
注意:假设UNIQUE约束时,没有指明NOT NULL,该列是能够为空值的。
PRIMARY KEY
主键约束的列。不能为空值。也不能有同样的值。也就是说PRIMARY KEY 结合了NOT NULL 和 UNIQUE 两者,
- CREATE TABLE persons_back
- (
- id INT(16) PRIMARY KEY,
- firstname VARCHAR(32),
- birth DATE
- );
或者
- CREATE TABLE persons_back
- (
- id INT(16) ,
- firstname VARCHAR(32),
- birth DATE,
- PRIMARY KEY (id)
- );
musql中,主键没有别名,也不是必需指明别名,删除的时候仅仅需指明PRIMARY KEY就可以,由于一个表仅仅有一个主键。
- ALTER TABLE person DROP PRIMARY KEY
FOREIGN KEY
- CREATE TABLE persons
- (
- id INT(16) PRIMARY KEY,
- firstname VARCHAR(32) NOT NULL,
- lastname VARCHAR(32) NOT NULL,
- city VARCHAR(32)
- )
- CREATE TABLE products_orders
- (
- order_id INT(16) PRIMARY KEY,
- order_name VARCHAR(32),
- p_id INT(16),
- FOREIGN KEY(p_id) REFERENCES persons(id)
- )
mysql中,外键的定义不能之间在列类型的后边,需单独一行定义,否则出错。
外键的命名方式与UNIQUE类似,
- FOREIGN KEY ns (p_id) REFERENCES persons(id)
或者
- CONSTRAINT ns FOREIGN KEY(p_id) REFERENCES persons(id)
不指名别名的话,默认就是列名
- ALTER TABLE products_orders DROP FOREIGN KEY p_id
注意:不知为什么在创建外键时,写的是FOREIGN KEY,mysql实现时,却成了KEY。删除也是这样。为什么?(待解决)
且在Mysql中使用MyISAM引擎能够创建外键,担不起作用;使用InnoDB引擎不能创建外键,不知为什么?
CHECK
CHECK约束是对表中列的值进行范围的限定。眼下mysql不支持CHECK字句,但也不会报错。会自己主动忽略。
- CREATE TABLE persons_back
- (
- id INT(16),
- firstname VARCHAR(32),
- birth DATE,
- p_id INT(16),
- CHECK (id>0 AND firstname IN('my'))
- ) ;
DEFAULT
DEFAULT是为列自己主动加入默认值,在插入的时候能够不必向该列插入数据,该列存有默认值,也能够插入数据进行更新。
- CREATE TABLE persons_back
- (
- id INT(16),
- firstname VARCHAR(32) DEFAULT 'my',
- birth DATE,
- p_id INT(16)
- ) ;
删除:ALTER TABLE 表名 ALTER 列名 DROP DEFAULT
- ALTER TABLE persons_back ALTER firstname DROP DEFAULT
注意是先对表ALTER,在对列ALTER。然后DROP DEFAULT
4、索引INDEX
5、DROP
6、ALTER
7、自己主动添加
- CREATE TABLE persons (
- id INT(16) NOT NULL AUTO_INCREMENT,
- firstname VARCHAR(32) NOT NULL,
- lastname VARCHAR(32) NOT NULL,
- city VARCHAR(32) DEFAULT NULL,
- email INT(11) DEFAULT NULL,
- PRIMARY KEY (id)
- )
4、函数function
在sql中能够使用一些函数。对选择的数据进行运算或筛选。
合计函数
AVG()
- SELECT * FROM persons WHERE num > (SELECT AVG(num) AS number FROM persons)
COUNT()
返回匹配条件的数据的行数
FIRST()
- SELECT city FROM persons LIMIT 1
LAST()
mysql也不支持last函数,该函数是取得表中指定列中最后一行的数据,mysql能够曲线实现,比方先获取最大的id,再依据id 获取最后一列数据
MAX MIN
SUM
- SELECT SUM(列名) FROM table
对表进行分组,然后对某列依照组求和
- SELECT 列1 , SUM(列2) FROM table GROUP BY 列1
对表依照列1分组后,再依照每组求和。当然也能够在选择列时不写列1,在GROUP BY中使用列1
GROUP BY
- SELECT 列1 , SUM(列2) FROM table GROUP BY 列1
HAVING
Havingkeyword的目的是给合计函数的结果做选择,前边限定选择条件时是使用WHEREkeyword。可是WHERE不能与合计函数连用,所以,仅仅能使用Having与合计函数连用,作为选择的限制前提条件
- SELECT 列1, SUM(列2) FROM table WHERE 先决条件 HAVING SUM(列2)>数值1
分组选择出,组的求和大于数值1的组
Sql数据库查询语言的更多相关文章
- SQL数据库查询语言(1)
目录 MySQL数据库 MySQL安装与配置 DDL数据定义语言 创建数据库 查看.删除数据库 修改.备份.恢复数据库 创建表 修改表 MySQL常用数据类型 DML数据操纵语言 Insert语句 m ...
- 关系型数据库查询语言 SQL 和图数据库查询语言 nGQL 对比
摘要:这篇文章将介绍图数据库 Nebula Graph 的查询语言 nGQL 和 SQL 的区别. 本文首发于 Nebula Graph 官方博客:https://nebula-graph.com.c ...
- SQL数据库
SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出“做什么”的命令,“怎么做” ...
- SQL数据库基础知识-巩固篇<一>
SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...
- SQL数据库学习,常用语句查询大全
数据库学习 sql server数据库基本概念 使用文件保存数据存在几个缺点: 1.文件的安全性问题: 2.文件不利于查询和对数据的管理: 3.文件不利于存放海量数据 4.文件在程序中控制不方便. 数 ...
- 一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇
文章的开头我们先来看下什么是图数据库,根据维基百科的定义:图数据库是使用图结构进行语义查询的数据库,它使用节点.边和属性来表示和存储数据. 虽然和关系型数据库存储的结构不同(关系型数据库为表结构,图数 ...
- KTV项目 SQL数据库的应用 结合C#应用窗体
五道口北大青鸟校区 KTV项目 指导老师:袁玉明 歌曲播放原理 SQL数据库关系图 C#解决方案类图 第一步:创建数据库连接方法和打开方法和关闭方法! public class DBHelper { ...
- jquery autocomplete实现读取sql数据库自动补全TextBox
转自我本良人 原文 jquery autocomplete实现读取sql数据库自动补全TextBox 项目需要这样子一个功能,其他部门提的意见,只好去实现了哦,搞了好久才弄出来,分享一下. 1.前台页 ...
- 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0
作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...
随机推荐
- java 生成二维码工具
二维码生成 Gitee:https://gitee.com/search?utf8=%E2%9C%93&search=qrext4j&group_id=&project_id= ...
- Oracle 11G RAC 修改IP
实验环境 类别 修改前 修改后 PUBLIC 172.18.4.182 rac1 192.168.56.10 rac1 172.18.4.184 rac2 192.168.56.20 rac2 PRI ...
- (9) tomcat中实现同一虚拟机中所有应用程序单点登录SSO
- root连接ubuntu18.04“拒绝访问”的解决方法
1.设置root账户 sudo passwd root 2.ssh远程登陆拒绝访问:修改SSH配置文件 sudo vim /etc/ssh/sshd_config 找到并用#注释掉这行:PermitR ...
- 记第一次面试的悲惨经历QAQ
面试岗位:测试开发 自我介绍 :根据介绍的内容,会问简历上涉及到的东西,主要是项目: 手写代码:给一个数组,求数组中所有数字拼接后能得到的最小数字.例:{3,32,312},输出312323. 关于计 ...
- 稳定排序(sort+结构体)
#include<cstdio> #include<algorithm> #include<string.h> using namespace std; struc ...
- POJ2926-Requirements,曼哈顿距离。去掉绝对值符号暴力枚举所有情况,神薙!
Requirements 好吧,这题我实在想不到什么优化的方法,看了看讨论区,顺便膜拜了一下大 ...
- iOS 调用系统相册 相机 时,显示中文标题
解决手机语言已经设置显示中文 在调用系统相册.相机界面 时显示英文问题, 在 info.plist里面添加Localized resources can be mixed YES 表示是否允许应用程序 ...
- HDU3549 最大流 裸题
EK算法 时间复杂度o(n*m*m) 因为有反向边每次bfs时间为 n*m 每次删一条边 最多m次 代码 #include<iostream> #include<string.h& ...
- 最近公共祖先(Least Common Ancestors)
题意: 给定一棵有根树T,给出若干个查询lca(u, v)(通常查询数量较大),每次求树T中两个顶点u和v的最近公共祖先,即找一个节点,同时是u和v的祖先,并且深度尽可能大(尽可能远离树根).通常有以 ...