SQL教程(一)简单实例学习:基础入门级

6 篇文章 0 订阅
6 篇文章 0 订阅


目录

一、🌎SQL 简介

1.1 📜SQL 是什么?

1.2 📜SQL 能做什么?

1.3 📜SQL 是一种标准 - 但是...

1.4 📜在您的网站中使用 SQL

1.4 📜RDBMS

1.5 📜请记住...

1.6 📜SQL 语句后面的分号?

1.7 📜一些最重要的 SQL 命令

二、⚙️实践出真知 Practice Overview

三、🥇Summary

获取源码?私信?关注?点赞?收藏?


SQL 是用于访问和处理数据库的标准的计算机语言。

在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。


一、🌎SQL 简介


SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。


1.1 📜SQL 是什么?

  • SQL 指结构化查询语言,全称是 Structured Query Language。
  • SQL 让您可以访问和处理数据库,包括数据插入、查询、更新和删除。
  • SQL 在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

1.2 📜SQL 能做什么?

  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限

1.3 📜SQL 是一种标准 - 但是...

虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。

然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。


1.4 📜在您的网站中使用 SQL

要创建一个显示数据库中数据的网站,您需要:

  • RDBMS 数据库程序(比如 MS Access、SQL Server、MySQL)
  • 使用服务器端脚本语言,比如 PHP 或 ASP
  • 使用 SQL 来获取您想要的数据
  • 使用 HTML / CSS

1.4 📜RDBMS

RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。

RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。

RDBMS 中的数据存储在被称为表的数据库对象中。

表是相关的数据项的集合,它由列和行组成。


1.5 📜请记住...

  • SQL 对大小写不敏感:SELECT 与 select 是相同的。

1.6 📜SQL 语句后面的分号?

某些数据库系统要求在每条 SQL 语句的末端使用分号。

分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

在本教程中,我们将在每条 SQL 语句的末端使用分号。


1.7 📜一些最重要的 SQL 命令

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引


二、⚙️实践出真知 Practice Overview

/*
一、sql执行顺序 
(1)from 
(3) join 
(2) on 
(4) where 
(5)group by(开始使用select中的别名,后面的语句中都可以使用)
(6) avg,sum.... 
(7)having 
(8) select 
(9) distinct 
(10) order by 

从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。 
*/
select * from websites;
select name , country from websites;
select DISTINCT country from websites;
-- 下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 的所有网站
select * from websites where country = 'CN'; 
-- 如果是数值字段,请不要使用引号。
select * from websites where id = 1;
-- 下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站:
select * from websites
where country='CN'
and alexa > 50;
-- 下面的 SQL 语句从 "Websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户:
SELECT * FROM websites
where country in ('USA','CN');
-- 等同于
select * from websites
where country='USA'
OR country='CN';
-- 下面的 SQL 语句从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:
SELECT * from websites
WHERE alexa > 15
AND country in('USA','CN');
-- 下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序: 
-- 默认升序,DESC 降序
SELECT * FROM websites
ORDER BY alexa DESC;
-- 下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序:
SELECT * from websites
-- 首先按照column1 排序,再按照 column2 排序
ORDER BY alexa,country;
-- 假设我们要向 "Websites" 表中插入一个新行。我们可以使用下面的 SQL 语句:
INSERT INTO websites(id,name,url,alexa,country)
VALUES('10','百度','http://www.baidu.com','888','CN');
-- 下面的 SQL 语句将插入一个新行,但是只在 "name"、"url" 和 "country" 列插入数据(id 字段会自动更新):
INSERT INTO websites(name,url,country)
VALUES('长春工大','https://www.ccut.edu.cn/','CN');
-- insert into scorebak select * from socre where neza='neza'   --插入一行,要求表scorebak 必须存在
-- select *  into scorebak from score  where neza='neza'  --也是插入一行,要求表scorebak 不存在
-- 假设我们要把 "菜鸟教程" 的 alexa 排名更新为 5000,country 改为 USA。我们使用下面的 SQL 语句:
UPDATE websites set country='CNN',name='ob'
WHERE id=3;
-- 假设我们要从 "Websites" 表中删除网站名为 "Facebook" 且国家为 USA 的网站。我们使用下面的 SQL 语句:
DELETE from websites 
where country='CN' and name='长春工大';

-- 您可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
-- DELETE FROM table_name;
-- 注释:在删除记录时要格外小心!因为您不能重来!



-- 高级教程
-- 并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。
-- 降序排序,选取前两个
select * 
FROM websites
ORDER BY id DESC
LIMIT 2;
-- LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
-- 下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户:
select * from websites
WHERE name LIKE 'G%';

