当前位置:首页 > 图灵资讯 > 技术篇> SQL基础教程

SQL基础教程

发布时间:2023-04-25 11:05:38
重要的SQL语法事项

SQL对大小写不敏感

一些数据库系统要求每个sql命令的末端使用分号。

分号是在数据库系统中分隔每个sql语句的标准方法,以便在相同的要求中执行一个以上的语句;

SQL DML和DDL

SQL可分为数据操作语言两部分(DML)以及定义语言的数据(DDL);

SQL(结果化查询语言)是用来执行查询的语法。但是SQL语言也包含了用于更新、插入和删除记录的语法。

构成SQLDML部分的查询和更新指令

select、update、delete、insert into

SQL的数据定义语言(DDL)我们有能力创建或删除表格的一部分。还可以定义索引,规定表之间的连接,并对表之间施加约束。

DDL语句是SQL中最重要的

create databse:创建数据库alter databsse:修改数据库createtee table:创建新的表alter table:dropp变更数据库表 table:删除表create index:创建索引drop index:删除索引
基本关键字
select * from 表名1、关键词 distinctselect distinct 列名 from 表名称2、关键词 where3、相关操作符等于 =、不等于 <>、大于 >、>=、<=、 between、 likeor、 and、 order by:默认情况下,记录按照升序排序4、insert into table(列名1,……) values(值1,...)5、update 表名称 set 名称=新值 where 列名称 = 某值6、delete from 表名称 列名称 = 值
SQL高级教程SQL Top
top句用于规定要返回的记录数量,对于拥有数千个大表,top句非常有用。1、persions表选择50%的记录。select top 50 percent * from persions2、在persion表中,选择前两个记录selecttt top 2 * from persions3、selectmysql语法 * from Persion limit 54、selecttoracle语法 * from persion limit rownum <= 5
SQL Like
not like \ like
SQL 通配符
%  代表零个或多个字符_  只替代一个字符[]] 字符列中的任何单个字符[^] 任何不在字符列中的单个字符[!] 任何不在字符列中的单个字符
SQL in
in操作符允许我们在where子句中规定多个值
SQL Between
where句中使用between操作符,其功能是选择两个值之间的数据范围
SQL Aliases
使用sql可以指定列名和表名的别名
SQL Join
JOIN: 如果表中至少有一个匹配,则返回LEFT JOIN: 即使右表中没有匹配,也要从左表返回所有行RIGHT JOIN: 即使左表不匹配,也要从右表返回所有行FULL JOIN: 只要其中一个表中有匹配,返回行1、引用两个表selectt p.lastName,o.orderNo from psersion p,order o where p.id_p = o.id_p;2、使用inner joinselect p.lastName,o.order from persion inner join order on p.id_p = o.id_p;
SQL union

union操作符用于操作两个或多个select语句的结果集。

注:union内的select语句必须有相同数量的列。列也必须有相似的数据类型。同时,select语句的顺序必须相同

SELECT E_Name FROM Employees_ChinaUNIONSELECT E_Name FROM Employees_USA
SQL select into

用于创建表备份文件的语句

从一个表中选择数据,然后将数据插入另一个表中。

1、语法[将所有列插入新表,只希望列插入新表]select */列名 into 新表名 [in 数据库名]from 旧表名select * into persion in 'Backup.mdb'from Persionsselect lastName,FirstNameinto persion_backupform persionswhere city = '北京'
SQL Ceate DB
用于创建数据库createtet dadabase databse_name
SQL Create Table

用于创建数据库中的表

1.语法
create table 表名(列名1 数据类型,...)
2.数据类型
3.实例
CREATE TABLE `smart_project_file_info` (  `id` BIGINT(20) NOT NULL COMMENT 唯一的ID,  `project_file_id` BIGINT(20) NOT NULL COMMENT ID,项目合规文件表,  `project_file_info_model_id`BIGINT(20) DEFAULT '1' COMMENT 项目合规文件信息模型id,  `file_group_id` VARCHAR(30) DEFAULT NULL COMMENT 分组ID的合规文件,   `data_value` VARCHAR(1000) DEFAULT NULL COMMENT 日期类要转换数据值,  `creator` BIGINT(20) DEFAULT NULL COMMENT "创造人",  `create_date` DATETIME DEFAULT NULL COMMENT 创造时间,  `updater` BIGINT(20) DEFAULT NULL COMMENT "更新人",  `update_date` DATETIME DEFAULT NULL COMMENT 更新时间,  `remark` VARCHAR(200) DEFAULT NULL COMMENT '备注',  PRIMARY KEY (`id`),  KEY `idx_project_file_id` (`project_file_id`), -- 索引  KEY `idx_project_file_info_model_id` (`project_file_info_model_id`)) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT=“项目合规文件信息表”;
SQL 约束(Constraints)

