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数 ...
随机推荐
- 6. 将单独表空间(File-Per-Table Tablespaces)复制到另一个实例
6. 将单独表空间复制到另一个实例 本节介绍如何将单独表空间从一个MySQL实例复制 到另一个MySQL实例,也称为可传输表空间功能. 将InnoDB单独表空间复制到其他实例的原因有很多: - 在不对 ...
- 跟初学者学习IbatisNet第三篇
这一章我们主要介绍一下IbatisNet里面的动态sql语句的运用,比如有时候我们想进行模糊查询,参数是动态加入的.或者要实现top n ,order by ,分页等功能的时候,我们就不得不用动态拼接 ...
- Python模块学习 - openpyxl读写excel
openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读 ...
- 一篇文章告诉你,TLS 1.3 如何用性能为 HTTPS 正名
序•魔戒再现 几天前,OpenSSL 官方宣布即将发布的新版本 (OpenSSL 1.1.1) 将会提供 TLS 1.3 的支持,而且还会和之前的 1.1.0 版本完全兼容,这当然是个好消息. ...
- 【尺取】HDU Problem Killer
acm.hdu.edu.cn/showproblem.php?pid=5328 [题意] 给定一个长度为n的正整数序列,选出一个连续子序列,这个子序列是等差数列或者等比数列,问这样的连续子序列最长是多 ...
- 可以学习相关框架【转:https://testerhome.com/topics/6283】
https://testerhome.com/topics/6283 单元测试方面(Java): Junit:本来想用我熟悉的testng,但是开发的同学说测试springmvc只能用Junit.所以 ...
- [转]android 如何获取第三方app的sha1值
对于android 应用的sha1值和md5值的获取,如果是我们自己的应用,不论是获取测试的和正式的都是比较方便的.但是如何去获取别人开发的app的sha1和md5呢,并且我们只有apk有没有相关的文 ...
- GDKOI2018游记
D0 开开心心去酒店,在Vanda,资磁,然而和其他人住的比较远,不资磁. 开开心心打开玩具熊,吓尿了..第四部贼难. 晚上看了看网络流,1点才睡.3点多好像梦到玩具熊被吓醒,4点继续睡,6点起. D ...
- Linux kernel 内核学习路线
看了下各位大神的推荐路线,总结如下: 0. 跟着项目走: 1. 学会用.熟练用linux系统: 2. Linux Kernel Development. 3. Understanding the Li ...
- HDU 6396 贪心+优先队列+读入挂
Swordsman Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...