/*
"%" 符号用于在模式的前后定义通配符(默认字母)。您将在下一章中学习更多有关通配符的知识。
下面的 SQL 语句选取 name 以字母 "k" 结尾的所有客户
%	替代 0 个或多个字符
_	替代一个字符
*/
SELECT * FROM websites
WHERE name LIKE '%K';
-- 下面的 SQL 语句选取 name 包含模式 "oo" 的所有客户
SELECT * FROM websites
WHERE name LIKE '%oo%';
-- 下面的 SQL 语句选取 name 不包含模式 "oo" 的所有客户
SELECT * FROM websites
WHERE name NOT LIKE '%oo%';
-- 下面的 SQL 语句选取 url 以字母 "https" 开始的所有网站
SELECT * FROM websites
WHERE url LIKE 'https%';
-- 下面的 SQL 语句选取 url 包含模式 "oo" 的所有网站
SELECT * from websites
WHERE url LIKE '%oo%';
-- 下面的 SQL 语句选取 name 以一个任意字符开始,然后是 "oogle" 的所有客户
SELECT * FROM websites
WHERE name LIKE '_oogle';
-- 下面的 SQL 语句选取 name 以 "G" 开始,然后是一个任意字符,然后是 "o",然后是一个任意字符,然后是 "le" 的所有网站
SELECT * FROM websites
WHERE name LIKE 'G_o_le';

/*
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
*/
-- 下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站
SELECT * FROM websites
WHERE name REGEXP '^[GFs]';
--  下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站
SELECT * FROM websites
WHERE name REGEXP '^[A-H]';
-- 下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站
SELECT * FROM websites
WHERE name REGEXP '^[^A-H]'
-- 或者加not
SELECT * FROM websites
WHERE name not REGEXP '^[A-H]';
-- 下面的 SQL 语句选取 name 为 "Google" 或 "菜鸟教程" 的所有网站
SELECT * FROM websites
WHERE name in ('Google','ob');
-- 下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站
SELECT * FROM websites
WHERE alexa BETWEEN 1 AND 20;
-- 如需显示不在上面实例范围内的网站,请使用 NOT BETWEEN
SELECT * FROM websites
WHERE alexa not BETWEEN 1 AND 20;
-- 下面的 SQL 语句选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站
SELECT * from websites
WHERE alexa BETWEEN 1 AND 20 
AND country not in ('USA','IND');
-- 下面的 SQL 语句选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站
SELECT * FROM websites
WHERE name BETWEEN 'A' AND 'H';
-- 下面的 SQL 语句选取 name 不介于 'A' 和 'H' 之间字母开始的所有网站
SELECT * FROM websites
WHERE name not BETWEEN 'A' AND 'H';

