iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SQL基本语法用例大全
  • 931
分享到

SQL基本语法用例大全

sql数据库 2023-10-11 22:10:00 931人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

文章目录 SQL语法概述简单查询计算列查询条件查询范围查询使用逻辑运算符过滤数据使用IN操作符过滤数据格式化结果集模糊查询行数据过滤数据排序数据统计分析分组总计简单子查询多行子查询多表链接插入

文章目录

sql语法概述

SQL(Structured Query Language), 数据库的标准语言。
SQL语言的功能包括数据查询、数据操纵、数据定义和数据控制四个部分。
六个核心动词: SELECT、CREATE、INSERT、UPDATE、DELETE和REVOKE
每条SQL语句均由一个谓词(Verb)开始, 该谓词描述这条语句要产生的动作, 例如SELECT或者UPDATE关键字, 谓词后紧接着一条或者多条子句(Clause), 子句中给出了被谓词作用的数据或者谓词动作的详细信息。
每个查询语句都要有SELECT关键字和FROM关键字。

简单查询

SELECT column_name  FROM table_name [ WHERE search_condition ][ GROUP BY group_column_name ][ HAVING search_condition ][ ORDER BY order_expression [ASC | DESC]]

从table_name表中查询column_name列的数据; WHERE 用来指定筛选数据的条件
GROUP BY 根据指定列中的值,对数据进行分组
HAVING search_condition 指定组的搜索条件, 对分组数据进行二次筛选, 通常搭配GROUP BY 使用
ORDER BY 按照指定列进行排序, ASC 升序排列, DESC 降序排列

-- 单列查询  SELECT column_name FROM table_name;-- 多列查询SELECT column_1, column_2 FROM table_name;-- 所有列查询SELECT * FROM table_name;-- 使用别名  SELECT Goods_name "商品名称" FROM goods;SELECT goods_name AS "商品名称"  FROM goods;-- 对多个表查询时出现相同的别名  SELECT user_address.mobile AS "订单电话", users.mobile AS "用户电话",user_address.addressFROM user_address, users WHERE user_address.user_id = users.user_id;  -- 为计算结果设置别名列SELECT (market_price - cost_price) AS 盈利  FROM goods;-- 为使用聚合函数的列设置别名  SELECT MAX(market_price) AS "市场最高价", MIN(market_price) AS "市场最低价"FROM goods;-- 删除重复数据-- DISTINCT 放在第一位, 不加逗号, 不是某一行, 是指不重复输出SELECT的所有列   SELECT DISTINCT column_name FROM goods;-- 返回前N行数据 SELECT TOP n goods_name, market_price FROM goods;-- 限制查询前N行 SELECT goods_name,FROM goodsLIMIT 5;-- 限制查询N条数据  -- 查询从第三条开始的10条数据(编号从0开始)  SELECT goods_nameFROM goods LIMIT 2,10;-- 写法2SELECT goods_nameFROM goodsLIMIT 10 OFFSET 2;

计算列查询

-- 连接列值  SELECT name + cat_name AS "详细信息" FROM brands;-- 数值查询运算(+ - * / %)  SELECT (shop_price - cost_price) AS "利润"FROM goods;-- 查询中使用表达式  -- 使用数值表达式SELECT cost_price + 50 AS "价格+50" FROM goods;-- 使用字符表达式  SELECT convert(char(2),sales_num) + '个' AS "销售量"  FROM goods;-- 使用表达式创建新列  SELECT goods_id, 2+2, '字符' + '串列' FROM goods;

条件查询

where 语句的各种比较运算符;
= 等于 > 大于 < 小于 > 大于 >= 大于等于 <= 小于等于 !> 不大于 !< 不小于 <> 或者!= 不等于

-- 各种条件筛选  SELECT * FROM goods WHERE good_id = 107;  SELECT * FROM goods WHERE good_id > 107;  

范围查询

-- 查询两个数值之间的数据SELECT market_price FROM goods WHERE market_price BETWEEN 1000 AND 3000;--查询不在两个数值之间的数据SELECT market_price FROM goods WHERE market_price NOT BETWEEN 1000 AND 3000;-- 查询两个日期之间的数据SELECT INTIME FROM book_infoWHERE INTIME BETWEEN '2023-1-1' AND '2023-12-1';-- 日期函数 GETDATE()函数、DATEADD()函数 获取当天/前一天的日期  -- 获取昨天和今天的数据SELECT INTIME FROM book_infoWHERE INTIME BETWEEN DATEADD(DAY,-1,GETDATE()) AND GETDATE();

