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数 ...
随机推荐
- 查询mysql所有表数据、字段信息
根据库名获取所有表的信息 SELECT * FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'erp'; 根据库名获取所有表名称和表说明 S ...
- vue 项目规范
1, 组件化 2, css 分清单独和通用的 3, 封装请求 4, 命名原则 1: 尽量和后端保持一致 2: 简单常见的单词 3: 全部小写
- POJ 3169 Layout(差分约束 线性差分约束)
题意: 有N头牛, 有以下关系: (1)A牛与B牛相距不能大于k (2)A牛与B牛相距不能小于k (3)第i+1头牛必须在第i头牛前面 给出若干对关系(1),(2) 求出第N头牛与第一头牛的最长可能距 ...
- ArrayList练习之存储自定义对象并遍历
新建一个Student.java类 Student.java /* * 这是一个学生类 */ public class Student { private String name; private i ...
- HTML+CSS 制作HTML5标志图
效果图如下:(是用代码写的,而不是图片!) 网上看到的代码. 看了下,就是CSS的transform属性的应用.加上定位等.组合在一起形成图片. 没什么难点,就是width,left等数据得根据HTM ...
- webservice学习第二天
1 课程回顾 l 什么是webservice 远程调用技术:系统和系统之间的调用,获取远程系统里的业务数据 Webservice使用http传输SOAP协议的数据的一种远程调用技术 l Webserv ...
- Oracle中有关字符串操作的语法
Oracle中有关字符串操作的语法 Oracle提供了丰富的字符串函数 lpad()函数 lpad()函数用于左补全字符串.在某些情况下,预期的字符串为固定长度,而且格式统一,此时可以考虑使用lpad ...
- [转载] Asynchronous ActionScript Execution
Asynchronous ActionScript Execution Date September 19, 2009 Language ActionScript 3.0 Target Flash P ...
- POJ 3667 线段树的区间合并简单问题
题目大意:有一排标号1-N的房间.操作一:询问是不是有连续长度为a的空房间,有的话住进最左边(占用a个房间)操作二:将[a,a+b-1]的房间清空(腾出b个房间)思路:记录每个区间中“靠左”“靠右”“ ...
- [Bzoj3209]花神的数论题(数位dp)
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2633 Solved: 1182[Submit][Status][Disc ...