/**/
SELECT * FROM access_log;
-- 下面的 SQL 语句选取 date 介于 '2016-05-10' 和 '2016-05-14' 之间的所有访问记录
SELECT * FROM access_log
WHERE DATE BETWEEN '2016-05-10' AND '2016-05-14';
-- 下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。提示:如果列名称包含空格,要求使用双引号或方括号
SELECT name as n, country as c
from websites;
-- 在下面的 SQL 语句中,我们把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名
SELECT name ,CONCAT(url,',',alexa,',',country) as site_info
FROM websites;
-- 下面的 SQL 语句选取 "菜鸟教程" 的所有访问记录。我们使用 "Websites" 和 "access_log" 表,并分别为它们指定表别名 "w" 和 "a"(通过使用别名让 SQL 更简短)
SELECT w.name,w.url,a.count,a.date
from websites as w,access_log as a 
WHERE a.site_id=w.id  AND w.`name`="菜鸟教程";
--  不带别名的相同的 SQL 语句:
SELECT websites.name,websites.url,access_log.count,access_log.date
from websites,access_log
WHERE access_log.site_id=websites.id  AND websites.`name`="菜鸟教程";
-- 请注意,"Websites" 表中的 "id" 列指向 "access_log" 表中的字段 "site_id"。上面这两个表是通过 "site_id" 列联系起来的。然后,如果我们运行下面的 SQL 语句(包含 INNER JOIN)
SELECT websites.id,websites.`name`,access_log.count,access_log.date
FROM websites
INNER JOIN access_log 
ON websites.id = access_log.site_id;
/*
不同的 SQL JOIN
在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:
INNER JOIN:如果表中有至少一个匹配,则返回行    交集
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行   并集
*/
-- 下面的 SQL 语句将返回所有网站的访问记录
SELECT websites.`name`,websites.id,access_log.site_id,access_log.date,access_log.count
FROM websites
INNER JOIN access_log
ON websites.id=access_log.site_id
ORDER BY access_log.count;
-- LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
-- 下面的 SQL 语句将返回所有网站及他们的访问量(如果有的话)。以下实例中我们把 Websites 作为左表,access_log 作为右表:
-- 即使没有也会返回,空值
SELECT websites.`name`,websites.country,access_log.site_id,access_log.date,access_log.count
FROM websites
LEFT JOIN access_log
on websites.id=access_log.site_id
ORDER BY access_log.count DESC;
-- 在 access_log 表添加一条数据,该数据在 Websites 表没有对应的数据
INSERT INTO `access_log` (`aid`, `site_id`, `count`, `date`) VALUES ('12', '6', '111', '2016-03-09');
-- 下面的 SQL 语句将返回网站的访问记录。以下实例中我们把 Websites 作为左表,access_log 作为右表 与left join 相反
SELECT websites.`name`,access_log.date,access_log.count
FROM websites
RIGHT JOIN access_log
ON websites.id=access_log.site_id
ORDER BY access_log.count;
-- 下面的 SQL 语句将返回网站的访问记录 以下实例中我们把 Websites 作为左表,access_log 作为右表
/*
A inner join B 取交集。
A left join B 取 A 全部,B 没有对应的值为 null。
A right join B 取 B 全部 A 没有对应的值为 null。
A full outer join B 取并集,彼此没有对应的值为 null。
对应条件在 on 后面填写。
*/
-- mysql 不支持full OUTER JOIN
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
FULL OUTER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
-- SQL UNION 操作符合并两个或多个 SELECT 语句的结果。
/*
UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
*/
--  下面的 SQL 语句从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值)
SELECT country FROM websites
UNION
SELECT country FROM apps 
ORDER BY country;
-- UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!
SELECT country FROM websites
UNION ALL
SELECT country FROM apps 
ORDER BY country;
-- 下面的 SQL 语句使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的中国(CN)的数据(也有重复的值)
SELECT country,`name` FROM websites
WHERE country = 'CN'
UNION ALL
SELECT country,app_name FROM apps 
WHERE country = 'CN'
ORDER BY country;
/*
通过 SQL,您可以从一个表复制信息到另一个表。
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
通过 SQL,您可以从一个表复制信息到另一个表。
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
*/
-- 复制 "apps" 中的数据插入到 "Websites" 中:
INSERT INTO websites(`name`,country)
SELECT app_name,country
from apps;
-- 只复 id=1 的数据到 "Websites" 中:
INSERT INTO websites(`name`,country)
SELECT app_name,country
from apps
WHERE id=1;
-- 下面的 SQL 语句创建一个名为 "my_db" 的数据库:
create DATABASE my_db;
-- CREATE TABLE 语句来添加。
CREATE TABLE my_table(id int);
--  现在我们想要创建一个名为 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City。我们使用下面的 CREATE TABLE 语句:
CREATE TABLE Persons(
	PersonID int,
	LastName VARCHAR(255),
	FirstName VARCHAR (255),
	Address VARCHAR (255),
	City VARCHAR (255)
);
-- 三大范式,五大约束
-- PRIMARY KEY , FOREIGN KEY , NOT NULL , CHECK , nuique
CREATE TABLE Persons
(
    Id_P int NOT NULL PRIMARY KEY,   -- PRIMARY KEY约束
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
)
-- 下面的 SQL 强制 "ID" 列、 "LastName" 列以及 "FirstName" 列不接受 NULL 值:
CREATE TABLE Persons
(
    ID int NOT NULL,   -- PRIMARY KEY约束
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
		Age VARCHAR (255),
    Address varchar(255),
    City varchar(255)
)
-- 在一个已创建的表的 "Age" 字段中添加 NOT NULL 约束如下所示:
ALTER TABLE persons
MODIFY Age INT NOT NULL;
-- 在一个已创建的表的 "Age" 字段中删除 NOT NULL 约束如下所示:
ALTER TABLE persons
MODIFY Age INT NULL;
-- 下面的 SQL 在 "Persons" 表创建时在 "P_Id" 列上创建 UNIQUE 约束:
CREATE TABLE Persons
(
    P_Id int NOT NULL UNIQUE,   -- PRIMARY KEY约束
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
		Age VARCHAR (255),
    Address varchar(255),
    City varchar(255)
);
-- 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
CREATE TABLE Persons
(
    P_Id int NOT NULL,   -- PRIMARY KEY约束
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
		Age VARCHAR (255),
    Address varchar(255),
    City varchar(255),
		CONSTRAINT uc_PersonID UNIQUE(P_Id,LastName)
);
-- 当表已被创建时,如需在 "P_Id" 列创建 UNIQUE 约束,请使用下面的 SQL:MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE persons
ADD UNIQUE (P_Id);
-- 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE persons
ADD CONSTRAINT uc_PersonsID UNIQUE(P_Id,LastName);
-- 如需撤销 UNIQUE 约束,请使用下面的 SQL:
ALTER TABLE persons
DROP INDEX pk_PersonID;
-- 如需撤销 UNIQUE 约束,请使用下面的 SQL:
CREATE TABLE Persons
(
    P_Id int NOT NULL PRIMARY KEY,   -- PRIMARY KEY约束
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
		Age VARCHAR (255),
    Address varchar(255),
    City varchar(255)
);
-- 如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束,请使用下面的 SQL 语法:
CREATE TABLE Persons
(
	P_Id int NOT NULL,
	LastName varchar(255) NOT NULL,
	FirstName varchar(255),
	Address varchar(255),
	City varchar(255),
	CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
);
-- 当表已被创建时,如需在 "P_Id" 列创建 PRIMARY KEY 约束,请使用下面的 SQL:
ALTER TABLE persons
ADD PRIMARY KEY (P_Id);
-- 如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束,请使用下面的 SQL 语法:
ALTER TABLE persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName);
-- 如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
ALTER TABLE persons
DROP PRIMARY KEY;
-- 下面的 SQL 在 "Orders" 表创建时在 "P_Id" 列上创建 FOREIGN KEY 约束:
-- 保证persons P_Id 是主键
CREATE TABLE orders(
	O_Id int not null,
	OrderNO int not null,
	P_Id  int,
	PRIMARY KEY(O_Id),
	FOREIGN KEY(P_Id) REFERENCES persons(P_Id)
);
-- 如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:
CREATE TABLE orders(
	O_Id int not null,
	OrderNO int not null,
	P_Id  int,
	PRIMARY KEY(O_Id),
	CONSTRAINT fk_PerOrders
	FOREIGN KEY(P_Id) 
	REFERENCES persons(P_Id)
);
-- 当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:
ALTER TABLE orders
ADD FOREIGN KEY(P_Id)
REFERENCES persons (P_Id);
-- 如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:
ALTER TABLE orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY(P_Id)
REFERENCES persons (P_Id);
-- 如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:
ALTER TABLE orders
DROP FOREIGN KEY fk_PerOrders;
-- 下面的 SQL 在 "Persons" 表创建时在 "P_Id" 列上创建 CHECK 约束。CHECK 约束规定 "P_Id" 列必须只包含大于 0 的整数。
CREATE TABLE persons(
	P_Id int not null,
	LastName VARCHAR (255) not null,
	FirstName VARCHAR (255) ,
	Address VARCHAR (255),
	City VARCHAR(255),
	CHECK (P_Id>0)
)
-- 如需命名 CHECK 约束,并定义多个列的 CHECK 约束,请使用下面的 SQL 语法:
CREATE TABLE persons(
	P_Id int not null,
	LastName VARCHAR (255) not null,
	FirstName VARCHAR (255) ,
	Address VARCHAR (255),
	City VARCHAR(255),
	CONSTRAINT chk_Person CHECK (P_Id>0 AND City='ChangChun')
)
-- 当表已被创建时,如需在 "P_Id" 列创建 CHECK 约束,请使用下面的 SQL
ALTER TABLE orders
ADD CHECK (P_Id>0);
-- 如需命名 CHECK 约束,并定义多个列的 CHECK 约束,请使用下面的 SQL 语法:
ALTER TABLE orders
ADD CONSTRAINT chk_Person CHECK (P_Id>0 and City='Changchun');
-- 如需撤销 CHECK 约束,请使用下面的 SQL:
ALTER TABLE Persons
DROP CHECK chk_Person;
-- 下面的 SQL 在 "Persons" 表创建时在 "City" 列上创建 DEFAULT 约束:
CREATE TABLE persons(
	P_Id int not null,
	LastName VARCHAR (255) not null,
	FirstName VARCHAR(255),
	Address VARCHAR(255),
	City VARCHAR(255) DEFAULT 'sadness'
);
-- 通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:
CREATE TABLE orders(
	O_Id int not null,
	OrderNo int not null,
	P_Id int,
	OrderDate date DEFAULT CURDATE()
);
-- SELECT CURDATE();
-- 当表已被创建时,如需在 "City" 列创建 DEFAULT 约束,请使用下面的 SQL:
ALTER TABLE persons
ALTER City SET DEFAULT 'sadness';
-- 如需撤销 DEFAULT 约束,请使用下面的 SQL:
ALTER TABLE persons
ALTER City DROP DEFAULT;
-- 索引,常常在列上创建
-- 下面的 SQL 语句在 "Persons" 表的 "LastName" 列上创建一个名为 "PIndex" 的索引:下面的 SQL 语句在 "Persons" 表的 "LastName" 列上创建一个名为 "PIndex" 的索引:
CREATE INDEX PIndex 
ON persons (LastName);
-- 如果您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
CREATE INDEX PIndex
ON persons (LastName,FirstName);
-- 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
ALTER TABLE persons
DROP INDEX PIndex;
-- 如果我们仅仅需要删除表内的数据,但并不删除表本身,那么我们该如何做呢?请使用 TRUNCATE TABLE 语句:
TRUNCATE TABLE persons;
-- 如需在表中添加列,请使用下面的语法:
ALTER TABLE persons
ADD Age INT;
-- 如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
ALTER TABLE persons
DROP COLUMN Age;
-- 要改变表中列的数据类型,请使用下面的语法:
ALTER TABLE persons
MODIFY COLUMN Age int;
-- Auto-increment 会在新记录插入表中时生成一个唯一的数字。  自增
create table s(
	id int not null AUTO_INCREMENT,
	`name` VARCHAR(255) NOT null,
	PRIMARY key(id)
);
CREATE TABLE P
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
-- 要让 AUTO_INCREMENT 序列以其他的值起始,请使用下面的 SQL 语法:
ALTER TABLE P AUTO_INCREMENT=10;
-- 要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):
INSERT INTO P(LastName, FirstName)
VALUES('111','22');
-- 视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。
-- 视图 "Current Product List" 会从 "Products" 表列出所有正在使用的产品(未停产的产品)。这个视图使用下面的 SQL 创建:
CREATE VIEW CurrentList AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=0;
-- 我们可以像这样查询上面这个视图:
SELECT * FROM CurrentList;
-- Northwind 样本数据库的另一个视图会选取 "Products" 表中所有单位价格高于平均单位价格的产品:
CREATE VIEW ProductsAAP AS
SELECT ProductName,Price
FROM Products
WHERE Price>(SELECT AVG(Price) FROM Products)
-- 我们可以像这样查询上面这个视图:
SELECT * FROM ProductsAAP;
-- Northwind 样本数据库的另一个视图会计算在 1997 年每个种类的销售总数。请注意,这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据:
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName;
-- 现在,我们希望向 "Current Product List" 视图添加 "Category" 列。我们将通过下列 SQL 更新视图:
-- 重新创建
CREATE VIEW CurrentList AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=0;
-- 您可以通过 DROP VIEW 命令来删除视图。
DROP VIEW CurrentList;
--  现在,我们希望从上表中选取 OrderDate 为 "1996-07-04 00:00:00" 的记录。我们使用下面的 SELECT 语句:
select * from orders WHERE OrderDate='1996-07-04 00:00:00'
-- 我们如何仅仅选取在 "Address" 列中带有 NULL 值的记录呢?我们必须使用 IS NULL 操作符:
SELECT LastName,FirstName
FROM persons
WHERE Address is null;
-- 我们如何仅仅选取在 "Address" 列中不带有 NULL 值的记录呢?我们必须使用 IS NOT NULL 操作符:
SELECT * FROM websites
WHERE url IS not null;
-- 如果alexa列为null值,则赋予0,否则,取原值
select id,name,url,ifnull(alexa,0)from websites;
select id,name,url,COALESCE(alexa,0) from websites;
/*

数据类型	描述
CHARACTER(n)	字符/字符串。固定长度 n。
VARCHAR(n) 或
CHARACTER VARYING(n)	字符/字符串。可变长度。最大长度 n。
BINARY(n)	二进制串。固定长度 n。
BOOLEAN	存储 TRUE 或 FALSE 值
VARBINARY(n) 或
BINARY VARYING(n)	二进制串。可变长度。最大长度 n。
INTEGER(p)	整数值(没有小数点)。精度 p。
SMALLINT	整数值(没有小数点)。精度 5。
INTEGER	整数值(没有小数点)。精度 10。
BIGINT	整数值(没有小数点)。精度 19。
DECIMAL(p,s)	精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。
NUMERIC(p,s)	精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同)
FLOAT(p)	近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。
REAL	近似数值,尾数精度 7。
FLOAT	近似数值,尾数精度 16。
DOUBLE PRECISION	近似数值,尾数精度 16。
DATE	存储年、月、日的值。
TIME	存储小时、分、秒的值。
TIMESTAMP	存储年、月、日、小时、分、秒的值。
INTERVAL	由一些整数字段组成,代表一段时间,取决于区间的类型。
ARRAY	元素的固定长度的有序集合
MULTISET	元素的可变长度的无序集合
XML	存储 XML 数据
*/
/*
函数
SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1,end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式
*/
-- 下面的 SQL 语句从 "access_log" 表的 "count" 列获取平均值:
select AVG(count) AS CountAvg
FROM access_log;
-- 下面的 SQL 语句选择访问量高于平均访问量的 "site_id" 和 "count":
SELECT * FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);
-- 下面的 SQL 语句计算 "access_log" 表中 "site_id"=3 的总访问量:
SELECT COUNT(count) AS nums FROM access_log
WHERE site_id='3';
-- 下面的 SQL 语句计算 "access_log" 表中总记录数:
SELECT COUNT(*) FROM access_log;
-- 下面的 SQL 语句计算 "access_log" 表中不同 site_id 的记录数:  及几种site_id  不重复的记录
SELECT COUNT(DISTINCT site_id) AS nums FROM access_log; 
-- 查询websites 表中 alexa列中不为空的记录的条数
SELECT COUNT(alexa) FROM websites;
-- 下面的 SQL 语句选取 "Websites" 表的 "name" 列中第一个记录的值:
SELECT `name` FROM websites LIMIT 1;
-- 下面的 SQL 语句选取 "Websites" 表中第一个记录的值:  加排序
SELECT * FROM websites
ORDER BY name ASC
LIMIT 1;
-- 下面的 SQL 语句选取 "Websites" 表的 "name" 列中最后一个记录的值: 倒序
SELECT * FROM websites
ORDER BY name DESC
LIMIT 1;
-- 下面的 SQL 语句从 "Websites" 表的 "alexa" 列获取最大值:
select MAX(id) AS MaxId FROM websites;
-- 下面的 SQL 语句从 "Websites" 表的 "alexa" 列获取最小值:
SELECT MIN(id) AS MinId FROM websites;
-- 下面的 SQL 语句查找 "access_log" 表的 "count" 字段的总数:  计算列和
SELECT SUM(alexa) FROM websites;
-- 统计 access_log 各个 site_id 的访问量: 通过group by 分组,计算 不同访问量 从from 开始读取
/*
一、sql执行顺序 
(1)from 
(3) join 
(2) on 
(4) where 
(5)group by(开始使用select中的别名,后面的语句中都可以使用)
(6) avg,sum.... 
(7)having 
(8) select 
(9) distinct 
(10) order by 

从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。 
*/
SELECT site_id , SUM(count)
FROM access_log
GROUP BY site_id;
-- 下面的 SQL 语句统计有记录的网站的记录数量:
SELECT websites.`name`,COUNT(access_log.aid)AS nums 
FROM access_log
LEFT JOIN websites ON access_log.site_id=websites.id
GROUP BY websites.`name`;
-- HAVING 子句
/*
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
*/
-- 现在我们想要查找总访问量大于 200 的网站。我们使用下面的 SQL 语句:
SELECT websites.`name`,websites.url,SUM(access_log.count) AS sums 
from (access_log INNER JOIN websites ON access_log.site_id=websites.id)
GROUP BY websites.`name`
HAVING sums > 200;
-- HAVING SUM(access_log.count)>200;
-- 现在我们想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200。我们在 SQL 语句中增加一个普通的 WHERE 子句:
SELECT websites.`name`,websites.url,websites.alexa,SUM(access_log.count) AS sums 
FROM (access_log INNER JOIN websites ON access_log.site_id=websites.id)
WHERE alexa < 200
GROUP BY websites.`name`
HAVING sums>200;
-- EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。
-- 现在我们想要查找总访问量(count 字段)大于 200 的网站是否存在。我们使用下面的 SQL 语句:
SELECT websites.`name`,websites.url
FROM websites
WHERE EXISTS(SELECT count FROM access_log WHERE websites.id=access_log.site_id AND count > 200);
-- UCASE() 函数把字段的值转换为大写。
-- 下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为大写:
SELECT UCASE(`name`) AS Uname,url
FROM websites;
-- 或者UPPER
-- LCASE() 函数把字段的值转换为小写。
SELECT LCASE(`name`) AS Lname,url
FROM websites;
SELECT LOWER(`name`) AS Lname,url
FROM websites;
-- MID() 函数用于从文本字段中提取字符。
-- 下面的 SQL 语句从 "Websites" 表的 "name" 列中提取前 4 个字符:
SELECT MID(`name`,1,3) AS MIDname
FROM websites;
-- LEN() 函数返回文本字段中值的长度。
-- 下面的 SQL 语句从 "Websites" 表中选取 "name" 和 "url" 列中值的长度:
SELECT `name`,LENGTH(url) AS lengthurl
FROM websites;
-- ROUND() 函数用于把数值字段舍入为指定的小数位数。四舍五入 
-- ROUND(X): 返回参数X的四舍五入的一个整数。
SELECT ROUND(1.23);
SELECT ROUND(-1.63);
-- ROUND(X,D): 返回参数X的四舍五入的有 D 位小数的一个数字。如果D为0,结果将没有小数点或小数部分。 保留几位小数
SELECT ROUND(1.23,3);
SELECT ROUND(1.23,0);
-- NOW() 函数返回当前系统的日期和时间。
SELECT `name`,url,NOW() AS nowdate
FROM websites;
-- FORMAT() 函数用于对字段的显示进行格式化。
-- 下面的 SQL 语句从 "Websites" 表中选取 name, url 以及格式化为 YYYY-MM-DD 的日期:
-- 大写Y 四位数年份  小写y 两位年份
-- 大写M 英语月份  小写阿拉伯数字
-- 大写D 英语日  小写阿拉伯数字
SELECT `name`,url,DATE_FORMAT(NOW(),'%y-%m-%d') AS date
SELECT `name`,url,DATE_FORMAT(NOW(),'%Y-%M-%D') AS date
FROM websites;
-- 
-- 
-- 
/*
SQL 语句	语法
AND / OR	SELECT column_name(s)
FROM table_name
WHERE condition
AND|OR condition
ALTER TABLE	ALTER TABLE table_name
ADD column_name datatype
or

ALTER TABLE table_name
DROP COLUMN column_name

AS (alias)	SELECT column_name AS column_alias
FROM table_name
or

SELECT column_name
FROM table_name AS table_alias

BETWEEN	SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASE	CREATE DATABASE database_name
CREATE TABLE	CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name2 data_type,
...
)
CREATE INDEX	CREATE INDEX index_name
ON table_name (column_name)
or

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

CREATE VIEW	CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETE	DELETE FROM table_name
WHERE some_column=some_value
or

DELETE FROM table_name
(Note: Deletes the entire table!!)

DELETE * FROM table_name
(Note: Deletes the entire table!!)

DROP DATABASE	DROP DATABASE database_name
DROP INDEX	DROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL)
DROP TABLE	DROP TABLE table_name
GROUP BY	SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING	SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
IN	SELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTO	INSERT INTO table_name
VALUES (value1, value2, value3,....)
or

INSERT INTO table_name
(column1, column2, column3,...)
VALUES (value1, value2, value3,....)

INNER JOIN	SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LEFT JOIN	SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
RIGHT JOIN	SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
FULL JOIN	SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LIKE	SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
ORDER BY	SELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECT	SELECT column_name(s)
FROM table_name
SELECT *	SELECT *
FROM table_name
SELECT DISTINCT	SELECT DISTINCT column_name(s)
FROM table_name
SELECT INTO	SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_table_name
or

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_table_name

SELECT TOP	SELECT TOP number|percent column_name(s)
FROM table_name
TRUNCATE TABLE	TRUNCATE TABLE table_name
UNION	SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION ALL	SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
UPDATE	UPDATE table_name
SET column1=value, column2=value,...
WHERE some_column=some_value
WHERE	SELECT column_name(s)
FROM table_name
WHERE column_name operator value

*/