限制添加表中数据的类型

NOT NULLUNIQUEPRIMARY KEYFOREIGN KEYCHECKDEFAULT
SQL NOT NULL约束

NOT NULL 强制列不接受nulll值

CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))
SQL UNIQUE约束

UNIQUE约束唯一识别数据库中的每个记录。

UNIQUE和PERMARY KEY约束为列或列集提供了唯一的保证

PRIMARY KEY UNIQUE约束具有自动定义

注:每个表可以有多个UNIQUE约束,但每个表只能有一个PRIMARY KEY约束。

1、mysqlCREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),UNIQUE (Id_P))2、sql server /Oracle/MS AccessCREATE TABLE Persons(Id_P int NOT NULL UNIQUE,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))3、假如需要命名 UNIQUE 约束和定义多个列 UNIQUE 约束,请使用以下内容 SQL 语法:(mysql/sql server)CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName))1、当表已经创建时,如需在 "Id_P" 列创建 UNIQUE 请使用以下约束 SQL:mysql/sql server:————————————————————————ALTER TABLE PersonsADD UNIQUE (Id_P)alter table persions add constraint uc_persionID unique (id_p,LastName)————————————————————————2、如需撤销 UNIQUE 约束,请使用以下内容 SQL:mysql:ALTER TABLE PersonsDROP INDEX uc_PersonID————————————————————————sql server:ALTER TABLE PersonsDROP CONSTRAINT uc_PersonID
SQL PRIMARY KEY约束

PRIMARY KEY 限制唯一识别数据库表中的每个记录。

主键必须包含唯一的值。

不能包含主键列 NULL 值。

每个表都应该有一个主键,每个表只能有一个主键。

下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束:

1、mysql

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))

2、SQL Server / Oracle / MS Access:

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

3、假如需要命名 PRIMARY KEY 约束和定义多个列 PRIMARY KEY 约束,请使用以下内容 SQL 语法:(mysql/sql server)

CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName))

1、如果是在表现存在的情况下 "Id_P" 列创建 PRIMARY KEY 约束,请使用以下内容 SQL:

alter table persionsadd primary key (id_P)

2、假如需要命名 PRIMARY KEY 约束和定义多个列 PRIMARY KEY 约束,请使用以下内容 SQL 语法:

alter table persionsadd constraint pk_persionID primary key (id_P,lastName)

3、取消primary KEY约束

mysql:alter table persionsdrop primary key————————————————————————sql server:alter table persionsdrop constraint pk_persionID
SQL FOREIGN KEY约束

个表中的 FOREIGN KEY 指向另一个表中 PRIMARY KEY。

mysql——————————————CREATE TABLE Orders(Id_O int NOT NULL,OrderNo int NOT NULL,Id_P int,PRIMARY KEY (Id_O),FOREIGN KEY (Id_P) REFERENCES Persons(Id_P))——————————————sql server/oracle——————————————CREATE TABLE Orders(Id_O int NOT NULL PRIMARY KEY,OrderNo int NOT NULL,Id_P int FOREIGN KEY REFERENCES Persons(Id_P))
SQL CHECK

用于限制列中值范围的check约束

若单列定义 CHECK 约束,那么该列只允许特定值。

假如一个表的定义 CHECK 约束,那么这种约束就会限制特定列中的对值。

1、MySQL——————————————————CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CHECK (Id_P>)-20))、sql server/oracle___________________CREATE TABLE Persons(Id_P int NOT NULL CHECK (Id_P>0),LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))3、假如需要命名 CHECK 约束和定义多个列 CHECK 约束,请使用以下内容 SQL 语法:create table persons(Id_P int not null,LastName Varchar(255) not null,firstName varchar(255),    Address varchar(255),    City varchar(255),    constraint chk_persion check(Id_P>0,City='Sandnes'))4、若表现存在,则为“Id_P列创建CHECK约束,请使用以下SQLalter table persons add check(Id_P > 0)5、假如需要命名 CHECK 约束和定义多个列 CHECK 约束,请使用以下内容 SQL 语法:alter table persons add constraint chk_persion check (Id_p> 0,city='Sandes')6、取消check约束sqleck server/oracle-------------------------alter table persons drop constraint chk_person_________________________mysql alter table personsdrop check chk_Person
SQL default约束
CREATE TABLE Persons(Id_P int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255) DEFAULT 'Sandnes')