使用逻辑运算符过滤数据

-- AND 与操作  OR 或操作 NOT 非操作  -- 优先级 () >> NOT >> AND  >> ORSELECT shop_priceFROM goodsWHERE shop_price > 3000 AND shop_price < 6000;SELECT shop_priceFROM goodsWHERE shop_price < 3000 OR shop_price > 6000;SELECT shop_priceFROM goodsWHERE NOT shop_price = 3000;

使用IN操作符过滤数据

使用IN操作符可以判断某个字段的值是否在指定的集合中;

-- 使用IN 查询数据SELECT cat_id, goods_name,shop_price  FROM goodsWHERE cat_id IN (191,123,131);-- 使用IN 使用算术表达式  SELECT cat_id, goods_name,shop_price  FROM goodsWHERE cat_id IN (191 + 20,123 - 30,131);-- 使用IN 中使用列进行查询 SELECT cat_id, goods_name,shop_price  FROM goodsWHERE 323 IN (shop_price, cat_id);  -- 使用NOT IN 查询数据SELECT cat_id, goods_name,shop_price  FROM goodsWHERE cat_id NOT IN (191,123,131);-- 查询10条数据中的后两行  SELECT order_id,order_sn,total_amount FROM orderfORM WHERE order_id NOT IN (SELECT TOP 8 order_id FROM orderform)

格式化结果集

-- SQL Server 数据库中格式化日期  hh:mm:ssSELECT CONVERT(VARCHAR,GETDATE(),108) AS nowtime-- Mysql 数据库中格式化日期  SELECT user_id,email,DATE_FORMAT(reg_time, '%Y/%m/%d') AS reg_timeFROM shop.users LIMIT 6;-- Orcale 数据库中格式化日期SELECT TO_CHAR(birthday,'YYYY-MM-DD') AS 格式化日期 FROM users WHERE ROWUNM <= 6;-- CAST 函数, 将浮点型数据转换成整型  SELECT CAST(total_amount AS int) AS total_amount FROM users;-- 去除空格  SELECT LTRIM('   BOOK')  AS '去掉左侧空格';  

模糊查询

% 由零个或多个字符组成的任意字符串
_ 任意单个字符
[] 用于指定范围 [A-F]
[^] 表示指定范围之外的[^A-F]

-- 包含mrSELECT 列名 LIKE '%mr%'  -- mr出现在开头  SELECT 列名 LIKE 'mr%'  -- mr 出现在结尾SELECT 列名 LIKE '%mr'   -- 三个字符且前两个字符是mr的数据SELECT 列名 LIKE 'mr_'-- 三个字符且后个字符是mr的数据SELECT 列名 LIKE '_mr'-- 以m或r开头的数据  SELECT 列名 LIKE '[mr]%'  -- 以a-e之间的字符 开头的数据SELECT 列名 LIKE '[a-e]%'  -- 不以a-e之间的字符 开头的数据  SELECT 列名 LIKE '[^a-e]%'  -- 字符转义  -- 使用ESCAPE 定义转义字符  -- 使用#作为转义字符 %作为普通字符  WHERE 列名 LIKE '%10#%' ESCAPE '#'

行数据过滤

-- 行查询  -- 查询第6个商品id  SELECT goods_id,goods_name,shop_price FROM (SELECT TOP 6 * FROM goods) aaWHERE NOT EXISTS (SELECT * FROM (SELECT TOP 5 * FROM goods) bbWHERE aa.goods_id = bb.goods_id);-- SQL Server 随机查询一行数据  SELECT TOP 1 goods_id, cat_id, goods_name FROM goods order by NEWID();-- mysql 中随机查询一行  SELECT goods_id,cat_id,goods_name  FROM goods ORDER BY RAND() LIMIT 1;-- 在oracle 中随机查询一行数据  SELECT goods_id, cat_id, goods_name FROM (SELECT goods_id, cat_id, goods_name FROM goods, ORDER BY DBMS_RANDOM.VALUE())WHERE ROWNUM=1;-- 在结果集中添加行号  SELECT (SELECT COUNT(order_id) FROM orderform A WHERE A.order_id >= B.order_id) 编号,order_id,order_sn,toal_amount FROM orderform B ORDER BY 1;-- 查询隔行数据  SELECT order_id,order_sn,toal_amount FROM orderform  WHERE order_id%2=1 ORDER BY 1;-- 查询指定行范围内的所有行数据  SELECT ISBN, BookName FROM (SELECT ROW_NUMBER() OVER(ORDER BY ISBN) 编号, ISBN,BookName  FROM bookinfo_zerobasis) a WHERE a.编号  BETWEEN 3 AND 6;-- 查询空值(IS NULL)SELECT user_id,nickname FROM usersWHERE nickname IS NULL;-- 查询非空值(IS NOT NULL)  SELECT user_id,nickname FROM usersWHERE nickname IS NOT NULL;-- 对空值进行处理-- 所有空值转换成0   SELECT BookName, ISNULL(newbook, 0) AS newbook  FROM bookinfo;-- 将所有的相关值转换成NULL(Liming转NULL)SELECT user_id, NULLIF(nickname,'Liming') AS nicknameFROM users;

