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数 ...
随机推荐
- ES搭建
https://www.cnblogs.com/jstarseven/p/6803054.html
- 厚溥教育1718部数据库连接作业答案,分装一个操作数据库而无需写SQL语句的函数
<?php header("Content-type:text/html;charset=utf8"); //PHP操作数据库的函数 function phpsql($dbc ...
- python对象销毁(垃圾回收)
Python 使用了引用计数这一简单技术来跟踪和回收垃圾. 在 Python 内部记录着所有使用中的对象各有多少引用. 一个内部跟踪变量,称为一个引用计数器. 当对象被创建时, 就创建了一个引用计数, ...
- 【HIHOCODER 1605】小Hi的生成树计数
描述 小Hi最近对生成树(包含所有顶点的联通无环子图.)非常的感兴趣,他想知道对于特定的简单平面无向图是不是存在求生成树个数的简单方法. 小Hi定义了这样的图:一个以{0,1,2--n}为顶点的图,顶 ...
- Extjs中获取grid数据
(1)grid.getStore().getRange(0,store.getCount()); //得到grid所有的行 (2)grid.getSelectionModel().getSelecti ...
- 遇到的Ajax相关问题
- Python+selenium(Autolt实现上传)
AutoIt是一个使用类似BASIC脚本语言的免费软件,被设计用来进行Windows GUI的自动化测试.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务. 此次小编介绍的是利用Auto ...
- Leetcode 260.只出现一次的数字III
只出现一次的数字III 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5 ...
- POJ3621 Sightseeing Cows【最短路】
题目大意:在一个无向图里找一个环,是的点权和除以边权和最大 思路:UVA11090姊妹题 事实上当这题点权和都为1时就是上一题TUT #include <stdio.h> #include ...
- 【搜索】codeforces C. The Tag Game
http://codeforces.com/contest/813/problem/C [题意] 给定一棵有n个结点的树,初始时Alice在根结点1,Bob在非根结点x; Alice和Bob轮流走,每 ...