SQL数据库(设置模式、数据库操作、表操作、列操作、SQL索引/约束、SQL数据类型、SQL函数、常见问题)

目录

SQL数据库

设置模式

SET NAMES utf-8

set sql_safe_updates=1

数据库操作

CREATE DATABASE databaseName(创建数据库)

USE databaseName(选择数据库)

DROP DATABASE databaseName(删除数据库)

表操作

CREATE TABLE(创建表)

DROP TABLE(删除表)

TRUNCATE TABLE table_name(删除表中数据)

添加列

删除列

修改列

JOIN(组合表)

INNER JOIN

RIGHT  JOIN(LEFT JOIN)

LEFT JOIN示例

 Full join(SQL Server)

列操作(筛选、排序、去重)

Select columnName From tableName(选)

AS(别名)

WHERE(筛选条件)

BETWEEN A AND B

IS(判断null)

IN(指定集合)

LIKE(模糊查询)

REGEXP/RLIKE(正则匹配)

SELECT DISTINCT(去重)

ORDER BY(排序)

SELECT TOP(取前多少数据SQL Server/MS Access)

LIMIT(取前多少数据MySQL)

列操作(增、删、改、组合、合并)

INSERT INTO(插入)

SELECT INTO(旧表数据插入新表!MySQL)

INSERT INTO(旧表数据插入新表)

DELETE FROM(删除)

UPDATE(修改)

CONCAT(组合多列数据)

UNION(合并数据)

SQL索引、AUTO INCREMENT、SQL约束(not null、unique、primary key、foreign key、check、defalut)

SQL视图

通用数据类型

Microsoft Access/MySQL/SQL Server中的数据类型

SQL函数

SQL常见问题


SQL数据库

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

注意:SQL 对所有字段的大小写完全不敏感:SELECT 与 sEleCt 是相同的。下面大写表示SQL关键字。

设置模式

SET NAMES utf-8

设置使用的字符集相当于

SET character_set_client='utf8';

SET character_set_connection='utf8';

SET character_set_results='utf8';

set sql_safe_updates=1