数据排序

-- 升序排列(ASC) 降序排列(DESC)   -- 名称中有空格排序需要加 ' 列名'SELECT goods_id, goods_name, sales_sum FROM goodsORDER BY DESC | ASC;-- 多列排序  -- ORDER BY 子句中的第一列为主排序 第二列为次排序  -- 先按主排序进行排列 相同的再按次排序进行排列  SELECT DISTINCT goods_id, goods_name, shop_priceFROM goodsORDER BY shop_price DESC, goods_name;-- 对数据表中的指定行数进行排序  SELECT TOP 3 goods_id, goods_name,shop_price  FROM goodsORDER BY shop_price DESC;-- 按姓氏笔画排序  SELECT * FROM tb_name;SELECT * FROM tb_name ORDER BY LEFT(name,1) COLLATE Chinese_PRC_Stroke_CS_AS_KS_WS;-- 按拼音排序 SELECT * FROM tb_name;SELECT * FROM tb_name ORDER BY LEFT(name, 1) COLLATE Chinese_PRC_CS_AS_KS_WS;

数据统计分析

聚合函数
SUM() 指定列所有非空值求和
AVG() 指定列所有非空值求平均值
MIN() 指定列中最小的数字、最小的字符串、最早的日期时间(数字、字符、日期)
MAX() 指定列中最大的数字、最大的字符串、最近的日期时间(数字、字符、日期)
COUNT([distinct]*) 统计结果中全部记录行的数量, 最多可达2147483647行

-- 去重之后计算平均值SELECT AVG(DISTINCT shop_price) AS 平均值 FROM goods;-- 限制统计行数的平均值  SELECT AVG(shop_price) AS 平均值  FROM goodsWHERE shop_price > 3000;-- 显示大于平均值的商品信息  SELECT goods_name AS 商品名称,store_count AS 库存数量, shop_price AS 售价  FROM goodsWHERE (shop_price > (SELECT AVG(shop_price) FROM goods));-- count 统计重复数值, 不统计空值-- 统计商品ID的总数  SELECT COUNT(cat_id) AS 商品种类 FROM goods;-- 剔除重复的  SELECT COUNT(DISTINCT cat_id) AS 商品种类 FROM goods;-- 剔除了最大值和最小值的平均值  SELECT  CAST(AVG(shop_price) as real) AS '去掉最大值和最小值之后的平均值'  FROM goods  WHERE goods_name LIKE '%液晶电视%'  AND shop_price NOT IN (    (SELECT MIN(shop_price) AS 最小值 FROM goods WHERE goods_name LIKE '%液晶电视%')    UNION    (SELECT MAX(shop_price) AS 最大值 FROM goods WHERE goods_name LIKE '%液晶电视%'));-- 对多列进行求和  SELECT SUM(shop_price)  AS 所有商品的总和  FROM goods;SELECT SUM(shop_price - cost_price) AS 所有商品的总盈利  FROM goods;

分组总计