三、🥇Summary

已经好长时间没有更新(一个月),其实这段时间,怎么说,就也是……继续努力吧!!!

最近开始重新学习SQL了,有时候也不知道应该学点什么,需要学点什么,也并没有参加什么比赛,主要是比较菜😓,希望可以自己沉淀一段时间,💪

上述内容就是此次 SQL教程(一)简单实例学习:基础入门级 的全部内容了,感谢大家的支持,相信在很多方面存在着不足乃至错误,希望可以得到大家的指正。🙇‍(ง •_•)ง

调整自己。不忘来时路,努力前行,找到前进的方向。

2023年第三十五期,希望得到大家的喜欢🙇‍

希望大家有好的意见或者建议,欢迎私信,一起加油


以上就是本篇文章的全部内容了

 ~ 关注我,点赞博文~ 每天带你涨知识!

1.看到这里了就 [点赞+好评+收藏] 三连 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我 ~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、HTML模板 、C++、数据结构、Python程序设计、Java程序设计、爬虫等! 「在这里有好多 开发者,一起探讨 前端 开发 知识,互相学习」!

3.以上内容技术相关问题可以相互学习,关 注 ↓公 Z 号 获取更多源码 !
 

获取源码?私信?关注?点赞?收藏?

👍+✏️+⭐️+🙇‍

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
注:分二卷,点击上传者查看第二卷地址。亲,本人纯手工添加了书签哦!!方便阅读  《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》是Microsoft SQL Server 2008系列中的一本。书中全面深入地介绍了T-SQL的基本元素,以及SQL Server 2008中新增加的一些特性。主要包括SQL基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。   书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中的各种问题,教读者如何用SQL作为语言工具来思考问题,揭示基于集合查询的强大威力。本书内容丰富、文字简洁明快,列举的实例具有一定的难度,而且实用性较强,可以把它们作为解决实际问题的标准模板。阅读本书,可以充分地理解T-SQL语言和获得良好的编程实践,学会如何编写更加有效而强大的查询。书中大部分章节后面都提供了练习题目,可以帮助读者更好地掌握所学的内容。   《Microsoft SQL Server 2008技术内幕:T-SQL语言基础》适合须要学习T-SQL的各级程序员和数据库专业人员,是他们快速掌握T-SQL的必备参考图书。 致谢 引言 第1章 T-SQL查询和编程基础 1.1 理论背景 1.2 SQL SERVER体系结构 1.3 创建表和定义数据完整性 1.4 总结 第2章 单表查询 2.1 SELECT语句的元素 2.2 谓词和运算符 2.3 CASE表达式 2.4 NULL值 2.5 同时操作(ALL-AT-ONCE OPERATION) 2.6 处理字符数据 2.7 处理日期和时间数据 2.8 查询元数据 2.9 总结 2.10 练习 2.11 解决方案 第3章 联接查询 3.1 交叉联接 3.2 内联接 3.3 特殊的联接实例 3.4 外联接 3.5 总结 3.6 练习 3.7 解决方案 第4章 子查询 4.1 独立子查询 4.2 相关子查询 4.3 高级子查询 4.4 总结 4.5 练习 4.6 解决方案 第5章 表表达式 5.1 派生表 5.2 公用表表达式(CTE) 5.3 视图 5.4 内联表值函数 5.5 APPLY运算符 5.6 总结 5.7 练习 5.8 解决方案 第6章 集合运算 6.1 UNION(并集)集合运算 6.2 INTERSECT(交集)集合运算 6.3 EXCEPT(差集)集合运算 6.4 集合运算的优先级 6.5 避开不支持的逻辑查询处理 6.6 总结 6.7 练习 6.8 解决方案 第7章 透视、逆透视及分组集 7.1 透视转换 7.2 逆透视转换 7.3 分组集 7.4 总结 7.5 练习 7.6 解决方案 第8章 数据修改 8.1 插入数据 8.2 删除数据 8.3 更新数据 8.4 合并数据 8.5 通过表表达式修改数据 8.6 带有TOP选项的数据更新 8.7 OUTPUT子句 8.8 总结 8.9 练习 8.10 解决方案 第9章 事务和并发 9.1 事务 9.2 锁定和阻塞 9.3 隔离级别 9.4 死锁 9.5 总结 9.6 练习 第10章 可编程对象 10.1 变量 10.2 批处理 10.3 流程控制元素 10.4 游标 10.5 临时表 10.6 动态SQL 10.7 例程 10.8 错误处理 10.9 总结 附录A SQL SERVER使用入门 索引
数据库基础知识及关系数据库管理系统。 目录 Access教程 第一章 Access数据库基础 1 一、数据库的基本知识 1 二、数据库管理系统和数据库应用系统 3 三、Access 2003内部结构 4 1. 表 5 2. 查询 6 3. 窗体 7 4. 报表 8 5. 宏 9 6. 模块 9 7. Web页 10 Access教程 第二章 建立数据库 10 一、数据库的设计 10 2. 一般步骤 11 3. 实例剖析 11 二、建立一个数据库 13 Office Online 模板可通过在线查找所需要的数据库模板。 14 3. 根据现有文件新建数据库 21 4. 打开已存在的数据库 21 5. 查看数据库属性 22 三、创建简单表 25 1. 使用向导创建表 25 2. 表设计器 29 3. 字段、数据类型、字段属性 30 4. 使用设计器创建表的一般步骤 32 5. 通过输入数据建立表 34 四、设定表之间的关系 34 1. 表的索引 34 2. 表的主关键字 36 3. 创建并查看表间关系 36 4. 表间关系的修改与打印 37 五、修改数据库结构 38 1. 对表的操作 38 2. 对字段的操作 40 3. 数据的有效性 41 4. 对数据 表的行与列的操作 42 六、使用与编辑数据表 43 1. 更改数据表的显示方式 43 2. 修改数据表中的数据 44 3. 排列数据 44 4. 查找数据 45 5. 筛选数据 45 6. 高级筛选与排序 46 七、使用查阅向导 47 八、使用子数据表 51 Access教程 第三章 查询 51 一、查询的概念 52 2. 查询的种类 53 3. 查询的作用和功能 53 二、创建查询 54 1. 简单选择查询 54 2. 交叉表查询向导 57 3. 查找重复项查询向导 60 4. 查找不匹配项查询向导 62 5. 用查询设计器创建查询 65 6. 用查询设计器进一步设计查询 66 7. 查询及字段的属性设置 67 8. 设置查询准则 67 三、创建特殊用途查询 69 1. 参数查询 69 2. 自动查找查询 70 3. 交叉表查询 71 四、操作查询 72 1. 更新查询 72 2. 追加查询 74 3. 删除查询 75 4. 生成表查询 75 五、SQL专用查询 77 ⑴ 使用SQL进行投影 78 ⑵ 使用SQL进行选择 79 SELECT 学号,姓名,主修,年龄 FROM ST WHERE 主修=‘MATH’ 79 SELECT 姓名,主修,年龄 FROM ST WHERE 主修=‘MATH’ 79 ⑶ SQL排序 79 ⑷ SQL内置函数 80 SELECT COUNT(*) FROM ST 80 ⑸ SQL内置函数和分组 80 ⑴ 带有子查询的SQL查询语句 82 ⑵ SQL联接查询 83
好的,我会为您提供一个简单SqlSugar入门级教程实例,适用于.NET Core。 首先,您需要在您的项目中安装SqlSugar NuGet包。您可以使用以下命令来安装它: ``` Install-Package SqlSugar ``` 接下来,您需要在您的代码中引入SqlSugar命名空间: ``` using SqlSugar; ``` 然后,您需要创建一个SqlSugar实例,这个实例将用于执行SQL查询和操作数据库。您可以使用以下代码来创建一个SqlSugar实例: ``` var db = new SqlSugarClient(new ConnectionConfig { ConnectionString = "你的数据库连接字符串", DbType = DbType.SqlServer, // 数据库类型 IsAutoCloseConnection = true, // 是否自动关闭连接 InitKeyType = InitKeyType.Attribute, // 主键和自增列的类型 ConfigureExternalServices = new ConfigureExternalServices { EntityService = (property, column) => { // 将实体类中的属性名转换为数据库列名,例如将驼峰式命名转换为下划线分隔命名 return column.DbColumnName; } } }); ``` 在此代码中,ConnectionConfig对象包含数据库连接字符串、数据库类型、是否自动关闭连接、主键和自增列的类型等配置信息。ConfigureExternalServices属性用于配置SqlSugar的一些外部服务。 接下来,您可以使用SqlSugar实例执行查询和操作数据库。以下是一些常见的操作示例: 1. 查询数据: ``` // 查询所有数据 var list = db.Queryable<TEntity>().ToList(); // 根据条件查询数据 var list = db.Queryable<TEntity>().Where(it => it.Name == "张三").ToList(); ``` 2. 插入数据: ``` var entity = new TEntity { Name = "张三", Age = 18 }; var id = db.Insertable(entity).ExecuteReturnIdentity(); ``` 3. 更新数据: ``` db.Updateable<TEntity>().Where(it => it.Id == 1).UpdateColumns(it => new TEntity { Name = "李四" }).ExecuteCommand(); ``` 4. 删除数据: ``` db.Deleteable<TEntity>().Where(it => it.Id == 1).ExecuteCommand(); ``` 这些是SqlSugar的一些基本操作示例。您可以根据您的需求来使用SqlSugar的其他功能,例如分页、事务等等。 希望这个教程可以帮助您入门SqlSugar。如果您有任何问题,请随时问我!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enovo_你当像鸟飞往你的山

好好读书!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值