开启安全更新数据模式(update 语句后必须携带 where 条件,否则就会报错

数据库操作

CREATE DATABASE databaseName(创建数据库)

创建databaseName数据库

USE databaseName(选择数据库)

选择databaseName数据库

DROP DATABASE databaseName(删除数据库)

删除databaseName数据库

表操作

创建删除表、删除表中所有数据、添加删除表中列字段以及改变列字段数据类型、组合合并表。

CREATE TABLE(创建表)

创建Persons表并指定列的字段和数据类型,varchar为字符,长度限定为255.

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

拷贝旧表的结构和数据到新表。 

CREATE TABLE 新表
AS
SELECT * FROM 旧表 

DROP TABLE(删除表)

DROP TABLE table_name

TRUNCATE TABLE table_name(删除表中数据)

删除表内的数据,但并不删除表本身

添加列

在 "Persons" 表中添加一个名为 "DateOfBirth" 的列,数据类型为日期。

ALTER TABLE Persons
ADD DateOfBirth date

删除列

ALTER TABLE table_name
DROP COLUMN column_name

修改列

SQL Server / MS Access

ALTER TABLE table_name
ALTER COLUMN column_name datatype

My SQL / Oracle

ALTER TABLE table_name
MODIFY COLUMN column_name datatype

JOIN(组合表)

通过不同的条件组合表,组合的条件用on

INNER JOIN

SELECT * FROM tableA  A INNER table B ON A.key = B.key

只有满足A.key=B.key的数据才会组合后返回。

RIGHT  JOIN(LEFT JOIN)

SELECT * FROM tableA  A RIGHT JOINN table B ON A.key = B.key

以B表为基准,B表中的每一条数据都会根据A.Key = B.Key的条件返回,B表中的一条对应A表中的多条,则将A表中的多条和B表中的一条组合返回,B表中的某条无对应则返回该条(该条数据中涉及A表中的字段值为null)

LEFT JOIN示例

Websites表

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

access_log表

+-----+---------+-------+------------+
| aid | site_id | count | date       |
+-----+---------+-------+------------+
|   1 |       1 |    45 | 2016-05-10 |
|   2 |       3 |   100 | 2016-05-13 |
|   3 |       1 |   230 | 2016-05-14 |
|   4 |       2 |    10 | 2016-05-14 |
|   5 |       5 |   205 | 2016-05-14 |
|   6 |       4 |    13 | 2016-05-15 |
|   7 |       3 |   220 | 2016-05-15 |
|   8 |       5 |   545 | 2016-05-16 |
|   9 |       3 |   201 | 2016-05-17 |
|  10 |       6 |   111 | 2016-03-19 |
+-----+---------+-------+------------+

 Full join(SQL Server)

 相当于LEFT JOIN与RIGHT JOIN 的和。  

             

当添加WHERE t1.列名 IS NULL OR t2.列名 IS NULL时为下图

列操作(筛选、排序、去重)

Select columnName From tableName(选)

选择列名columnName从表tableName中,* 号可以表示所有列

AS(别名)

可以在columnName后接AS newName或接字符串’newName’将列名重新命名,也可以对表进行重命名。

下面两示例表示意思相同

SELECT w.name , a.count
FROM Websites AS w, access_log AS a
WHERE a.count=w.id and w.name="菜鸟教程";SELECT Websites.name, access_log.count
FROM Websites, access_log
WHERE access_log.count= Websites.id and Websites.name="菜鸟教程";

WHERE(筛选条件)

筛选符合条件的,会进行隐式类型转换where id * 3 – 6表示筛选出id=2(只有0会被转化为false)

AND表示且,OR表示或,非表示NOTNOT id > 5和id<=5表示相同<>和!=都表示不等于

BETWEEN A AND B

表示值在AB之间,包括A和B,顺序不能反,小的要在前,大的在后,可以用字母比较ASCII 值,注意是否包含AB取决于数据库类型

IS(判断null)

用于判断是否值为null,注意!=5的筛选是无法筛选出null(null不参与非IS的筛选

IN(指定集合)

用于筛选在指定集合的值,a IN (10,20,30)表示a=10 OR a = 20 OR a = 30

LIKE(模糊查询)

模糊查询,%百分号代表0个或任意个字符,相当于正则中的 [\d\D]*,_下划线代表一个字符,相当于正则中的[\d\D]

REGEXP/RLIKE(正则匹配)

使用REGEXP或rlike都表示正则匹配  WHERE name REGEXP '^J'表示匹配以J开头的name。注意后面接正则字符串。

SELECT DISTINCT(去重)

去重(只有所有选取列的对应值相同才会被去除)

ORDER BY(排序)

排序(默认按升序排列,字段后接ASC表示升序,DESC表示降序),注意ORDER BY a,b DESC表示先将b列按降序排列,再将a列按升序排列,多列字段的排序,按右到左依次对每个字段进行排序。

SELECT TOP(取前多少数据SQL Server/MS Access)

选取前多少数据,select top 7 id,name 选取前7行的id和name,7后面可以加空格percent表示前百分之7。注意有排序会先筛选排序最后再取数据

LIMIT(取前多少数据MySQL)

选取前多少数据,SELECT * FROM table LIMIT 7,表示取前7条数据。Limit 0,7和LIMIT 7 OFFSET 0都表示取前7条。注意有排序会先筛选排序最后再取数据

列操作(增、删、改、组合、合并)

INSERT INTO(插入)

向表中插入n条数据

INSERT INTO Websites (name, url, country) VALUES 
('stackoverflow', 'http://stackoverflow.com/', 'IND'),
('csdn', 'http://csdn.com/', 'cn');

表示向插入Websites表中插入2条数据,每条数据用括号包裹,逗号隔开。

注意没有指定要插入数据的列名的形式需要列出插入行的每一列数据。

SELECT INTO(旧表数据插入新表!MySQL)

在旧表中选择数据插入新表(新表不存在)

SELECT column1,column2...
INTO newtable 
FROM table1;

注意新表将会使用 SELECT 语句中定义的列名称和类型进行创建可以使用 AS 子句来应用新名称。 

INSERT INTO(旧表数据插入新表)

在旧表中选择数据插入新表(新表已存在)

INSERT INTO newTable (column1,column2...) 
SELECT column1,colum2... 
FROM ordTable

DELETE FROM(删除)

删除表中数据

DELETE FROM Websites WHERE name='Facebook';
--表示删除满足条件的行。
DELETE FROM Websites;
--表示删除该表下所有行(保留了表)

UPDATE(修改)

更新表中已存在的记录

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

CONCAT(组合多列数据)

组合多列数据为一列。

SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info FROM Websites;

表示选取name和site_info列,site_info列的值由url,alexa,country列的值组成,中间以逗号和空格隔开。

UNION(合并数据)

合并两个或多个 SELECT 语句的结果集。注意UNION 内部的 SELECT 语句必须选相同数量的列、对应的列也必须拥有相似的数据类型。

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

表示将两表中的country列合并成一列,会自动去重(需保留重复的话用UNION ALL)。

注意ORDER BY会在合并后进行排序

SQL索引、AUTO INCREMENT、SQL约束(not null、unique、primary key、foreign key、check、defalut)

SQL索引、AUTO INCREMENT、SQL约束(not null、unique、primary key、foreign key、check、defalut)_YF-SOD的博客-CSDN博客

SQL视图

视图是基于 SQL 语句的结果集的可视化的表,展示部分表的内容。提供了一个统一访问数据的接口。(可以设置只读模式允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)

MySQL学习笔记——视图_修改视图会修改原表吗_默萧756的博客-CSDN博客 

通用数据类型

SQL 通用数据类型 | 菜鸟教程

Microsoft Access/MySQL/SQL Server中的数据类型

SQL MS Access、MySQL 和 SQL Server 数据类型 | 菜鸟教程 

SQL函数

SQL常见问题

https://deepinout.com/mysql/mysql-questions/609_mysql_commysqljdbcpackettoobigexception.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27203.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[pyqt5]鼠标指针光标样式

pyqt5默认有下面几种光标样式 设置光标&#xff1a; self.setCursor(Qt.CrossCursor) 恢复默认光标 self.unsetCursor() 自定义光标 from PyQt5.Qt import * import sysapp QApplication(sys.argv)# 创建一个控件 window QWidget() window.resize(500,500) window.move(…

指针知多少

作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;Python等 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 望小伙伴们点赞&#x1f44d;收藏✨加关注哟&#x1f495;&#x1f495; ⛵前言 不知道大家还记…

【深度学习】多任务学习

多任务学习是一个很火的话题&#xff0c;在自动驾驶领域以及其他对存储资源要求较高的端侧任务&#xff0c;都会考虑这种方式。之前面试的时候也有被问题多任务学习。前几天看到一个写得很好的例子&#xff0c;在此记录一下&#xff0c;也好久没有写博客了。 1.参考 论文是20…

p2p大豆计数模型

前面学习了一下论文&#xff1a;Improved Field-Based Soybean Seed Counting and Localization with Feature Level Considered 论文链接&#xff1a;https://spj.science.org/doi/10.34133/plantphenomics.0026 解读链接&#xff1a;论文阅读--考虑特征水平的改进的基于田间…

如何在 3ds Max 中使用 Mental Ray 制作逼真的草地和带有光晕的天空

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 首先&#xff0c;您将创建一个平面对象&#xff0c;然后添加一个噪点修改器。在此之上应用毛发和毛皮修饰符。 这将用于模拟逼真的草地。 我们用日光系统创造太阳和天空。为太阳添加镜头和戒指效果以及酷炫…

ES6类-继承-Symbol-模版字符串

目录 类 继承 ES5 如何继承 ES6继承 Symbol 用途 可以产生唯一的值&#xff0c;独一无二的值 解决命名冲突 getOwnPropertySymbols() 作为全局注册表 缓存 Symbol.for() 消除魔术字符串 模版字符串 类 在javascript语言中&#xff0c;生成实例对象使用构造函数&#xf…

使用Linux Deploy搭建服务器(三)Linux Deploy安装宝塔面板

宝塔面板是一个免费的服务器管理平台&#xff0c;可以在你的服务器上安装它&#xff0c;然后你就能很方便的管理你的服务器&#xff0c;以及搭建各种服务平台&#xff0c;在此基础上我们可以使用内网穿透&#xff0c;搭建出自己的Linux服务器。可以这样一个相对便宜的方式&…

【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究

太阳赤纬的计算 #include <stdio.h> #include <math.h>double calculateDelta(int year, int month, int day, int hour, int minute, int second) {int n, n0;double t, theta, delta;// 计算n和n0n month * 30 day;n0 79.6764 0.2422 * (year - 1985) - ((y…

前端Vue仿微信我的菜单栏组件按钮组件

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

Oracle Profile概念与示例

Profile和SQL Profile是不同的&#xff0c;前者是用CREATE PROFILE创建&#xff0c;后者和SQL Tuning有关。 profile的定义为&#xff1a; which is a set of limits on database resources. If you assign the profile to a user, then that user cannot exceed these limits…

CAPL(vTESTStudio) - CAPL实现CANCANFD接收

诊断作为CAN&CANFD总线测试中最大也是很重要的一块内容,虽然测试过程比较简单,但是作为诊断接收函数,我想大家在测试中都会遇到多种多样的自研函数,经过多年的工作,我也是一直希望写出一个能够适配我所能想到的所有情况的诊断应答接收,以下函数是我最近对于诊断接收函…

右键pdf文件没有打印

问题描述 右键点pdf文件&#xff0c;弹出的菜单找不到打印选项。网上找了很多办法&#xff0c;然并卵啊。还是得靠自己慢慢摸索。 原因分析 新安装的win11系统&#xff0c;pdf文件默认可以用windows自带的edge浏览器打开。但是edge浏览器没有能力提供右键打印功能。 解决办法…