-- 使用GROUP BY子句创建分组  -- 查询分组的各个指标  SELECT cat_id AS 商品种类id, MIN(shop_price) 最低售价  MAX(cost_price)  最高成本价, AVG(shop_price),COUNT(*) AS 数量  FROM goodsGROUP BY cat_idORDER BY MAX(cost_price) DESC;-- 使用GROUP BY 子句创建多列分组  SELECT cat_id AS 商品种类id, brand_id AS 品牌id, MIN(shop_price) 最低售价  MAX(cost_price)  最高成本价, AVG(shop_price),COUNT(*) AS 数量  FROM goodsGROUP BY cat_id, brand_idORDER BY MAX(cost_price) DESC;-- 在分组的时候使用表达式  SELECT 收获地址, 联系方式  FROM (SELECT '收货人: '+ consignee + ' 的地址为: ' + address AS 收获地址, '联系电话为: ' + mobile AS 联系方式 FROM user_address) aGROUP BY 收获地址, 联系方式  -- GROUP BY ROLLUP(A,B,C)  先对A、B、C进行分组操作, 然后对A和B进行分组操作, 之后对A进行分组操作  SELECT a.deptno, d.dname, SUM(e.sal)  AS 工资总和  FROM emp e, dept dWHERE e.deptno = d.deptnoGROUP BY ROLLUP(e.deptno, d.dname);-- CUBE关键字与ROLLUP关键字类似  -- 如果GROUP BY子句修饰的列值中带有NULL 值, 系统会将所有NULL值的行分成一组  -- 使用HAVING 子句进行过滤分组  SELECT cat_id 种类id, shop_price 商品售价, COUNT(cat_id) 数量 FROM goodsWHERE (store_count < 1000)GROUP BY cat_id, shop_priceHAVING (shop_price > (SELECT AVG(shop_price) FROM goods))ORDER BY shop_price DESC;

简单子查询

子查询常用的语法格式

WHERE 查询表达式  [NOT] IN (子查询)  WHERE 查询表达式  比较运算符  [ANY | ALL] (子查询)  WHERE [NOT] EXISTS (子查询)

SELECT列表中的子查询

-- 根据作者名字, 获取编写数目中最高价格的信息 SELECT tb_book_author,tb_author_department,  (SELECT max(book_price) FROM tb_book WHERE tb_book_author.tb_book_author=tb_book.tb_book_author)FROM tb_book_author;

多列子查询

-- Oracle 数据库查询各个职务中最高工资的员工信息  -- 成对比较子查询SELECT ename,job,sal  FROM empWHERE (sal,job) IN (SELECT MAX(sal), job FROM emp GROUP bY job);-- 非成对比较子查询  -- 获取各个职务中最高工资的员工信息 SELECT ename, job, salFROM empWHERE sal in (SELECT MAX(sal) FROM emp GROUP BY job)AND job IN (SELECT distinct job FROM emp);

比较子查询
使用比较运算符连接子查询
子查询不能返回多个值; 子查询中不能包含ORDER BY子句

SELECT cat_id, goods_nameFROM goodsWHERE cat_id > ( SELECT cat_id FROM brandWHERE name="蓝月亮");-- 在子查询中使用聚合函数SELECT ename,sal,jobFROM empWHERE sal > (SELECT AVG(sal) FROM emp);

多行子查询

多行子查询通过多行比较操作符来实现, 其返回值为多行, 常用操作符号包括:
IN 和 NOT IN, ALL 和 ANY/SOME、EXISTS 和 NOT EXISTS

-- 使用IN子查询实现交集运算  SELECT * FROM tb_book WHERE book_sort IN (    SELECT tb_author_department     FROM tb_book_author    WHERE tb_book.book_sort=tb_book_author.tb_author_department)ORDER BY tb_book.book_price;-- 使用NOT IN子查询实现差集运算  SELECT * FROM tb_book WHERE book_sort IN (    SELECT tb_author_department     FROM tb_book_author);-- EXISTS子查询实现两个表的交集 SELECT * FROM tb_book WHERE EXISTS (    SELECT tb_author_department     FROM tb_book_author    WHERE tb_book.book_sort=tb_book_author.tb_author_department) ORDER BY tb_book.book_price; -- NOT EXISTS 子查询实现两个表的差集  SELECT * FROM tb_book WHERE NOT EXISTS (    SELECT tb_author_department     FROM tb_book_author    WHERE tb_book.book_sort=tb_book_author.tb_author_department) ORDER BY tb_book.book_price; -- 通过量词实现多行子查询ALL SOME ANY-- ALL为大于最大的 =ALL则没有返回值SELECT cat_id, goods_name, shop_price FROM goodsWHERE shop_price < ALL(    SELECT AVG(shop_price)    FROM goods    GROUP BY cat_id);-- 量词ANY和SOME是同义的  -- 某些DBMS产品仅支持原来的量词ANY-- ANY为大于最小的 =ANY 相当于 IN  SELECT cat_id, goods_name, shop_price FROM goodsWHERE shop_price > ANY(    SELECT AVG(shop_price)    FROM goods    GROUP BY cat_id);

多表链接

