精华内容
下载资源
问答
  • 向数据库添加记录的sql命令
    千次阅读
    2022-01-17 15:12:10

    SQLSERVER数据库、表的创建及SQL语句命令

    备份,还原,创建,删除,查询,修改

    ** 数据库定义及操作命令:**

    按照数据结构来组织、存储和管理数据的仓库。由表、关系以及操作对象组成,把数据存放在数据表中。
    修改数据库密码的命令:
    EXEC sp_password NULL, ‘你的新密码’, ‘sa’
    sp_password Null,‘sa’,‘sa’
    1、备份SQL数据库
    备份SQL数据库:

    backup database [3D-DATA]/*原数据库*/ to  disk='D:\Program Files\Microsoft SQL       Server\MSSQL10.MSSQLSERVER\MSSQL\backup\3D-DATA_backup_20131017.bak/*数据库备份文件*/' 
    with name = '3D-DATA_backup_20131017'/*数据库备份文件*/
    

    查看备份数据库的逻辑文件:

    restore filelistonly 
    from disk= 
    'd:\Program Files\Microsoft SQL Server\
    MSSQL10.MSSQLSERVER\MSSQL\backup\3D-DATA_backup_20131017.bak '
    

    强制还原SQL数据库:
    [其中,Test-3d是已存在的数据库,3D-FEP_data和3D-FEP_log为备份数据库的两个逻辑文件,]

    restore database [Test-3d]
       from disk = 'd:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\3D-DATA_backup_20131017.bak' 
    with 
    move '3D-FEP_data' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Test-3d.mdf', 
    move '3D-FEP_log' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Test-3d_log.ldf',
    

    stats = 10/* 表示每完成10%显示一条记录*/ ,replace/表示强制,放置在with后,加英文逗号也可/

    以下为另一种方式:
    -备份数据DB 到.bak文件。然后利用此bak文件恢复一个新的数据库DBTest。

    USE master;
    backup database DB 
    to disk = 'g:\DBBack0930.bak' ;
    restore filelistonly 
    form disk = 'g:\DBBack0930.bak' ;
    
    restore database DBTest(此数据库,已创建) 
    FROM DISK = 'g:\DBBack0930.bak' 
    WITH MOVE 'DBTest' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest.mdf',
    MOVE 'DBTest_log' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest_log.ldf' 
    GO
    

    SQL Server数据库备份有两种方式:
    1、使用命令:BACKUP DATABASE,将数据库文件备份出去;
    2、直接拷贝数据库文件mdf和日志文件ldf的方式。
    下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server Enterprise Manager (SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)
      正常的备份、恢复方式正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。
      卸下数据库的命令:Sp_detach_db
      数据库名连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,…16] sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′ 使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将 mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

    **

    2. SQL命令创建数据库及数据表

    **

    use master
    if db_id ('Test-a01')is not null--判断数据库,是否已存在
    drop database [Test-a01]--删除数据库 小心使用 使用错误就跑路
    go
    

    创建Test-a01

    create database [Test-a01] on  primary 
    (	
    	name = 'Test-a01_data', --数据文件的逻辑名称
    	filename = 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Test-a01_data.ndf' , --数据文件的路径和文件名
    	size = 3mb ,-- 数据文件的初始容量
    	maxsize = 10mB --数据文件的最大容量
    )
    log on 
    ( 
    	name = 'Test-a01_log', --事务日志文件的逻辑名称
    	filename = 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Test-a01_log.ndf' , --事务日志文件的路径和文件名
    	size = 3mb , --事务日志文件的初始容量
    	maxsize = 10mB --事务日志文件的最大容量
    )
    Go
    

    创建表&字段

    use [xxxxx] /*指定创建表的数据库*/
    go
    create table student
    (
    	stuID char(5) primary key,--主键
    	stuname char(20)not null,
    	stusex char(2) check(stusex in('男','女')) default('女'),--设定范围及默认值
    	stuage char(6),
    	stubirth date check(stubirth between '1985-01-01' and '1995-12-31'),--设置日期范围
    	stuaddress varchar(100),
    	stunum char(12),
    	stuemail char(40)check(stuemail like '%@%')
    )
    go
    use [xxxxx]
    go
    create table teacher
    (
    	TeacherID char(5), 
    	Teaname char(20)not null,
    	Teasex char(2) check(Teasex in('男','女')) default('女'),
    	Teaage char(6),
    	Entrydate date check(Entrydate between '1950-01-01' and '2099-12-31'),
    	Teaphone varchar(100),
    	Teanum char(12),
    	Teaaddress char(40)
    )
    

    1、删除新表:

    drop table table_name;
    

    2、创建视图:

    create view viewname as select statement;1create view view_name01(**stuid,stuname,stusex,stuage**) 
    as 
    select **stuid,stuname,stusex,stuage** from student where stuage>=25;
    其中,**中的字段列,必须相同。
    
    如下例2,则不用考虑(比较常用).
    create view view_name02 
    as 
    select stuid,stuname,stusex,stuage from student where stuage>=25;
    
    

    查看视图:

    select * from view_name;
    

    3、删除视图:

    drop view viewname;
    

    4、创建索引:

    create [unique] index idx_name on table_name(字段1);
    create index idx_name on table_name (COLUMN_NAME);
    

    5、删除索引:

    drop index idxname;
    

    常见创建数据表的限制,有以下几种:
    NOT NULL
    UNIQUE
    CHECK
    主键 (Primary Key)
    外来键 (Foreign Key)

    1、NOT NULL
    表示某字段的值,不允许出现空值。
    例如:

    CREATE TABLE Customer 
    (
    	SID int NOT NULL, 
    	Last_Name varchar (30) NOT NULL, 
    	First_Name varchar(30)
    );
    

    2、unique
    表示某字段的值,不允许重复
    例如:

    CREATE TABLE Customer 
    (
    	SID int Unique, 
    	Last_Name varchar (30) NOT NULL, 
    	First_Name varchar(30)
    );
    

    3、check
    检查某字段的值,必须符合某些条件

    CREATE TABLE Customer 
    (
    	SID int  check( sid>0 ), 
    	Last_Name varchar (30) NOT NULL, 
    	First_Name varchar(30)
    );
    

    4、主 键
    主键 (Primary Key) 中的每一笔资料都是表格中的唯一值。
    添加主键SQL命令(注意:选择作主键的列,必须有数值):
    Alter table teacher add primary key(TeacherID);
    Alter table teacher add primary key(TeacherID);

    创建数据表时,加主键的不同方式:
    MySQL:

    CREATE TABLE Customer 
    (SID integer, 
    Last_Name varchar(30), 
    First_Name varchar(30), 
    PRIMARY KEY (SID)); 
    

    Oracle:

    CREATE TABLE Customer 
    (SID integer PRIMARY KEY, 
    Last_Name varchar(30), 
    First_Name varchar(30)); 
    

    SQL Server:

    CREATE TABLE Customer 
    (SID integer PRIMARY KEY, 
    Last_Name varchar(30), 
    First_Name varchar(30)); 
    

    删除主键的SQL语句:
    语法:alter table 表名 drop constraint 主键约束名(非字段名称)
    如:

    alter table Stu_PkFk_S drop constraint PK_S;
    

    5、外 键
    外来键是一个(或数个)指向另外一个数据表主键的字段。外键作用是:确定资料限制输入的参考完整性(referential integrity)。换言之,只有被准许的字段值才会被存入数据库内。
    Store_Information 表格

    StoreID(主键)	store_name      Sales 	Date 	        Reg_ID(外键)
    1001	        Los Angeles 	$1500 	Jan-05-1999 	9003
    1002	        San Diego 	    $250 	Jan-07-1999 	9004
    1003	        Los Angeles 	$300 	Jan-08-1999 	9003
    1004	        Boston 	        $700 	Jan-08-1999 	9001
    

    Geography 表格

    RegionID(主键)	region_name 	store_name 
    9001	        East 	        Boston 
    9002	        East 	        New York 
    9003	        West 	        Los Angeles 
    9004	        West 	        San Diego 
    
    

    创建外键的命令操作:如下,

    alter table [Store_Information] 
    add foreign key (Reg_ID) references [Geography](regionID);
    

    alter table 需要建立外键的表 add constraint 外键名字 foreign key references 外键表(外键字段) ;

    以下列出几个在建置 ORDERS 表格时指定外键的方式:
    外键Reg_ID,指向主键regionID。
    MySQL:

    CREATE TABLE ORDERS 
    (Order_ID integer, 
    Order_Date date, 
    Customer_SID integer, 
    Amount double, 
    Primary Key (Order_ID), 
    Foreign Key (Customer_SID) references CUSTOMER(SID)); 
    

    Oracle:

    CREATE TABLE ORDERS 
    (Order_ID integer primary key, 
    Order_Date date, 
    Customer_SID integer references CUSTOMER(SID), 
    Amount double); 
    

    SQL Server:

    CREATE TABLE ORDERS 
    (Order_ID integer primary key, 
    Order_Date datetime, 
    Customer_SID integer references CUSTOMER(SID), 
    Amount double); 
    

    以下的例子则是改变表格架构来指定外键。这里假设 ORDERS 表格已经被建立,而外键尚未被指定:

    MySQL:

    ALTER TABLE ORDERS 
    ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid); 
    

    Oracle:

    ALTER TABLE ORDERS 
    ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid); 
    

    SQL Server:

    ALTER TABLE ORDERS 
    ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
    

    删除外键的SQL命令:
    alter table 表名 drop constraint 外键约束名(非字段名);
    如:

    alter table Stu_PkFk_Sc drop constraint FK_s;
    

    6、Alter Table
    改变表结构的方式:
    1、加一个字段

    Alter table table_name add 字段1 int,字段2 char(10),; 加多个字段
    Alter table table_name add 字段1 int、或字段2 char(10)、…;加一个字段
    

    2、删去一个字段

    Alter table table_name drop column字段1;--(SQLserver数据库,字段前要加“column”)
    

    3、改变字段名称 (此命令SQLserver数据库,不可用)

    ALTER table table_name change字段1 新字段1 char(50); 
    

    4、改变字段的类型(此命令SQLserver数据库,不可用)

    ALTER table table_name modify 字段1 char(20); 
    

    SQL语句:
    一、DML—数据操纵语言SQL命令,分为:select查询、insert into插入、delete from删除、update set修改.
     Select 查询命令
    最复杂、存在非常多的使用方法
    1、查询表中所有的数据

    Select  *  from  table_name;
    

    2、普通条件(where、and、or)查询

    Select *或者字段1,字段2,from table_name where 字段1=值1或字段2=值2;
    

    如查询一个范围的薪资

    SELECT store_name FROM Store_Information WHERE salary > 1000 OR (salary < 500 AND salary > 275);
    

    3、模糊条件(like)查询

    Select *或者字段1,字段2,from table_name where字段1 like %A%;包含A的字符
    Select *或者字段1,字段2,from table_name where字段1 like A%;以A起头的字符
    Select *或者字段1,字段2,from table_name where字段1 like %A;以A结尾的字符
    Select *或者字段1,字段2,from table_name where字段1 like '_汉字_';一个下划线,表示一个字符,共计四个字符
    Select *或者字段1,字段2,from table_name where字段1 like '%汉字%'; %表示无限个字符
    

    4、空值条件(null)查询

    Select *或者字段1,字段2,from table_name where 字段1 is not null;
    

    5、范围查询一 (in)

    Select *或者字段1,字段2,from table_name where 字段1 in (1,2,3,)或者('质量','数量',…)…;-- 字段值可为数值、或字符类型
    

    6、范围查询二 (between …and…)

    Select *或者字段1,字段2,from table_name where 字段1 between 10 and 100; 
    Select *或者字段1,字段2,from table_name where 字段1 between '1990-01-01' and '2012-12-31';
    

    7、排序查询(order by…asc/desc 一般都是组合使用)

    SELECT * FROM table_name  order by 字段1 asc;
    SELECT * FROM table_name  order by 字段2 desc;
    SELECT * FROM table_name  order by 字段1, 字段2,descasc;
    SELECT * FROM table_name where 字段1=数值1 order by 字段1 desc, 字段2 asc,;
    

    8、Count 统计记录数查询

    SELECT  Count(字段1,或字段2,…)[别名a…] FROM table_name; 【一般不与其它字段一起组合,否则会报错,可在后面加别名】
    【加条件“is not null,可过滤掉为空值数据】
    SELECT  Count(字段1,或字段2,…)[别名a…] FROM table_name where(字段1,或字段2,…) is not null; 
    SELECT  Count(字段1,或字段2,…),字段A FROM table_name group by 字段A;
    SELECT  Count(字段1,或字段2,…),字段A FROM table_name where 字段B=数值 group by 字段A;
    【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
    

    9、sum 求和

    SELECT  sum(字段1,或字段2,…)FROM table_name;
    sum匹配的字段,一定为数值类型。 
    SELECT  sum(字段1,或字段2,…),字段A FROM table_name group by 字段A;
    SELECT  sum(字段1,或字段2,…),字段A FROM table_name where 字段B=数值 group by 字段A;
    【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
    

    10、Max 求和

    SELECT  Max(字段1,或字段2,…)FROM table_name;
    sum匹配的字段,一定为数值类型。 
    SELECT  Max(字段1,或字段2,…),字段A FROM table_name group by 字段A;
    SELECT  Max(字段1,或字段2,…),字段A FROM table_name where 字段B=数值 group by 字段A;
    【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
    

    11、Min 求和

    SELECT  Min(字段1,或字段2,…)FROM table_name;
    sum匹配的字段,一定为数值类型。 
    SELECT  Min(字段1,或字段2,…),字段A FROM table_name group by 字段A;
    SELECT  Min(字段1,或字段2,…),字段A FROM table_name where 字段B=数值 group by 字段A;
    【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
    

    12、AVG 求平均值

    SELECT  avg(字段1,或字段2,…)FROM table_name;
    sum匹配的字段,一定为数值类型。 
    SELECT  avg(字段1,或字段2,…),字段A FROM table_name group by 字段A;
    SELECT  avg(字段1,或字段2,…),字段A FROM table_name where 字段B=数值 group by 字段A;
    【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
    

    13、having筛选组查询
    那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。
    HAVING 子句通常是在一个 SQL 句子的最后。
    一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。
    HAVING 的语法如下:

    SELECT "栏位1", SUM("栏位2") 
    FROM "表格名" 
    GROUP BY "栏位1" 
    HAVING (函数条件) ;
    
    select (字段1,或字段2,…)from table_name group by <字段1,或字段2,…> having <分组条件>;
    例如:查询出本次考试男女生的总成绩大于等于250分的信息 
    select sex,sum(score) as '总成绩' from student group by sex  having sum(score)>=250;
    

    12、表格连接
    Store_Information 表格

    store_name 	    Sales 	Date 
    Los Angeles 	$1500 	Jan-05-1999 
    San Diego 	    $250 	Jan-07-1999 
    Los Angeles 	$300 	Jan-08-1999 
    Boston 	        $700 	Jan-08-1999 
    
    

    Geography 表格

    region_name 	store_name 
    East 	        Boston 
    East 	        New York 
    West 	        Los Angeles 
    West 	        San Diego 
    
    
    SELECT A1.region_name REGION, SUM(A2.Sales) SALES 
    FROM Geography A1, Store_Information A2 --A1,A2使用到别名,更助于理解
    WHERE A1.store_name = A2.store_name   --关键处,存在相同的字段列
    GROUP BY A1.region_name --按区域名称,进行分类
    

    结果:
    REGION SALES
    East $700
    West $2050
    外部连接

    Select  a2. region_name, sum(a1.Sales ) from Store_Information a1 , Geography a2
    Where  a1. store_name=a2. store_name+   --"+"表示列表中的所有资料,都查取出来
    Group by a2.region_name;
    

    13、CONCATENATE字段列表内容间的串连
    MySQL: CONCAT()
    Oracle: CONCAT(), ||
    SQL Server: +
    CONCAT() 的语法如下:
    CONCAT(字符串1, 字符串2, 字符串3,…): 将字符串1、字符串2、字符串3,等字符串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字符串串连起来。不过,在Oracle中,我们可以用’||'来一次串连多个字符串

    SQL Server使用 +,如:加个空格+’ '+

    SELECT region_name + ' ' + store_name FROM Geography 
    WHERE store_name = 'Boston';
    

    14、SUBSTRING
    SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的数据库中不完全一样:
    MySQL: SUBSTR(), SUBSTRING()
    Oracle: SUBSTR()
    SQL Server: SUBSTRING() 此函数不可用
    最常用到的方式如下 (在这里我们用SUBSTR()为例):
    SUBSTR(str,pos): 由中,选出所有从第位置开始的字符。请注意,这个语法不适用于SQL Server上。
    SUBSTR(str,pos,len): 由中的第位置开始,选出接下去的个字符
    假设我们有以下的表格:
    Geography 表格

    region_name	  store_name
    East	      Boston
    East	      New York
    West	      Los Angeles
    West	      San Diego
    
    

    例1:

    SELECT SUBSTR(store_name, 3) 
    FROM Geography 
    WHERE store_name = 'Los Angeles'; 
    

    结果:
    ‘s Angeles’
    例2:

    SELECT SUBSTR(store_name,2,4) 
    FROM Geography 
    WHERE store_name = 'San Diego'; 
    

    结果:
    ‘an D’

    15、top查询
    随机取出10条数据

    select top 10 * from tablename order by newid();
    

     insert into…插入
    1、普通常用插入

    Insert into table_name (字段1, 字段2, 字段3,)values (数值1, 数值2, 数值3,);
    

    2、插入子查询结果

    Insert into table_name [(字段1, 字段2, 字段3,)] SELECT 语句;
    

    –后面的select语句中,还可加相应的限制条件(如:where)
    例如:

    insert into [XXXXX].[dbo].[Geography_001] (regionID,region_name,store_name)
    select [regionID],[region_name],[store_name] from [XXXXX].[dbo].[Geography] 
    where regionID>9002;
    

     delete from…删除
    1、删除表中的符合某个条件的所有数据信息:

    Delete from table_name where 字段1=数值1,或字段2=数值2,;
    

    2、删除表中所有内容,表结构不删除,以下两种效果一样:

    Delete table_name;
    truncate table table_name;
    

    3、完全删除表:

    Drop table table_name;
    

     update …set修改

    update table_name set 字段1=数值1 where 字段1=数值1, 字段2=数值2,;
    

    例如:

    UPDATE Store_Information SET Sales = 500
    WHERE store_name = "Los Angeles" 
    AND Date = "Jan-08-1999";
    

    SQL查询的拓展
     UNION 或 UNION ALL
    作用是将两个 SQL 语句的结果合并起来(相当于取两个SQL 语句的并集)
    UNION 的语法如下:
    [SQL 语句 1] UNION [SQL 语句 2]
    限制是两个 SQL 语句查询的字段值(可以为多个字段)内容,必须是同类型的数据。

    SELECT store_name
    FROM [XXXXX].[dbo].[Geography] 
    union
    SELECT 
    Store_Information
    FROM [XXXXX].[dbo].[Store_Information];
    

    结果:

    store_name(字段)
    Boston
    Los Angeles
    New York
    San Diego
    
    

    如果SQL语句中为union all ,则全部将两张表的字段值内容,查询出且包括重复的。

     distinct
    查询重复出现的字段值,只显示一次。

    select distinct 字段名1,字段名2 from 表格 order by 字段名1
    

    例如:
    Store_Information 表格

    store_name 	     Sales	  Date 
    Los Angeles 	 $1500	  Jan-05-1999 
    San Diego 	     $250	  Jan-07-1999 
    Los Angeles 	 $300	  Jan-08-1999 
    Boston 	         $700	  Jan-08-1999
    

    执行语句:

    select distinct [store_name] from [XXXXX].[dbo].[Store_Information];
    

    结果:

    store_name  (字段)
    Boston
    Los Angeles
    New York
    San Diego
    
    

     INTERSECT
    作用是将字段值都存在两个 SQL 语句中时,才查询出结果。(相当于取两个SQL 语句的交集)
    语法:
    [SQL 语句 1] INTERSECT [SQL 语句 2]
    限制是两个 SQL 语句查询的字段值(可以为多个字段)内容,必须是同类型的数据。

    SELECT store_name
    FROM [XXXXX].[dbo].[Geography] 
    intersect  
    SELECT 
    Store_Information
    FROM [XXXXX].[dbo].[Store_Information];
    

    结果:

    store_name  (字段)
    Boston
    Los Angeles
    San Diego
    

     MINUS
    只运用在两个 SQL 语句上。执行第一个 SQL 语句所产生的结果,如果存在第二个 SQL 语句的结果中,则会被去除,不显示最后结果中。执行第二个 SQL 语句所产生的结果,如果不存在第一个 SQL 语句所产生的结果内,则会被去除,不显示最后结果中

    Store_Information 表格

    store_name 	    Sales 	Date 
    Los Angeles 	$1500 	Jan-05-1999 
    San Diego    	$250 	Jan-07-1999 
    Los Angeles 	$300 	Jan-08-1999 
    Boston      	$700 	Jan-08-1999
    

    Internet_Sales 表格

    Date 	        Sales 
    Jan-07-1999 	$250 
    Jan-10-1999 	$535 
    Jan-11-1999 	$320 
    Jan-12-1999 	$750 
    

    而我们要知道有哪几天是有店面营业额而没有网络营业额的。要达到这个目的,我们用以下的 SQL 语句:

    SELECT Date FROM Store_Information
    MINUS
    SELECT Date FROM Internet_Sales 
    

    结果:

    Date
    Jan-05-1999
    Jan-08-1999

     子查询
    在一个 SQL 语句中放入另一个 SQL 语句。在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,就有一个子查询 (subquery) 的架构。
    子查询的作用是:1、用来连接表格。2、唯一能够连接两个表格的方式。

    子查询的语法如下:

    SELECT "栏位1" 
    FROM "表格" 
    WHERE "栏位2" [比较运算素] 
    (**SELECT "栏位1" 
    FROM "表格"
    WHERE [条件]**);
    

    其中,[比较运算素]可以为“=, >, <, >=, <=.”,也可以为“like”,及“and”、“or”,**部分表示内查询。

    更多相关内容
  • 向数据库添加记录sql命令是INSERT INTO。(推荐学习:mysql教程)INSERT INTO 语句的语法INSERT INTO 语句可以有两种编写形式,分别是:第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:INSERT INTO...

    5ee9dadc973716e11d6188db7d541dfa.png

    向数据库中添加记录的sql命令是INSERT INTO。

    (推荐学习:mysql教程)

    INSERT INTO 语句的语法

    INSERT INTO 语句可以有两种编写形式,分别是:

    第一种形式

    无需指定要插入数据的列名,只需提供被插入的值即可:INSERT INTO table_name

    VALUES (value1,value2,value3,...);

    第二种形式

    需要指定列名及被插入的值:INSERT INTO table_name (column1,column2,column3,...)

    VALUES (value1,value2,value3,...);

    示例:insert into #tblInsert(Col1, Col2, Col3, Col4) values('张三', 30, 9850.5, 1);

    insert into #tblInsert(Col1, Col2, Col3, Col4) values('李四', 40, 10000, 0);

    insert into #tblInsert(Col1, Col2, Col3, Col4) values('王五', 50, 8753.15, 1);

    展开全文
  • 数据库SQL命令大全

    千次阅读 2021-04-18 13:20:11
    一、关于数据库SQL命令 1.创建数据库 CREATE DATABASE 数据库名称 [ON [FILEGROUP 文件组名称] ( NAME=数据文件逻辑名称, FILENAME='路径+数据文件名', SIZE=数据文件初始大小, MAXSIZE=数据文件最大容量, ...

    一、关于数据库的SQL命令

    1.创建数据库

    CREATE DATABASE  数据库名称
    [ON
    [FILEGROUP  文件组名称]
    (
    NAME=数据文件逻辑名称,
    FILENAME='路径+数据文件名',
    SIZE=数据文件初始大小,
    MAXSIZE=数据文件最大容量,
    FILEGROWTH=数据文件自动增长容量,
    )]
    
    [LOG ON
    (
    NAME=日志文件逻辑名称,
    FILENAME='路径+日志文件名',
    SIZE=日志文件初始大小,
    MAXSIZE=日志文件最大容量,
    FILEGROWTH=日志文件自动增长容量,
    )]
    [COLLATE 数据库校验方式名称]
    [FOR ATTACH]
    

    注释:

    1.用[ ]括起来的语句,可以选用或者不选用.
    2.如果只用 “CREATE DATABASE 数据库名称”,DBMS会默认逻辑名称、文件组大小等属性.

    2.修改数据库

    ALTER DATABASE 数据库名称
    
    //1.向数据库中添加数据文件
    ADD FILE(
             具体文件格式)      
    [TO FILEGROUP 文件组名]
    
    //2.向数据库中添加数据文件
    |ADD LOG FILE(
                  具体文件格式)
                  
    //3.向数据库删除逻辑文件,并删除物理文件
    |REMOVE FILE 文件逻辑名称
    
    //4.指定要修改的文件
    |MODIFY FILE(
                 具体文件格式)
    //5.向数据库中添加文件组
    |ADD FILEGROUP 文件组名
    
    //6.从数据库中删除文件组
    |REMOVE FILEGROUP 文件组名
    
    //7.修改文件组名称,或设置文件组的只读、读写,指定文件组为默认文件组
    |MODIFY FILEGROUP  文件组名
    {
    READ_ONLY|READ_WRITE,
         | DEFAULT,
         | NAME = 新文件组名 }
         
    其中,“具体文件格式”为:
    (
        NAME = 文件逻辑名称
        [,NEWNAME = 新文件逻辑名称]
        [,SIZE = 初始文件大小]
        [,MAXSIZE = 文件最大容量]
        [,FILEGROWTH = 文件自动增长容量]
    )
    
    其中“|”表示单选
    

    3.删除数据库

    DROP DATABASE 数据库名称
    

    4.查询数据库

    4.1用系统存储过程显示数据库结构

    Sp_helpdb [[@dbname=] 'name']
    

    4.2用系统存储过程显示文件信息

    Sp_helpfile [[@filename =] 'name']
    

    4.3用系统存储显示文件组信息

    Sp_helpfilegroup [[@filegroupname =] 'name']
    

    二、数据类型介绍

    1.数值

    在这里插入图片描述

    2.字符串

    在这里插入图片描述

    3.时间日期

    在这里插入图片描述

    4.数据库的字段属性

    4.1

    UnSigned

    无符号的
    声明了该列不能为负数

    4.2

    ZEROFILL

    0填充的
    不足位数的用0来填充 , 如int(3),5则为005

    4.3

    Auto_InCrement

    通常理解为自增,自动在上一条记录的基础上默认+1
    通常用来设计唯一的主键,必须是整数类型
    可定义起始值和步长
    当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表
    SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)

    4.4

    NULL 和 NOT NULL

    默认为NULL , 即没有插入该列的数值
    如果设置为NOT NULL , 则该列必须有值

    4.5

    DEFAULT

    默认的,用于设置默认值

    4.6

    拓展
    在这里插入图片描述

    三、关于数据表的SQL命令

    1.创建数据表

    CREATE TABLE 表名
    (  列名 数据类型 表约束,
       .
       .
       .                       )
       
    例子: 
    CREATE TABLE S
    ( SNO VARCHAR(6),
      SN NVARCHAR(10),
      SEX NCHAR(1) DEFAULT '男', )
    
    

    2.数据表的约束

    2.1 NULL/NOT NULL约束

    NULL值不是0,也不是空白,指“不知道’、”不确定“的意思,
    NOT NULL指不允许出现空值。

    2.2 UNIQUE约束(唯一约束)

    用于指明基本表在某一列或多个列的组合上取值必须唯一

    建立UNIQUE约束时,需要考虑以下几个因素。

    1.使用 UNIQUE约束的字段允许为NULL值,但系统为保证其唯一性,最多只可以出现一个NULL值。
    2.一个表中可以允许有多个 UNIQUE约束
    3.UNIQUE约束用于强制在指定字段上创建一个 UNIQUE索引,缺省为非聚集索引,UNIQUE既可用于列约束,也可用于表约束。

    2.3 PRIMARY KEY 约束(主键约束)

    语法格式:
    CONSTRAINT S_Prim PRIMARY KEY (列约束)
    PRIMARY KEY (表约束)

    PRIMARY KEY 约束用于定义基本表的主键,起唯一标识作用,其值不能为空.

    PRIMARY KEY与 UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别.

    1.在一个基本表中只能定义一个 PRIMARY KEY约束,但可定义多个 UNIQUE约束。
    2.对于指定为 PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现NULL值,而对于 UNIQUE所约束的唯一键,则允许为NULL。
    3.不能为同一个列或一组列,既定义 UNIQUE约束,又定义 PRIMARY KEY约束。

    2.4 FOREIGN KEY 约束(外键约束)

    语法格式:
    NOT NULL FOREIGN KEY REFERENCES 主表名(列名)
    例子:

    例子:
    CREATE TABLE SC
    ( SNO VARCHAR(6) NOT NULL FOREIGN KEY REFERENCES S(SNO),
       CNO VARCHAR(6) NOT NULL FOREIGN KEY REFERENCES C(CNO),
       CONSTRAINT S_C_Prim PRIMARY KEY (SNO,CNO)               )
       
       1.外部键必须是主表中的一个主键值或唯一值,因此才有最后一行SQL命令
       2.其次主键值不能为空,因此有NOT NULL
    

    外键约束作用:

    指定一列或几列作为外部键,包含外部键的表称为从表,
    包含外部键所引用的主键或唯一键称为主表,
    系统保证从表在外部键上的取值值是主表中某一个主键值或唯一键,或者取空值.

    2.5 CHECK约束

    CHECK约束用于检查字段值所允许的范围
    语法格式:
    CHECK (条件)

    例子:
    建立一个SC表,定义 Score的取值范围为0~100之间。
    CREATE TABLE SC
    (  SNO VARCHAR(6)
       CNO VARCHAR(6)
       Score NUMERIC(4, 1)  CHECK (Score>=0 AND Score<=100)   )
    

    建立CHECK约束,需要考虑以下几个因素

    1.一个表中可以定义多个 CHECK约束。
    2.每个字段只能定义一个 CHECK约束。
    3.在多个字段上定义的 CHECK约束必须为表约束。
    4.当执行 INSERT、 UPDATE语句时, CHECK约束将验证数据。

    3.修改数据表

    3.1 ADD方式

    ADD方式用于增加新列和完整性约束

     语法格式:
     ALTER TABLE 表名
     ADD
     列名  数据类型
     ....
     
    

    3.2 ALTER方式

    ALTER方式用于修改某些列

    ALTER TABLE 表名
    ALTER COLUMN
    列名 数据类型
    ....
    

    使用此方式有如下一些限制

    1.不能改变列名
    2.不能将含有空值的列的定义修改为 NOT NULL约束
    3.若列中已有数据,则不能减少该列的宽度,也不能改变其数据类型。
    4.只能修改 NULL/NOT NULL约束其他类型的约束在修改之前必须先将约束删除,然后再新添加修改过的约束定义。

    3.3 DROP方式

    DROP方式只用于删除完整性约束定义

    其语法格式为
    ALTER TABLE<表名>
    DROP CONSTRAINT<约束名>
    
    【例】删除S表中的主键。
    ALTER TABLE S
    DROP CONSTRAINT S Prim
    

    4.删除数据表

    语法格式:
    DROP TABLE 表名
    

    四、关于数据表查询的SQL命令

    1.单关系表的数据查询

    1.1 无条件查询

    语法格式:
    SELECT 列名
    FROM 表名
    
    //1. *表示表的全部列名
    SELECT *
    FORM S
    
    //2. DISTINCT关键字用于消除重复行
    SELECT DISTINCT SNO
    FROM SC
    
    //3. AS 表示别名,输出别名
    SELECT SN AS Name,SNO,AGE
    FROM S
    

    1.2 条件查询

    运算符含义
    =、>、<、>=、<= 、!=、<>比较大小
    AND、OR、NOT多重条件
    BETWEEN AND确定范围
    IN确定集合
    LIKE字符匹配
    IS NULL空值
    语法格式:
    SELECT 列名
    FROM 表名
    WHERE 条件
    

    1.比较大小

    > SELECT SNO,SCORE 
    > FROM SC WHERE CNO='C1'
    

    2.多重条件查询 优先级从高到低:NOT、AND、OR

    :查询工资在1000~1500元之间的教师的教师号、姓名及职称。
    SELECT TNO, TN, Prof
    FROM T
    WHERE Sal BETWEEN 1000 AND 1500
    等价于
    SELECT TNO, TN Prof
    FROM T
    WHERE Sal>=1000 AND Sal<=1500
    

    3.确定集合
    利用"IN"操作可以查询属性值属于指定集合的元组

    【例】查询选修C1或C2的学生的学号、课程号和成绩。
    SELECT SNO, CNo, Score
    FROM SC
    WHERE CNO IN('C1,C2)
    
    此语句也可以使用逻辑运算符“OR”实现。
    SELECT SNO, CNo, Sco
    FROM SC
    WHERE CNO='Cl' OR 'CNo' = C2
    利用“NOTN”可以查询指定集合外的元组。
    
    【例3-30】查询没有选修C1,也没有选修C2的学生的学号、课程号和成绩。
    SELECT SNO, CNo, Score FROM SC
    WHERE CNo NOT IN ('C1,'C2')
    等价于
    SELECT SNO, CNo, Score FROM-SC
    WHERE (CNO <>'C1)AND (CNo<>'C2')
    

    4.部分匹配查询

    语法格式:
    <属性名> LIKE <字符串常量>
    
    通配符实例
    %ab%,’ab‘后可接任意字符串
    _(下划线)‘a_b’,'a’与’b’之间可有一个字符
    [ ][0-9],0~9之间的字符
    [^ ][^0-9],不在0~9之间的字符
     【例3-31】查询所有姓张的教师的教师号和姓名。 查询结果如下 
    SELECT TNO, TN 
    FROM T
    WHERE TN  LIKE'张%'
    
    【例3-32】查询姓名中第二个汉字是“力”的教师号和姓名。 
     SELECT TNO,TN 
     FROM T WHERE TN LIKE’_力%'
    

    6.空值查询
    某个字段没有值称为具有空值(NUL)通常没有为一个列输入值时,该列的值就是空值。

    【例333】查询没有考试成绩的学生的学号和相应的课程号
    SELECT SNO,CNO
    FROM SC
    WHERE SCORE IS NULL
    

    1.3常用库函数及统计查询

    函数功能
    AVG按列计算平均值
    SUM按列计算值的总和
    MAX求一列中的最大值
    MIN求一列中的最小值
    COUNT按列值统计个数
    【例】求学号为S1的学生的总分和平均分。
    SELECT SUM(Score) As TotalScore, AVG(Score) As AvgScore
    FROM SC
    WHERE (SNO =S1)
    

    上述查询语句中AS后面的 TotalScore和 AvgScore是别名,
    别名会显示在查询结果中.
    让使用实例者能清楚地知道查询内容所表示的含义,
    结果中就不显示列名.

    注意:在使用库函数进行查询时,通常要给查询的每一项内容加别名,
    否则查询结果就不会显示列名.

    【例3-35】求选修C1号课程的最高分、最低分及之间相差的分数。
    SELECT MAX (Score) AS MaxScore,MIN (Score) AS MinScore,
    MAX(Score)- MIN(Score) AS Diff
    FROM SC
    WHERE (CNO ='C1')
    
    【例3-36】求计算机系学生的总数。
    SELECT COUNT( SNO) FROM S
    WHERE Dept='计算机'
    
    【例3-37】求学校中共有多少个系
    SELECT COUNT (DISTINCT Dept) As DeptNum
    FROM S
    
    //注加入关键字 DISTINCT后表示消去重复行,
    //可计算字段“Dept”不同值的数目。COUNT(*)来统计元组个数.
    

    1.4分组查询

    1.4.1 GROUP BY子句

    GROUP BY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值。

    【例3-40】查询每个教师的教师号及其任课的门数。
    SELECT TNO, COUNT(*)AS C_Num
    FROM TC
    GROUP BY TNo
    
    GROUP BY子句按TNo的值分组,
    所有具有相同TNo的元组为一组,
    对每一组使用函数COUNT进行计算,
    统计出各位教师任课的门数。
    

    1.4.2 HAVING子句

    若在GROUP BY子句分组后还要按照一定的条件进行筛选,
    则需使用 HAVING子句。

    【例3-41】查询选修两门以上(含两门)课程的学生的学号和选课门数。
    表的连接方法
    SELECT SNO, COUNT(*) AS SC_Num
    FROM SC
    GROUP BY SNO
    HAVING  ( COUNT(*)>=2 )
    
    GROUP BY子句按SNo的值分组,
    所有具有相同SNo的元组为一组,
    对每一组使用函数 COUNT进行计算,
    统计出每个学生选课的门数。 
    HAVING子句去掉不满足 COUNT(*)>=2的组。
    

    注意:

    一、.当在一个SQL查询中同时使用 WHERE子句, GROUP BY子句和 HAVING子句时,其顺序是WHERE、 GROUP BY、HAVING。

    二、WHERE与 HAVING子句的根本区别在于作用对象不同。

    1.WHERE句作用于基本表或视图,从中选择满足条件的元组;
    2.HAVING子句而作用于组,选择满足条件的组,必须用在 GROUP BY子句之后,但GROUP BY子句可没有 HAVING子句

    1.5查询结果的排序

    1.5.1 结果排序 ORDER BY子句

    当需要对查询结果排序时,应该使用 ORDER BY子句, ORDER BY Y子句必须出现在其他子句之后。

    排序方式可以指定,DESC为降序,ASC为升序,缺省时为序案犬认人

    展开全文
  • 数据库MySQL——SQL语句(命令

    千次阅读 2021-01-20 00:01:49
    SQL语句分类DCL (Data Control Language):数据控制语言;用来管理用户及权限DDL(Data Definition Language):数据...用来定义数据库记录(数据)DQL(Data Query Language):数据查询语言;用来查询数据;难命令分类...

    SQL语句分类

    DCL (Data Control Language):数据控制语言;用来管理用户及权限

    DDL(Data Definition Language):数据定义语言;用来定义数据库对象:库,表,列等

    DML(Data Manipulation Language):数据操作语言;用来定义数据库记录(数据)

    DQL(Data Query Language):数据查询语言;用来查询数据;难

    命令分类不一定准确,没必要分得太准确!

    DCL

    259653845b6a7f409bc9ddf86ea80a45.png

    /usr/bin/mysqladmin -uroot password 123456 #给数据库设置密码

    chkconfig mysqld on #设置MySQL自启动

    mysql_secure_installation #初始化数据库

    select version(); #查看数据库版本

    SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword'); #更改某一用户密码

    select Host,User,Password from mysql.user; #查看用户信息

    grant 权限 on 库名.表 to 用户@主机 identified by '密码'; #给用户加权限和密码

    grant all privileges on *.* to root@'%' identified by '123456'; #给root用户在所有主机上的所有权限(用于第三方登录数据库)

    show grants for user250@localhost; #查看250用户的权限

    revoke all on *.* from user250@localhost; #回收250用户在localhost主机上的所有权限

    show variables ; #查看服务器配置变量

    show variables like '%engine%'; #查看存储引擎

    show status; #查看服务器状态

    DDL

    show databases; #查看所有数据库

    create database DBNAME; #创建数据库

    drop database DBNAME; #删除数据库

    use DBNAME; #使用(进入)某一数据库

    show create database DBNAME; #查看数据库状态

    alter database DBNAME default character set=utf8; #修改指定数据库的字符编码

    show tables; #查看所有表

    desc TABLENAME; #查看表结构

    alter table huluwa rename to xiaoairen; #给葫芦娃表改名为小矮人表

    alter table huluwa add color varchar(10); #给表添加字段

    alter table huluwa modify name varchar(20); #修改表字段(不重新命名)

    alter table 表名 change 原名 新名 类型及约束; #修改表的字段

    alter table huluwa drop color; #删除表的字段

    drop table huluwa; #删除表

    alter table huluwa add primary key(sid); #设定sid字段为huluwa表的主键

    alter table huluwa drop primary key; #删除主键

    alter table huluwa add constraint fk_huluwa_school foreign key(cla_id) references school(id); #给huluwa表添加外键cla_id关联到school表的id列

    alter table huluwa drop foreign key fk_huluwa_school; #删除外键fk;外键的名字叫fk_huluwa_school

    创建表

    create table huluwa (

    -> id int unsigned auto_increment primary key,

    -> name varchar(10),

    -> age tinyint unsigned,

    -> high decimal(5,2),

    -> gender enum('boy','girl','unknow')default 'unknow',

    -> lost bit(1));

    数据类型:

    常用数据类型

    整数型:int,bit

    小数型:decimal #decimal(5,2)

    字符串:varchar,char

    时间:date,time,datetime

    枚举类型:enum

    数值类型常用

    类型

    字节大小

    有符号范围(signed)

    无符号范围(unsigned)

    tinyint

    1

    -128~127

    0~255

    smallint

    2

    -32768~32767

    0~65535

    mediumint

    3

    -8388608~8388607

    0~16777215

    int/integer

    4

    -2147483648~2147483647

    0~4294967295

    bigint

    8

    -9223372036854775808~

    9223372036854775807

    0~18446744073709551615

    字符串

    类型

    字节大小

    示例

    char

    0~255

    不能伸缩(定多少我就取多少)

    varchar

    0~255

    可以伸缩(要浪费一个字节指定字符长度)

    text

    0~65535

    大文本

    日期时间类型

    类型

    字节大小

    示例

    date

    4

    '2019-01-01'

    time

    3

    '12:30:30'

    datetime

    8

    '2019-01-01 12:30:30'

    timestamp

    4

    '1970-01-01 00:00:01'UTC~'2038-01-01 00:00:01'UTC

    约束

    primary key:主键约束(唯一标识)

    auto_increment:自增长

    not null:不为空

    unique:字段不重复

    default:默认

    foreign key:外键,对关系字段进行约束,当关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。

    constraint fk_huluwa_school foreign key(cla_id) references school(id) : 外键约束例子

    DML

    insert into 表名 values (...); #插入数据

    insert into 表名 valuse (...),(...),...; #多条插入数据

    insert into 表名(字段) valuse(...); #部分插入(无数据为null)

    update 表名 set 列=值... where 过滤条件; #修改数据

    update huluwa set age=age+1 where name in('大娃','二娃'); #数据修改支持四则运算

    update huluwa set age=age+1 where name in('大娃','二娃'); #条件选择支持in语法

    delete from 表名 where 条件; #删除(delete / truncate)

    DQL

    单表查询

    select * from TABLENAME; #查询表中所有数据

    select distinct age from huluwa; #distinct 查询取消重复行

    select * from huluwa where lost='yes'; #条件查询

    select * from huluwa where age between 3 and 6; #条件查询之between

    select * from huluwa where not (age > 3 and age < 6); #条件查询之not和运算符

    select * from huluwa where age > 3 and lost='no'; #条件查询之and和or

    select * from huluwa where name like '%aaa%'; #条件查询之模糊查询like %可以代表0到多个字符

    select * from huluwa where name like '____'; #条件查询之模糊查询like _可以代表一个字符

    select * from huluwa where high is not null; #判断是否为空 is null 或 is not null

    select * from huluwa order by high desc; #查询并排序order desc降序 asc升序

    select * from huluwa order by high desc,rade asc; #先desc降序,high列相同看rade列,asc升序

    select *,age*1.5 from huluwa ; #数字类型的列可以进行四则运算,无法转换为数字的以0计算

    select *,'基本工资'+ifnull('奖金',0) as '工资' from huluwa ; #四则运算也支持ifnull语句以处理null值

    select CONCAT('我叫','name',',我是','job') as 描述 from huluwa ; #CONCAT连接字符串 (起别名as可以省略)

    聚合函数

    select count(*) from huluwa #查询有效行数

    select max(high) from huluwa #查询最大

    select min(high) from huluwa #查询最小

    select sum(high) from huluwa #计算总和

    select round(avg(high),2) from huluwa; #求平均值 round保留2位小数

    分组查询 group by(分组后只能查询组信息,不能查询个人信息)

    select 分组列 ,... from 表名 group by 分组列; #基本语法

    select gender from huluwa group by gender; #按性别分组

    select gender,group_concat(name) from huluwa group by gender; #按性别分组,并列出所有组员某字段的值

    select gender,count(*) from huluwa group by gender; #按性别分组,并查询组人数

    select gender,count(*) from huluwa where age > 18 group by gender; #先过滤出年龄大于18的,再按性别分组,并查询组人数

    select gender,count(*) from huluwa where age > 18 group by gender having count(*) >= 2; #having 后置条件 ;最后过滤出组人数大于等于2的组

    limit 分页查询 (方言)

    select * from huluwa limit 4,2; #查询第四行后面的两行(即:第五行和第六行)信息

    union 合并结果集(一模一样的两张表;union all不去重;union 去重)

    select * from a1 union select * from a2;

    连接查询

    select * from table1 ,table2 where table1.id = table2.eid; #笛卡尔积查询 (方言)

    select * from table1 inner join table2 on table1.id = table2.eid; #内连接(标准)

    select * from heros as movie inner join heros as human on movie.aid=human.pid having movie.name='动画片'; #having后置条件

    select * from huluwa left join school on school.cla_id=huluwa.cla_id; #左关联

    select huluwa.name , ifnull(school.cla_id , '代建') from huluwa left join school on school.cla_id=huluwa.cla_id; #左关联+ifnull

    # left join (左联接) 返回包括左表中的所有记录和右表中关联字段相等的记录

    # right join (右联接) 返回包括右表中的所有记录和左表中关联字段相等的记录

    # inner join (内关联) 只返回两个表中关联字段相等的行

    #通过合并结果集union加左右关联实现全外连接,实现显示所有行;

    select * from huluwa left join school on school.cla_id=huluwa.cla_id union select * from huluwa right join school on school.cla_id=huluwa.cla_id;

    子查询

    select * from huluwa where grade = (select max(grade) from huluwa); #查询套查询即子查询---子查询作为条件

    select sanban.name , sanban.grade from (select * from huluwa where cla_id = 3;) sanban #子查询作为一张表 起别名as可以省略

    #子查询应用总结---作为条件

    #单行单列----可以使用[= , > , < , >= , <= , != ]

    select * from huluwa where grade = (select max(grade) from huluwa); #查询最高分同学的信息

    #多行单列----可以使用[IN ALL ANY](in代表在其中;any表示任意;all表示所有)

    select * from ultraman where grade > all (select grade from huluwa); #查询比所有葫芦娃成绩都高的奥特曼的信息

    #

    展开全文
  • 易语言连接sql数据库_记录集连接sql

    千次阅读 2021-02-12 05:56:38
    易语言如何连接网站上sql数据库?_突袭网-提供600x239 - 25KB - JPEG易语言网络验证外加连接\/界面修改简单修改\/IIS790x575 - 94KB - JPEGplsql和navicat连接远程oracle(易错点) - 花开易932x341 - 42KB - PNG发表了...
  • 利用SQL语句创建数据库

    万次阅读 2022-04-08 15:07:14
    创建数据库(Database) create database 数据库名; 创建Table create table 表名(列名 数据类型 【Primary key| Unique】【Not null】 【,列名 数据类型 【Not null】,...】); "【】"表示其括起的内容...
  • 数据库(基础SQL)

    千次阅读 2021-11-24 16:56:21
    适用于初学数据库的童鞋阅读 1.数据库的基本知识 2.MySQL的指令及查询语句 3.MySQL的函数
  • SQL Server创建数据库

    千次阅读 2022-05-18 15:44:39
    Create Database语句用于创建数据库。 语法: Create Database database_name; 接下来创建一个名称为“MyDatabase”的数据库: 2.Create Table语句: Create Table语句用于创建数据库中的表。 表用于在...
  • MySQL创建数据库并插入数据命令

    千次阅读 2021-02-08 11:13:10
    简介:学习mysql环境为ubantu,下面记录一些基本的创建数据库和插入数据的口令学习资源来自实验楼:https://www.shiyanlou.com/courses/9打开MySQL 服务并使用 root 登录:#打开 MySQL 服务sudo service mysql start...
  • 前言 在下面所有的讲解中,我将会以基本语法,案例,...MYSQL 最重要的命令 SELECT 从数据库中提取数据 UPDATE 更新数据库中的数据 DELETE 从数据库中删除数据 INSERT INTO 将新数据插入数据库 CREATE DATABASE 创建
  • SQL数据库

    千次阅读 2021-11-21 23:06:36
    SQL简介
  • SQL 数据库基本操作

    千次阅读 2022-03-02 20:36:10
    SQL 数据库基本操作
  • 易语言教程数据库写和添加记录

    千次阅读 2020-07-06 09:17:39
    添加记录 (1)手动添加 (2)代码添加 使用代码添加和修改记录,主要有以下几个命令: “加空记录()”,可以在当前数据库记录的尾部添加一条空记录。 “加记录()”,在添加空记录时,可以同时提供欲添加的数据...
  • 数据库——T-SQL方式创建数据库

    千次阅读 2022-02-25 21:50:52
    提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面...
  • 数据库常用的sql语句大全--sql

    千次阅读 2022-04-02 15:38:53
    sql语句的命令不区分大小写,但储存的数据是区分大小写的。在这里我们统一使用英文小写进行命令编辑。如果喜欢大写的可以使用IDE编辑器的一键美化功能,可以统一转化为大写。并且会对你的sql语句进行美化,例如自动...
  • VC++使用ADO进行数据库操作实例收集,包含: ... 如何使用ADO打开、关闭记录集  如何使用ADO打开、关闭数据库连接  如何使用ADO在数据库中操作长二进制数据  如何使用ADO在数据库中查找... 如何使用ADO执行SQL命令
  • SQL中的查询命令

    千次阅读 2022-01-11 09:58:04
    sql命令是不区分大小写的) show databases; 列出服务器管理的数据库 第二个命令:(数据库名必须是唯一) use +数据库名 ;进入到哪个数据库中 第三个命令: show tables; 显示该数据库中所有的表 ...
  • SQL Server 数据库之视图

    千次阅读 2022-03-17 17:07:08
    MySQL 数据库之视图 视图的增删查改操作介绍
  • SQL Server 数据库的插入、 修改、删除
  • 学习内容、sql命令创建、修改、删除表 创建表 指定所属文件组 修改表 增加一列number 更改列属性 删除某一列 重命名表 删除表 分区表 创建表 添加文件组 分别为其添加数据文件 创建分区函数 创建分区...
  • SQL Server 数据库之索引

    千次阅读 2022-03-20 18:00:13
    MySQL 数据库的索引1.... 创建与删除索引4.1 用 SQL 命令创建索引4.2 用 SSMS 创建索引4.3 用 SQL 命令删除索引4.4 用 SSMS 删除索引5. 修改和查看索引5.1 用 SQL 命令修改索引 1. 索引介绍 视图 的存在简化了
  • SQL sever创建数据库数据表

    千次阅读 多人点赞 2021-08-06 21:48:17
    掌握在SQL Server中使用对象资源管理器和SQL命令创建数据库与修改数据库的方法。 掌握在SQL Server中使用对象资源管理器或者SQL命令创建数据表和修改数据表的方法(以SQL命令为重点)。 二、环境概述: SQL Server...
  • 如何彻底修改SQL server的数据库

    千次阅读 2020-10-20 20:56:59
    公司自有的云服务器上的SQL server数据库里,建立了不少项目的数据库,最近需要把一个项目的最新版本代码同步到服务器上,发现本地使用的数据库名,在云服务器上已经存在了,且被用于开发其他项目的demo,为了保证...
  • 创建SQL数据库表以及添加约束

    千次阅读 2020-11-15 01:04:23
    每张表中只能建立一个主键约束,主键字段中的记录在表中具有唯一性,数据库查询到记录后不再使用遍历查询的方式继续查询数据。定义主键约束的字段,会将所有记录写入内存中,建立主键索引。记录不能为空。 primary ...
  • SQL数据库的安装

    千次阅读 2021-08-17 10:06:56
    初见数据库-安装SQLSQL数据库的安装第0章:环境搭建本章重点:1. MySQL 8.0 的安装1.1 windows 下 MySQL 8.0 的下载安装1.1.1 下载1.1.2 安装1.2 Linux 下 MySQL 8.0 的下载安装1.2.1 安装步骤:1.2.2 MySQL 数据库...
  • SQL server2016 数据库 基础知识

    千次阅读 2020-12-15 22:24:13
    SQL Server基础知识 SQL Server服务的启动方式: 1、SQL配置管理器(C:\Windows\SysWOW64) 2、控制面板----管理工具-----服务----SQL Server服务 3、我的电脑----管理----服务----SQL Server服务 4、我的电脑----...
  • SQL中delete命令和truncate命令都可用于删除数据(记录) delete、truncate、drop命令之间的区别 delete truncate drop 命令类型 数据操作语言(DML)命令,删除的数据将存储在系统回滚段中,...
  • SQL数据库操作命令大全

    万次阅读 多人点赞 2017-11-16 16:05:50
    SQL数据库操作命令大全

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 188,825
精华内容 75,530
热门标签
关键字:

向数据库添加记录的sql命令