SQL必知必会-笔记
一.数据库/数据表
数据库(DATABASE):存储有组织的数据的容器;
数据库管理系统(DBMS):数据库软件.开发者通过 DBMS 操纵 DATABASE
表(TABLE):表是一种结构化的文件,用来存储特定类型的数据.注意表中的数据是特定类型,不能将顾客清单与订单清单存放于同一个表中;同一数据库中表名唯一;
列(COLUMN):表的一个字段,所有表都由COLUMN构成;每个列都有相应的数据类型.
行(ROW):表中的数据是按行存储,每个记录存储在自己的行内,也可以称作数据库记录(RECORD);
主键(PRIMARY KEY):表的一个字段(即一列),用来唯一标识表中的每一行;主键必不可少;
充当主键的条件:
1.任意两行不能具有相同的主键值;
2.每一行都必须具有一个主键值(且不能为NULL);
3.主键列中的值不允许修改或更新
4.主键值不能重用(如果某行从表中删除,它的主键不能赋予以后的新行);
补充:可以使用多列作为主键,使用多列时,上述条件必须应用到所有列,所有列值的组合必须唯一(单个列的值可以不唯一);
外键:
二.SQL语句按照功能不同,分为四类:
DDL:(DATA DEFINATION LANGUAGE),SQL语句中负责定义数据结构与数据库对象的语言,关键字有CREATE,ALTER,DROP;
DCL:数据库控制语言,用来设置或者更改数据库用户或者角色权限的语句;
DML:(DATA MANIPULATION LANGUAGE)数据操纵语言,实现对数据库的基本操作,如对表中数据的插入/删除和修改;
DQL:(DATA QUERY LANGUAGE)数据查询语言,关键字SELECT;
三.常用命令:
CREATE DATABASE 库名 :创建数据库
SHOW CREATE DATABASE 库名 :查看所创建库的信息
SHOW DATABASES :显示所有数据库;
USE 数据库名 :进入指定数据库;
SELECT DATABASE(): 查看正使用的数据库;
DROP DATABASE 库名 :删除数据库;
SHOW TABLES:查询当前数据库下所有数据表;
DESC 表名:查看指定数据表的表结构;
DROP TABLE 表名:删除表
注释:--注释之后的内容
#:这一行是注释
/* */:多行注释
四.创建数据库/创建数据表
1.创建数据库
CREATE DATABASE 数据库名;
CREATE DATABASE 数据库名 CHARSET UTF8;创建指定编码的数据库,注意UTF8之间没有-
1.创建表语句:
CREATE TABLE 表名
(
列中的名字和定义,用逗号隔开
);
举例:
CREATE TABLE products
(
prod_id CHAR(10) NOT NULL,
vend_id CHAR(10) NOT NULL,
prod_name CHAR(10) NOT NULL,
prod_price CHAR(8,2) NOT NULL,
);
注意:NULL是指没有值,""(空字符串)是有效值;
2.指定默认值:DEFAULT
举例:
CREATE TABLE orderItems
(
order_num INTEGER NOT NULL,
orer_item INTEGER NOT NULL,
quantity INTEGER NOT NULL DEFAULT 1,
);
对于quantity列,如果不给出,则默认为1;默认值经常用于日期或时间戳列.
补充:DEFAULT比NULL更为常用,对于计算或分组的列更是如此;
3.执行SQL脚本创建表并插入数据的步骤:直接粘贴到sqlyog或者workbench中执行.....
4.约束:NULL PRIMARY KEY UNIQUE DEFAULT
五.查询
1.SELECT 列名 FROM 表名: 从一个表中返回需要查找的列-检索单列;
2.SELECT 列1, 列2, 列3 FROM 表名: 从一个表中返回需要查找的多列信息-检索多列;
3.SELECT * FROM 表名 :使用通配符返回表中所有列
4.SELECT DISTINCT 列名 FROM 表名:返回该列中不同的值(相同的只显示一个);
5.SELECT DISTINCT 列1,列2 FROM 表名:如果两行中列1,列2都相同,则只显示一个
6.SELECT 列名 FROM 表名 LIMIT 5:从表中返回该列的前5行数据(MYSQL);
6.SELECT 列名 FROM 表名 WHERE ROWNUM <= 5:从表中返回该列的前5行数据(ORACLE)
7.SELECT 列中 FROM 表名 LIMIT 2 OFFSET 1:从第1行起(不包含第1行)显示2行(MYSQL);
可简写为 LIMIT 1,2;
8.ORDER BY 列1,列2:按照先按列1,再按列2的自然顺序排充(ORDER BY子句应在WHERE子句之后)
9.ORDER BY 列1 DESC:按照列1的降序排(DESC语句仅对其前面的列有效,多列排序需在每个列后加DESC关键字);
10.WHERE :创建规则过滤数据(无法返回NULL值),如 SELECT cust_id, cust_name FROM customers where cust_age>=20, 选择年龄在20岁以上的顾客ID和姓名
WHERE子句中可使用AND/OR/IN/NOT等子句,以创建过滤规则
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配.IN取一组由逗号分隔,括在圆括号中的合法值.
11.% 通配符:表示任意字符出现任意字数;但是不匹配NULL;
12._ 通配符:与%不同的是,它只匹配单个字符;即一个_代表一个字符,可匹配空格;
13.[] 通配符:用来指定一个字符集,必须匹配指定位置(通配符位置)的一个字符;
14.拼接字段:+ 或者 ||
15.聚集函数:AVG():返回某列的平均值;
COUNT():返回某列的行数
MAX():返回某列的最大值
MIN():返回某列的最小值
SUM():返回某列值之和
以上聚集函数可以组合使用;给合使用时,FROM前的最后一个函数后不加逗号!!!
16.创建数据分组:GROUP BY
分组语句会将NULL作为一个分组返回;
分组语句应在WHERE之后,ORDER BY 之前;
17.过滤分组语句:HAVING
18.内联结:INNER JOIN ON 连接等值字段
19.BETWEEN...AND...取之间的值,含头含尾,且小数在前,大数在后
六.更新
1.更改表结构语句:
增加列(字段):
ALTER TABLE 要更改的表名 做出的更改;
举例:
ALTER TABLE orderItems
ADD order_totalPrice DOUBLE(8,2) NOT NULL;
在orderItems表中增加一列order_totalPrice列,使用DOUBLE类型,且不为空;
删除列(字段):
ALTER TABLE orderItems
DROP COLUMN order_totalPrice;
在orderItems表中删除列oreder_totalPrice;
注意:数据库表中的更改不可撤销,操作前应进行完整的备份(模式和数据的备份);
修改列(字段)的数据类型和约束
ALTER TABLE 表名
MODIFY 列名 数据类型 约束;
修改列(字段)名
ALTER TABLE 表名
CHANGE 原字段名 新字段名 新类型 新约束;
修改表中的记录(行):其后可加WHERE子句
UPDATE 表名
SET 字段=新值;
2.重命名表语句:
RENAME TABLE 原表名 TO 新表名;
3.插入数据语句:
INSERT INTO
举例:插入完整/部分的行
INSERT INTO customers
(
cust_id,
cust_name,
cust_email
)
VALUES(
'10000007',
'philip',
'philip@outlook.com'
);
举例:插入检索出的数据
INSERT INTO customers
(
cust_id,
cust_contacts,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
)
SELECT cust_id,
cust_contacts,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
FROM custNew;
说明:
1.这个例子的用途:将custNew表中的相应数据插入到customers表中;
2.INSERT SELECT语句可以插入多行,即不管SELECT语句返回多少行,都将被插入;
添加数据:
INSERT INTO 表名 VALUES();
七.删除表/删除库
1.删除表(整个表)语句
DROP TABLE custcCopy;
注意:执行该语句将永久删除该表;
删除数据:其后可加WHERE子句
DELETE FROM 表名:将表中所有数据删除
八.常用数据类型:4种
整数: int
小数:double
字符串:varchar
日期:date
long类型:big int
字符串的值需要使用单引号或双引号包裹起来;
定义字符串类型的字段时,需要指定字符串的长度;
日期期进行比较时,需用单引号包裹;
sql的执行顺序:
from--where/having--order by/group by/limit--select
SQL必知必会-笔记的更多相关文章
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作
上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...
- 【SQL必知必会笔记(2)】检索数据、排序检索数据
上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- 《SQL必知必会》学习笔记整理
简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...
- 读书笔记--SQL必知必会--建立练习环境
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
- 读书笔记--SQL必知必会12--联结表
12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...
- 《SQL必知必会》学习笔记(一)
这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...
随机推荐
- jQuery之简单的表单验证
html部分: <body> <form method="post" action=""> <div class="in ...
- printf函数指向串口的方法
简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式),标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调 ...
- Java关键字以及一些基础解释
Java Se:Java Me 和Java Ee的基础,允许开发和部署在桌面,服务器,嵌入式环境和实时环境中使用的java程序,支持java web服务开发类 java ee:是目前java技术应用最 ...
- VS2008 查找失效怎么办
按Ctrl+F没有反应? visual studio 里 查找替换 显示不出来; 还能用 让他查找个不存在的文本还会弹出找不到的提示; 就是看不到 查找替换的操作框了; 问题解决方法: ...
- 如何查看Mysql event事件是否启用
mysql> show variables like 'event_scheduler';+-----------------+-------+| Variable_name | Value ...
- php查询内存信息
php查询内存信息,是为了更好的查看内存使用情况,更好的优化代码. 查看当前内存使用情况使用:memory_get_usage()函数. 查看内存使用峰值:memory_get_peak_usage( ...
- monkey无规则压力测试
例:monkey -p com.tencent.mtaexample -s 23 --throttle 100 --ignore-crashes --ignore-timeouts -v -v -v ...
- JQuery EasyUI validate 扩展
validate 扩展js $.extend($.fn.validatebox.defaults.rules, { equals: { validator: function(value,param) ...
- 数据库路由中间件MyCat - 源代码篇(11)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 4.配置模块 每个MyCatServer初始化时,会初始化: MyCatServer.java: publi ...
- cordova之旅之初识
emmmm, 一直徘徊在移动端采用什么技术比较好,一直也没有找到,让我为了一个移动端而去学习一波react全家桶是不现实的操作,反观自己的技术栈,通过长时间的对比和剖析找到了入口点,不管了先会写再说吧 ...