内连接
内连接就是使用比较运算符进行表与表之间列数据的比较操作, 并列出这些表中与连接条件相匹配的数据行。内连接可以用来组合两个或者多个表中的数据。
内连接分为三种:
1.等值连接 在连接条件中使用等于运算符比较被连接的列;
2.不等值连接 在连接条件中使用除了等于运算符以外的其他比较运算符比较连接的列;
3.自然连接 它是等值连接的一种特殊情况,用来把目标中重复的属性列去掉;

-- 等值连接  SELECT goods_id, goods_name,name FROM goods,goods_typeWHERE goods.goods_type=goods_type.id;SELECT goods_id,goods_name,nameFROM goods INNER JOIN goods_typeON goods.goods_type=goods_type.id;  -- 不等值连接  SELECT a.goods_id,a.goods_nameFROM goods a INNER JOIN (SELECT * FROM goods_type WHERE name="测试品牌" ) bON a.goods_typ<>b.id;-- 自然连接  -- 自然连接只有在两个表中有相同名称的列且列的含义相似时才能使用,会剔除重复行SELECT a.user_id, b.address, CONVERT(VARCHAR(10), last_login, 120) AS last_loginFROM users a, user_address bWHERE a.user_id=b.user_id;-- 使用带聚合函数的内连接  SELECT a.id, a.name, COUNT(b.cat_id) numFROM goods_category a INNER JOIN goods bON a.id=b.cat_id GROUP BY a.id,a.name;-- 连接多个表  SELECT a.goods_id, a.goods_name, b.name brand, c.name typeFROM goods a, brand b, goods_type cWHERE a.brand_id=b.id AND a.goods_type=c.id;

外连接
通过内连接可以返回所有满足连接条件的记录。而有时则需要显示表中的所有记录,包括那些不符合连接条件的记录,此时就需要外连接。
外连接以指定的数据表为主体,将主体表中不满足连接条件的数据也一并输出。根据外连接保存下来的行的不同,可以将外连接分为一下三种:
1.左外连接: 表示在结果中包括左表中不满足条件的数据
2.右外连接: 表示在结果中包括右表中不满足条件的数据
3.全外连接: 表示在结果中包括左表和右表中不满足条件的数据
JOIN关键字左表是左表 右边是右表

-- 左外连接  SELECT goods_id,goods_name,name FROM goods LEFT JOIN goods_type  ON goods.goods_type=goods_type.id ORDER BY goods_id DESC;-- 右外连接 -- SQLITE数据库支持左外连接 但不支持右外连接   SELECT goods_id,goods_name,name FROM goods RIGHT JOIN goods_type  ON goods.goods_type=goods_type.id;-- 全外连接  -- MYSQL Access 和SQLIte 不支持全外连接SELECT goods_id,goods_name,name FROM goods FULL JOIN goods_type  ON goods.goods_type=goods_type.id ORDER BY goods_id;-- 通过外连接进行多表联合查询  SELECT goods_id, goods_name, brand.name, brand, goods_type.name typeFROM(goods LEFT JOIN brand ON goods.brand_id=brand_id)LEFT JOIN goods_type ON goods.goods_type=goods_type.id;

自连接是指一个表同自身进行连接,必须通过别名来区分两个表

-- 通过自连接查询与OPPO是同一品牌分类的所有品牌id\nameSELECT b1.id,b1.name,b1.cat_nameFROM brand b1, brand b2WHERE b1.cat_name=b2.cat_nameAND b2.name='OPPO';

交叉连接
交叉连接是两个表的笛卡尔乘积的另一种名称,交叉连接会将第一个表的每一行与第二个表的每一行进行匹配,这将导致了所有可能的集合。

SELECT a.name,a.cat_name,b.goods_nameFROM brand a CROSS JOIN goods b;

组合查询
UNION操作符可以执行多个SELECT查询语句,并将多个查询的结果作为一个查询结果集返回。

-- UNION 合并多个结果集  SELECT cat_id, goods_name,shop_priceFROM goodsWHERE cat_id IN (123,131)  UNIONSELECT cat_id, goods_name, shop_priceFROM goodsWHERE goods_name LIKE '%华为%';--组合查询SELECT cat_id, goods_name,shop_priceFROM goods_type1WHERE shop_price=59  UNIONSELECT cat_id, goods_name, shop_priceFROM goods_type2WHERE shop_price=60;-- 通过UNION ALL返回重复的行  SELECT cat_id, goods_name,shop_priceFROM goods_type1WHERE shop_price=59  UNION ALLSELECT cat_id, goods_name, shop_priceFROM goods_type2WHERE shop_price=60;-- 对组合查询结果进行排序SELECT cat_id, goods_name,shop_priceFROM goodsWHERE cat_id IN (123,131)  UNIONSELECT cat_id, goods_name, shop_priceFROM goodsWHERE goods_name LIKE '%华为%'ORDER BY shop_price;

