SQL语句总结

目录

数据库语句

DDL语句:数据库定义语言(创建数据库,表,列)

 数据库:

1.数据库的创建                     

2.数据库的删除                    

3.显示所有数据库                  

4.使用特定的数据库               

5.查看当前数据库的名称        

表:

1.创建表

2.查询本数据库内所有表

3.查询特定的表(表的结构)

4.修改表

DML语句:数据库操作语言(表的增删改)

1.添加数据

2.删除数据

3.更新数据

DQL语句:数据库查询语言(表的查询)

1.单表查询

实例:

 2.约束条件

3.多表查询

DCL语句:数据库控制语言(定义数据库访问权限和安全级别,创建用户)

事务:事务会把所有命令作为一个整体提交或撤销

事务的四个特性:


数据库语句

DDL语句:数据库定义语言(创建数据库,表,列)

 数据库:

1.数据库的创建                     

Create  Databace if  not exists 数据库名;

2.数据库的删除                    

Drop Database if exists  数据库名;

3.显示所有数据库                  

Show Databases;

4.使用特定的数据库               

Use  数据库名;

5.查看当前数据库的名称        

Select  Database();

表:

1.创建表

Create  Table  表名 (

列名1    类型,

列名2    类型,

列名3    类型

);

注:最后一列不需要加,

2.查询本数据库内所有表

Show Tables;

3.查询特定的表(表的结构)

Desc  表名;

4.修改表

Alter Table 表名  Rename to  新的表名;    ----------修改表名

Alter Table 表名  Add   新列名   新数据类型;    ----------添加新的列

Alter Table 表名  Modify 列名  新数据类型;  ----------修改列的数据类型

Alter Table 表名  Change  列名  新列名  新数据类型;-----------修改列名和数据类型

Alter Table 表名 Drop  列名;    -------------删除列

DML语句:数据库操作语言(表的增删改)

1.添加数据

1.给指定列添加数据

Insert  into  表名(列名1,列名2……)  Values (值1,值2……);

2.给全部列添加数据

Insert  into  表名  Values (值1,值2……);

3.批量添加数据

Insert  into  表名  Values (值1,值2……),(值1,值2……),(值1,值2……);

2.删除数据

Delete  From 表名 Where 条件;

3.更新数据

Update  表名 set 列名=值1,列名=值2  Where  条件;

DQL语句:数据库查询语言(表的查询)

1.单表查询

Select  列名 From  表名  Where 条件列表  Group By  分组字段  Having 分组后条件 Order By 

排序字段  Limit  分页限定 ;

实例:

1>去除重复性字段

 Select Distinct address From stu ;

2> 给列名取别名

Select name,math As 数学成绩,english As 英语成绩 From stu;

注意:As 可以不写,但是列名和别名之间需要存在至少一个空格。

 3>条件查询表

 Q1.查询年龄大于20岁的学员信息
select * from stu where age > 20;


Q2.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
select * from stu where age >= 20 &&  age <= 30;
select * from stu where age >= 20 and  age <= 30;

select * from stu where age BETWEEN 20 and 30;

Q3.查询入学日期在'1998-09-01' 到 '1999-09-01'  之间的学员信息

select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';

Q4. 查询年龄不等于18岁的学员信息
select * from stu where age != 18;

select * from stu where age <> 18;

Q5. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息
select * from stu where age = 18 or age = 20 or age = 22;
select * from stu where age in (18,20 ,22);

Q6. 查询英语成绩为 null的学员信息  
注意: null值的比较不能使用 = != 。需要使用 is  is not
 
select * from stu where english = null;      错误的

select * from stu where english is null;

select * from stu where english is not null;


4>模糊查询 like
    通配符:
     (1)_:代表单个任意字符
     (2)%:代表任意个数字符

Q1. 查询姓'马'的学员信息

select * from stu where name like '马%';

Q2. 查询第二个字是'花'的学员信息   

select * from stu where name like '_花%';

Q3. 查询名字中包含 '德' 的学员信息

select * from stu where name like '%德%';

