SQL笔记——菜鸟教程笔记【薛定谔‘.s cat的笔记】

第一遍学SQL是在廖雪峰老师的网站,笔记链接:https://blog.csdn.net/m0_47812755/article/details/108791100

本篇是在菜鸟教程简单过了一遍之后的笔记补充。也并不是把上篇笔记所有没写的都补充完整了。一些东西看起来确实 用得少,也没有写上来。东西太多也记不住。也会丧失看下去的兴趣。
所以,前篇笔记内容相对完整,此篇只是简单补充。

菜鸟教程笔记补充

一、基础命令

  • use XXX; 命令用于选择数据库。
  • set names utf8; 命令用于设置使用的字符集。
  • SELECT * FROM Websites; 读取数据表的信息。

– 标签里小写方便辨认单词。

  • SELECT - 从数据库中提取数据select
  • UPDATE - 更新数据库中的数据update
  • DELETE - 从数据库中删除数据delete
  • INSERT INTO - 向数据库中插入新数据insert into
  • CREATE DATABASE - 创建新数据库create database
  • ALTER DATABASE - 修改数据库alter database
  • CREATE TABLE - 创建新表create table
  • ALTER TABLE - 变更(改变)数据库表alter table
  • DROP TABLE - 删除表drop table
  • CREATE INDEX - 创建索引(搜索键)create index
  • DROP INDEX - 删除索引drop index

1.SELECT DISTINCT

SELECT DISTINCT 返回唯一不同的值。

SELECT DISTINCT column_name,column_name
FROM table_name;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IhePwNAn-1601028675490)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200925111720054.png)]

执行后的结果返回"country" 列中选取唯一不同的值。也算是去重。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHjn6SmD-1601028675513)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200925111810296.png)]

2.DELETE

可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变。

DELETE FROM table_name;DELETE * FROM table_name;

3.SELECT TOP

用于规定要返回的记录的数目。

  • 对于拥有数千条记录的大型表来说,是非常有用的。
  • 并非所有的数据库系统都支持 SELECT TOP 语句。MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。

SQL Server / MS Access 语法

SELECT TOP number|percent column_name(s)
FROM table_name;

MySQL 语法

SELECT column_name(s)
FROM table_name
LIMIT number;
-- 实例:
SELECT *
FROM Persons
LIMIT 5;

二、高级命令

1.LIKE

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

例子

选取 name 以字母 “G” 开始的所有客户:

SELECT * FROM Websites
WHERE name LIKE 'G%';

SELECT * FROM Websites -- 选取 name 以字母 "k" 结尾的所有客户  注意百分号位置
WHERE name LIKE '%k'

SELECT * FROM Websites -- 选取 name 包含模式 "oo" 的所有客户:
WHERE name LIKE '%oo%';

结果

img

  • “%” 符号用于在模式的前后定义通配符

2. 通配符

通配符可用于替代字符串中的任何其他字符。

  • 通配符与 SQL LIKE 操作符一起使用。
  • SQL 通配符用于搜索表中的数据。
通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist] 或 [!charlist]不在字符列中的任何单一字符

MySQL 中使用 REGEXPNOT REGEXP 运算符 (或 RLIKENOT RLIKE) 来操作正则表达式

SELECT * FROM Websites   -- 选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
WHERE name REGEXP '^[GFs]';

3. IN

IN 操作符允许您在 WHERE 子句中规定多个值。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

4. BETWEEN(取值)

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

5. UNION(合并)

SQL UNION 操作符合并两个或多个 SELECT 语句的结果。

  • UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
  • UNION 操作符只会选取不同的值。如果允许重复的值,请使用 UNION ALL。
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

SQL UNION ALL则会列出所有的值。

6.SELECT INTO(复制)

备份、复制。

例子:

1.创建 Websites 的备份复件:

SELECT *
INTO WebsitesBackup2016
FROM Websites;

2.只复制一些列插入到新表中:

SELECT name, url
INTO WebsitesBackup2016
FROM Websites;

可以加where。

7.INSERT INTO SELECT (复制)

也是复制。

INSERT INTO table2
SELECT * FROM table1;

INSERT INTO Websites (name, country) -- 实例
SELECT app_name, country FROM apps;

select into from 和 insert into select 都是用来复制表

两者的主要区别为:

  • select into from 要求目标表不存在,因为在插入时会自动创建;
  • insert into select from 要求目标表存在。

8.创建库和表

SQL CREATE DATABASE 创建库

CREATE DATABASE dbname;

SQL CREATE TABLE 创建表

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

实例:

CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

9.SQL 约束

SQL 约束用于规定表中的数据规则。

如果存在违反约束的数据行为,行为会被约束终止。

约束:
  1. NOT NULL - 指示某列不能存储 NULL 值。约束强制字段始终包含值。
  2. UNIQUE - 保证某列的每行必须有唯一的值
  3. PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  4. FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  5. CHECK - 保证列中的值符合指定的条件。
  6. DEFAULT - 规定没有给列赋值时的默认值。
  • UNIQUEPRIMARY KEY约束均为列或列集合提供了唯一性的保证。
CREATE TABLE table_name   -- 在创建表的时候插入约束
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
....
);

例如:

CREATE TABLE Persons
(
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    PRIMARY KEY (Id_P)  //PRIMARY KEY约束
)

添加 NOT NULL 约束

ALTER TABLE Persons         --小写方便辨认    alter table
MODIFY Age int NOT NULL;	--小写方便辨认	modify

删除 NOT NULL 约束

ALTER TABLE Persons
MODIFY Age int NULL;        -- 不写NULL就可以了。

其他约束增删方法也一样

10.索引

菜鸟教程的索引方法和廖雪峰教程的索引方法不太一样。

菜鸟教程:

CREATE INDEX index_name
ON table_name (column_name)

廖雪峰教程:

ALTER TABLE students
ADD INDEX idx_score (score);

11.删除

DROP + 要删除的关键词名字 + xx名

DROP INDEX table_name.index_name -- 索引
DROP TABLE table_name	-- 表
DROP DATABASE database_name		--数据库

TRUNCATE TABLE table_name	-- 删除表内的数据,但并不删除表本身

12.ALTER TABLE

ALTER TABLE 语句用于在已有的表中添加、删除或修改列。

在表中添加列
ALTER TABLE table_name
ADD column_name datatype  -- 删除的时候就把add编程drop
改变表中列的数据类型
ALTER TABLE table_name
ALTER COLUMN column_name datatype

13.AUTO INCREMENT(自增)

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,  -- 这里设置了AUTO_INCREMENT
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

14.视图

新建视图
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

更新视图
CREATE OR REPLACE VIEW view_name AS   -- view_name: 要更改的视图。
SELECT column_name(s)
FROM table_name
WHERE condition
删除视图
DROP VIEW view_name

15.日期函数Date

MySQL Date 函数

函数描述
NOW()返回当前的日期和时间
CURDATE()返回当前的日期
CURTIME()返回当前的时间
DATE()提取日期或日期/时间表达式的日期部分
EXTRACT()返回日期/时间的单独部分
DATE_ADD()向日期添加指定的时间间隔
DATE_SUB()从日期减去指定的时间间隔
DATEDIFF()返回两个日期之间的天数
DATE_FORMAT()用不同的格式显示日期/时间

SQL Date 数据类型

MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:

  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
  • YEAR - 格式:YYYY 或 YY

SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:

  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:唯一的数字

**提示:**如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值