插入数据

插入单行数据

-- 如果某一行定义为允许NULL值, 则可以在INSERT语句中省略该列-- 创建数据表时允许通过DEFAULT关键字为列定义默认值, 插入时不指定则为默认值  INSERT INTO brand (id,name,logo,describ) VALUES(111,'ceshi','logo.jpg','简单描述');-- 插入多行数据INSERT INTO brand (id,name,logo,describ) VALUES(111,'ceshi','logo.jpg','简单描述'), (112,'ceshi','logo.jpg','简单描述');-- 创建数据表  CREATE TABLE brand_new(    id, int NOT NULL PRIMARY KEY,    name varchar(60) NOT NULL DEFAULT '',    describe text NOT NULL,    cat_name varchar(128) NULL DEFAULT '',    cat_id int NULL DEFAULT 0);-- 通过查询语句插入多行数据  INSERT INTO brand_new SELECT * FROM brand  WHERE cat_name="手机"

更新和删除数据

使用UPDATE语句更新列值

-- 更新一个或多个列UPDATE brancSET cat_name = "新名字", cat_name="hello", is_hot=1WHERE name= '测试';-- 更新表中的所有行UPDATE brandSET is_hot = 1;-- 依据外表值更新数据  UPDATE goodsSET store_count = store_count + 1000WHERE cat_id = (SELECT id FROM goods_category WHERE name="平板");

DELETE 删除数据

-- 删除一行数据  DELETE FROM brandWHERE name="新派系"-- 删除多行数据  DELETE FROM brandWHERE name IN ("牌子1","牌子2");  -- 删除所有数据  SELECT * INTO new_tabFROM goods_type;DELETE FROM new_tab;-- TRUNCATE TABLE 语句不但删除了数据,而且所删除的数据在事物处理日志中还会有记录  TRUNCATE TABLE new_tab;

使用视图

视图是一种常用的数据库对象,它将查询的结果以虚拟表的形式存储在数据中,视图并不在数据库中以存储数据集的形式存在。

-- 创建视图CREATE VIEW GoodPriceASSELECT goods_id, goods_name, shop_priceFROM goods;SELECT * FROM GoodsPrice;-- 删除视图  DROP VIEW GoodsPrice;-- 通过视图简化复杂查询  CREATE VIEW GoodsBrandType  ASSELECT goods.goods_id,goods.goods_name,brand.name brand, goods_type.name  typeFROM goods, brand, goods_typeWHERE goods.brand_id=brand.id AND goods.goods_type=goods_type.id;SELECT * FROM GoodsBrandTypeWHERE type = "电视";-- 使用视图过滤不想要的数据CREATE VIEW ZeroBookASSELECT ISBN, BookName, Writer, newbookWHERE newbook IS NOT NULL;SELECT * FROM ZeroBook;-- 通过视图显示函数的结果  CREATE VIEW BookGroup(type,number,maxprice)ASSELECT Type, COUNT(*), MAX(Price)FROM bookinfoWHERE Type IS NOT NULLGROUP BY Type;SELECT * FROM BookGroup;-- 通过视图添加数据  CREATE VIEW GoodsBrandType  ASSELECT goods.goods_id,goods.goods_name,brand.name brand, goods_type.name  typeFROM goods, brand, goods_typeWHERE goods.brand_id=brand.id AND goods.goods_type=goods_type.id;INSERT INTO GoodsBrandType(goods_id,goods_name)  VALUES(115,'海尔洗衣机');INSERT INTO GoodsBrandType(type_id,type)VALUES(30,'洗衣机');-- 通过视图更新数据  CREATE VIEW GoodsBrandASSELECT goods.goods_id,goods.goods_name,brand.name brandFROM goods,brandWHERE goods.brand_id=brand.id;UPDATE GoodsBrandSET goods_name="康佳"  WHERE goods_id=57;-- 通过视图删除数据  CREATE VIEW TypeASSELECT * FROM goods_type;DELETE TypeWHERE name="洗衣机";  -- 在视图中使用WITH CHECK OPTION 子句  -- 如果在创建视图的时候使用了WITH CHECK OPTION 子句, 那么在视图上执行的INSERT或者UPDATE操作都必须符合定义视图的设置的查询条件。  CREATE VIEW GoodsStoreASSELECT goods_id, goods_name, store_countFROM goodsWHERE store_count < 1000WITH CHECK OPTION;SELECT * FROM GoodsStore;UPDATE GoodsStoreSET store_count = store_count + 400;