5>排序查询
SELECT 字段列表 FROM 表名  ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
         排序方式:
                 1.ASC:升序排列(默认值)
                 2.DESC:降序排列

 Q1.查询学生信息,按照年龄升序排列 

select * from stu order by age asc ;

select * from stu order by age ;(默认)

Q2.查询学生信息,按照数学成绩降序排列

select * from stu order by math desc ;

Q3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列

select * from stu order by math desc , english asc ;

注意:如果存在多个排序条件,只有前边排序的值一样,才会按照第二个排序方式排序

 6>聚合函数

 注意:NULL值不参与聚合函数运算

7>分组查询

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

Q1. 查询男同学和女同学各自的数学平均分

select sex, avg(math) from stu group by sex;

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
select name, sex, avg(math) from stu group by sex;

Q2. 查询男同学和女同学各自的数学平均分,以及各自人数

select sex, avg(math),count(*) from stu group by sex;

Q3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组

select sex, avg(math),count(*) from stu where math > 70 group by sex;

 

Q4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。

select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*)  > 2;

 8>分页查询

SELECT  字段列表  FROM 表名  LIMIT   起始索引 , 查询条目数
                * 起始索引:从0开始

                 *起始索引 = (当前页码 - 1) * 每页显示的条数
 

Q1. 每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;          起始索引 = (1 - 1) * 3=0


Q2. 每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;                起始索引 = (2 - 1) * 3=3


Q3. 每页显示3条数据,查询第3页数据

select * from stu limit 6 , 3;                 起始索引 = (3 - 1) * 3=6

 2.约束条件

-- 创建一个员工表
Create table emp (

id int PRIMARY KEY auto_increment, -- 主键且自增长
name VARCHAR(10) NOT NULL UNIQUE,-- 非空且唯一
joinDate  date not null, -- 入职日期,非空
salary DOUBLE(7,2) not null,-- 工资,非空   
bonus  DOUBLE(7,2) DEFAULT 0 -- 奖金,没有默认为0

);

1>自增长,要求列为数字且唯一,当不给id赋值或者赋值为空的时候,都会自增。

2>外键约束  CONSTRAINT 【外键名--[fk_主表_从表(一般)]】 foreign key  (从表列名)

references  主表(列名);

注意:

1.加在创建表(从表)最后一行

2.可以使用Alter  Table 表名  ADD CONSTRAINT 【外键名--[fk_主表_从表(一般)]】 foreign key  (从表列名)  references  主表(列名);

3.删除外键   Alter Table 表名  Drop foreign key  外键名;

3.多表查询

1>给表起别名:

SELECT  别名1.name  ,别名2.name  From  表名1  别名1,表名2 别名2 Where 条件;

2>显式内连接   select * from 表1 jion 表2 on 条件;

3>隐式内连接    select * from 表1 , 表2 Where 条件;

4>左外连接   select 字段 from 表 1 left join 表2 on 条件;

5>右外连接      select 字段 from 表 1 right join 表2 on 条件;

6>子查询  

DCL语句:数据库控制语言(定义数据库访问权限和安全级别,创建用户)

事务:事务会把所有命令作为一个整体提交或撤销

开启事务    Start  transaction   | begin

提交事务  commit

回滚事务   Rollback

演示:张三给李四转账500元

正常情况:

错误情况: 

此时表中的数据显示错误,并且已经永久修改

演示开启事务:

 

 可以看到运行后查询,张三结果改变,但是在新窗口查询结果没有改变

回滚事务:此时运行选中部分,可以将临时修改的数据恢复原样。

 

 事务正常情况:事务开启后运行正确需要提交才可以永久改变数据库中数据

注:以上命令用于mysql中,开启事务后,要进行事务提交,不然数据只会暂时性更改。

事务的四个特性:

原子性:事物是不可分割的,最小操作单位,要么同时成功,要么同时失败。

一致性:事务完成时必须使所有的数据都保持一致状态。

隔离性:并发环境中,并发的事务是互相隔离的,一个事务的执行不能被其它事务干扰。也就是说,不同的事务并发操作相同的数据时,每个事务都有各自完整的数据空间。

持久性:事物一旦提交或回滚,它对数据库中的数据的改变是永久的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值