1、如果是在表现存在的情况下 "City" 列创建 DEFAULT 约束,请使用以下内容 SQL:

mysqlALTER TABLE PersonsALTER City SET DEFAULT 'SANDNES'—————————————————————————sql server/oraclealter table personsalter column city set default 'SANDNES'

2、取消default约束

mysql——————————————————————alter table personsalter city drop default——————————————————————sql server/oraclealter table personsalter column city drop default
SQL drop table

使用drop语句可以轻松删除索引、表和数据库

1、删除表格中的索引Microsoft SQLJet语法:drop index index_name on table_namesql server语法dropp index table_name.index_namedb2和oracle语法drop index index_namemysql语法alter table table_name drop index_name
2、删除表(表的结构、属性和索引也将被删除)drop table 表名称
3、删除数据库drop database 数据库名称
4、只删除表中的数据,不删除表本身的truncatete table 表名称
SQL alter table

添加、修改或删除现有表中的列

1、添加列alter table table_nameadd colum_name datatype2、列alter删除表中的列alter table table_namedrop column_name(某些数据库系统不允许在数据库中删除列)
3、改变表中列的数据类型,alter table table_name alter column_name data_type
SQL increment

自主创建关键字段的值

1、createeteaterysql用法createatel用法 table persons(P_id int not null auto_increment,lastName varchar(20) not null,……)2、sql serverCREATE TABLE Persons(P_Id int PRIMARY KEY IDENTITY,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))3、CREATEEETEOracle SEQUENCE seq_personMINVALUE 1START WITH INCREMENT BY 1CACHE 10INSERT INTO Persons (P_Id,FirstName,LastName)VALUES (seq_person.nextval,'Lars','Monsen')
SQL view

视图是基于SQL语句结果集的可视化表

试着包含行和列,就像一个真实的表。视图中的字段来自一个或多个数据库中真实表中的字段。我们可以向视图添加SQL函数、where和JOIN语句,我们也可以提交来自单个表的数据。

注:视图中的函数不会影响数据库的设计和结构,where 、或者join语句的影响

1、sql create (创建视图)create view view_name as select column_names from table_name where condtioncreate view [current product list] asselect productID,ProductNamefrom Productswhere DisContinued = no2、查看视图selectt * from [current Product list]3、更新视图createte更新视图 or replace view view_name as select column_name(s) from table_namewhere condition、取消视图drop view view_name
SQL date函数

当我们处理日期时,最困难的任务可能是确保插入的日期格式与数据库中的日期列格式相匹配。

只要数据只包含日期,运行查询就不会有问题。但是,如果涉及时间,情况就有点复杂了。

在讨论日期查询的复杂性之前,让我们来看看最重要的内部建设日期处理函数。

1、mysql date函数

2、sql server date函数

3、sql date数据类型

  • 使用以下数据类型的mysql数据库存储日期或日期/时间值
  • date - 格式:YYYY-MM-DD
  • datetime - 格式:YYYY-MM-DD HH:MM:SS
  • datestamp- 格式: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 - 格式:唯一的数字
SQL NULLS

NULL值是遗漏的位置数据

默认情况下,nulll值可以存储在表列中

is nullis not null
SQL isnull()
1、sql serverSELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))FROM Products2、oracleSELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))FROM Products3、mysqlSELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))FROM Products或SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))FROM Products
SQL 数据类型
https://www.w3school.com.cn/sql/sql_datatypes.asp
SQL 服务器

现代的 SQL 构建在服务器上 RDBMS 之上。

1、DBMS - 数据库管理系统(Database Management System)

数据库管理系统是一种计算机程序,可以访问数据库中的数据。

DBMS 在数据库中提取、修改或存储信息的能力。

不同的 DBMS 为查询、提交和修改数据提供不同的函数。

RDBMS - 关系数据库管理系统(Relational Database Management System)

2、关系数据库管理系统 (RDBMS) 它也是一种数据库管理系统,其数据库是根据数据之间的关系组织和访问数据的。

20 世纪 70 年代初,IBM 公司发明了 RDBMS。

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

SQL 函数MS Access合计函数
SQL Server的总函数
Scalar函数

 

上一篇 Java经典面试题总结
下一篇 基于Java+Mysql的超市管理系统(附源码)

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题