数据库管理

创建数据库

-- 使用默认值创建数据库  CREATE DATABASE STU;--自定义选项创建数据库  CREATE DATABASE mrkjON(    name=mrdat,    filename='E:\mrkj.mdf'    size=10,  --初始大小为10MB    maxsize=100, -- 最大为100MB    filegrowth=5) -- 增长大小是5MB     log on(        filename='E:\mrkj.ldf'  -- 日志名称         size=8MB, --日志初始大小        maxsize=50MB, --日志最大        filegrowth=8MB -- 日志增长  );-- 创建数据库的时候指定文件和文件组  -- 略

修改数据库

-- 向数据库中添加文件  ALTER DATABASE mrkj ADD FILE(    name=happy,    FILE='E:\happy.ndf',    size=2mb,    maxsize=30mb,    filegrowth=3mb)-- 向数据库中添加文件组  ALTER DATABASE mrkjADD filegroup happy-- 删除数据库中的文件或文件组ALTER DATABASE mrkjREMOVE file happy-- 修改数据库文件的大小ALTER DATABASE mrkj MODIFY FILE(    name=joy,    size=40mb)-- 缩小数据库  DBCC SHRINKDATABASE(mr01,10,NOTRUNCATE)--缩小数据库指定数据文件或者日志文件大小  DBCC SHRINKFILE(mrdat,1,NOTRUNCATE)-- 数据库更名 EXEC sp_renamedb 'mr', 'mrsoft'

删除数据库

DROP DATABASE mrkjDROP DATABASE mr01, mrsoft

数据表管理

创建数据表

USE shop  -- 使用数据库  CREATE TABLE shoppping(    商品编号 int primary key, -- 主键列 必须唯一且不能为NULL    商品类别 varchar(10) not null, -- 此列必须不能为NULL值      商品ID   varchar(10) unique, -- 所有列值都不同, 但是可以为NULL      价格     int check(价格>=10 and 价格<= 1000)  -- 价格在10到1000之间      商品数量  int default 0,   -- 商品数量默认值为0    商品备注  text)

修改数据表

-- 向数据表中添加列  ALTER TABLE student  --ALTER 中只允许添加包含NULL值的列  ADD 专业 char(10)--修改列中的数据类型和大小  ALTER TABLE student   ALTER COLUMN 学号  varchar(10)  NOT NULL-- 向表中添加主键-- 将某个列设置为主键ALTER TABLE student ADD PRIMARY KEY(学号)  -- 删除表中的约束  -- 查找约束SELECT * FROM sysobjectsWHERE parent_obj IN (    SELECT id FROM sysobjects    WHERE name='shopping');-- 删除约束ALTER TABLE shoppingDROP CONSTRAINT PK_shopping_8999977767--修改数据表的名称  -- ALTER TABLE命令不能修改数据表的名称,修改数据表的名称可以使用系统存储过程sp_rename  -- 使用EXEC sp_rename关键将student数据表名称改成stuEXEC  sp_rename 'student', 'stu'  -- 从已有的表中删除列 ALTER TABLE stu DROP COLUMN 专业  

删除数据表

DROP TABLE memeber-- 删除三个数据表  DROP TABLE stu, teacher, shopping

来源地址:https://blog.csdn.net/yang1fei2/article/details/133777351

--结束END--

本文标题: SQL基本语法用例大全

本文链接: https://www.lsjlt.com/news/428805.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL基本语法用例大全
    文章目录 SQL语法概述简单查询计算列查询条件查询范围查询使用逻辑运算符过滤数据使用IN操作符过滤数据格式化结果集模糊查询行数据过滤数据排序数据统计分析分组总计简单子查询多行子查询多表链接插入...
    99+
    2023-10-11
    sql 数据库
  • 【MySQL】MySQL基本语句大全
    个人主页:【😊个人主页】 系列专栏:【❤️MySQL】 文章目录 前言结构化查询语句分类MySQL语句大全📚DDL(对数据库和表的操作)🤖DQL(查询语句)💻...
    99+
    2023-08-17
    mysql 数据库
  • python基础语法大全
    目录          1.jupyter简单操作 2.print()用法 3.math 举一个平方的例子 4.while for control+[/] 左/右缩进 (缩进是四个空格) 5.if        if_else       ...
    99+
    2023-09-27
    大数据 python jupyter list pycharm
  • Javascript基本语法实例用法
    本篇内容介绍了“Javascript基本语法实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码&l...
    99+
    2024-04-02
  • Spring Cloud Hystrix的基本用法大全
    目录1. Hystrix的简单使用1.1 服务降级1.2 服务熔断2. OpenFeign集成Hystrix3. Hystrix熔断原理3.1 熔断状态3.2 熔断的工作原理4. 代...
    99+
    2024-04-02
  • mysql数据库基本语法及操作大全
    mysql数据库基本语法 DDL操作 创建数据库 语法:create database 数据库名; 查看所有数据库 语法:show databases; 切换(使用)数据库 语法:u...
    99+
    2024-04-02
  • SQL常用语句大全
    我们在进行开发工作时,对数据库的操作是必不可少的,熟练掌握SQL语句可以让我们对数据库的数据处理变得非常简单,所以学习SQL语句是非常有必要的,下面汇总了一些常用的SQL语句 SQL语句的类型 DDL(Data Definition Lan...
    99+
    2023-08-31
    sql 数据库
  • sql插入语句的基本语法
    小编给大家分享一下sql插入语句的基本语法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在SQL中我们可以使用insert in...
    99+
    2024-04-02
  • Mysql 最最最基本语句(大全)
    Mysql Workbench 基本语句 前言 SQL语言关键字不区分大小写,但不同的数据库,对于表名和列名,有的数据库区分大小写,有的数据库不区分大小写。 一、创建数据库 create data...
    99+
    2023-09-06
    mysql 数据库 sql
  • Java正则表达式的基本用法和实例大全
    目录一、概述:二、单个符号三、快捷符号四、常用的正则表达式五、Java 中正则表达式的应用1、判断功能2、分割功能3、替换功能六、常用正则表达式七、实例总结一、概述: 用来描述或者匹...
    99+
    2024-04-02
  • SQL基本语句
    SQL基本语句 1.数据记录筛选:sql="select * from 数据表 where字段名=字段值 order by字段名[desc]"(按某个字段值降序排列。默认升序A...
    99+
    2024-04-02
  • SQL语句大全(3)
    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部    “where 1=2”全部不选, 如: if @strWhere !=''  begin set @strSQ...
    99+
    2023-01-31
    语句 大全 SQL
  • Oracle工具PL/SQL的基本语法
    在本章中,我们将学习PL/SQL的基本语法,PL/SQL是块结构语言; PL/SQL程序划分成几个部分,并在每个部分中写入逻辑代码块。每个块由三个子部分组成 - 声明部分 ...
    99+
    2024-04-02
  • C语言中switch语句基本用法实例
    目录switch语句:switch语句的基本格式C语言switch语句用法补充:用switch来给成绩等级 总结switch语句: 实际生活中,需要做出很多选择,大家都知道...
    99+
    2024-04-02
  • Oracle工具PL/SQL的基本语法怎么用
    Oracle工具PL/SQL的基本语法怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们将学习PL/SQL的基本语法,PL/SQL是块结构语言; PL/SQL程序划分...
    99+
    2023-06-22
  • SQL PLUS基本命令的使用方法示例
    1、Oracle 中 dba,all,user, 之间的区别 1. 结论:'权限大小不同': dba_* > all_* > user_* (1) dba_* ...
    99+
    2024-04-02
  • C#基本语法实例分析
    这篇“C#基本语法实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#基本语法实例分析”文章吧。一.基础语法C#区分大...
    99+
    2023-06-29
  • SQL语句大全(详解)
    SQL 前言1 DDL1.1 显示所包含的数据库1.2 创建数据库1.3 删除数据库1.4 使用数据库1.4.1 创建表1.4.2 查看表的结构1.4.3 查看当前数据库下的所有表1.4.4 ...
    99+
    2023-10-26
    sql 数据库 mysql
  • 【SQL基础】SQL增删改查基本语句
    目录 1 SQL 增删改查基本语句2 select 语句2.1 select 基本语句2.2 Select .. where 语句2.3 Select .. order by 语句2...
    99+
    2023-10-04
    sql 数据库 注入 database mysql
  • MSSQL基本语法实例分析
    这篇文章主要讲解了“MSSQL基本语法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MSSQL基本语法实例分析”吧!刷新本地缓存Ctrl+Shift+R查询select&n...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作