SQL基础语法

简介: SQL基础语法

一.DDL: 操作表


       1.创建表(create)

       create table users(


       );


       2.查询表(Retrieve)

       desc 查询表结构


       3.数据类型

       double(总长度,小数点后保留的位数)

       varchar(20)        存储性能低   变长   节约空间

       char()定长字符串    存储性能高   定长   浪费空间


       4.删除表 drop table 表名

       drop table if exists 表名


       5.修改表   alter table 表名+

       修改表名

       alter table 表名 rename to 新表名;

       添加一列

       add  table  表名 add 列名 数据类型;

       修改数据类型

       alter table 表名 modify 列名 新数据类型;

       修改列名和数据类型

       alter table 表名 change 列名 新列名 新数据类型;

       删除列

       alter table 表名 drop 列名;


二.DML :  对表中数据进行增删改


       1.添加数据

       给指定列添加数据:

       insert into 表名 (列名1,列名2)values(值1,值2);

       给所有列添加数据

       insert into 表名 values();


       2.修改数据   update 表名 set 列名1=值1 [where 条件]

        注意:修改语句中如果不加条件,则将所有数据都修改


       3.删除数据

       delete from 表名


三.DQL: 查询数据


                                                                       基础查询


       1.查询多个字段

       select 字段列表 from 表名;

       select * from 表名; 尽量自己写字段表名


        2.去掉重复记录

       select distinct 字段列表 from 表名;


        3.取别名

       AS    as可省略


                                        条件查询语法

       1.&& 并且         在SQL中建议使用and

       between  20 and 30   在20-30


       2.等于 =    不等于 != 或<>


       3.或者 or   ||   in(18,20)


       4.null值的比较,不能使用=,!=,需要使用 is is not

       is null         is not null


       5.like 模糊查询

       通配符 : _ 代表单个字符        %代表任意个数字符



                       排序查询:   order by  排序字段名1   [排序方式1],[排序方式2]

       默认asc 升序   desc 降序

       多个排序条件 : 只有第一个排序条件相同时,才会根据第二个排序


                                 分组查询:      group by


       聚合函数:将一列数据作为一个整体,进行纵向计算  (null不参与聚合函数的运算)

               count(列名)  

           count 统计的列名不能为null

           取值:1.主键 2.*

       max(列名)

       min(列名)

       sum(列名)

       avg(列名)


       分组后,查询字段要么是分组字段,要么是聚合函数,查询其它字段没有意义

       where 不能对聚合函数进行判断,having可以


       where在分组前使用   having在分组后使用

       执行顺序: where>聚合函数>having


                                    分页查询  limit


       limit 起始索引,查询条目数

       1.从0开始查询,查询3条数据

       select * from stu limit 0,3

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

       select * from stu limit 0,3

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

       select * from stu limit 3,3    

       起始索引公式:(当前页码-1)*每页的条数


                                         约束


约束的概念和分类

1.概念:

   约束是作用于表中列上的规则,用于限制加入表的数据

   约束的存在保证了数据库中数据的正确性,有效性和完整性

2.约束的分类

非空约束 ( 保证列中所有数据不能有null值 )            not null            

唯一约束 ( 保证列中所有数据各不相同 )             unique

主键约束 ( 主键是一行数据的唯一标识,要求非空且唯一 )   primary key      

检查约束 ( 保证列中的值满足某一条件 )            check

默认约束 ( 保存数据时,未指定值则采用默认值0)    default

外键约束 ( 外键用来让两个表的数据之间建立连接,保证数据的统一性和完整性)  foreign key

注:MySQL不支持检查约束

非空且唯一 : not null unique

自增长 : auto_increment   当列是数字类型,并且唯一约束

外键约束: foreign key (外键列名)   references 主表(主表列名)


表关系之一对多(多对一)

如:一个部门对应多个员工,多个员工对应一个部门

实现方式:在多的一方建立外键,指向一的一方的主键


表关系之多对多

如: 一个商品对应多个订单,一个订单包含多个商品

实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键


表关系之一对一

   如:用户 和 用户详情

一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询性能

实现方式: 在任意一方加入外键,关联另一方主键,并且设置外键为唯一


                                   多表查询


内连接:    查询两张表的交集

隐式内连接:

select * from user ,emp where user.id=emp.id;

显示内连接:

select * from user join emp on user.id=emp.id;


外连接:    

左外连接:相当于查询A表所有数据和交集部分数据

select * from A left join B on user.id=emp.id;

右外连接:相当于查询B表所有数据和交集部分数据

select * from B left join A on user.id=emp.id;


                                        子查询:


       1.子查询根据查询结果不同,作用不同:



                   单行单列:    作为条件值,使用 = != > < 等进行条件判断

       select 字段列表 from 表 where 字段名 =(子查询)


                   多行单列: 作为条件值,使用in等关键字进行条件判断

               select 字段列表 from 表 where 字段名 in (子查询)


                   多行多列: 作为虚拟表

select 字段列表 from (子查询)  where 条件;


目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
2月前
|
SQL PHP
thinkphp之进阶sql语法,持续更新
thinkphp之进阶sql语法,持续更新
19 0
|
12天前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
16 5
|
21天前
|
SQL 关系型数据库 数据库
sql语法
【7月更文挑战第30天】sql语法
27 12
|
1月前
|
SQL Java 数据库连接
mybatis动态SQL常用语法总结
MyBatis 使用 OGNL 表达式语言处理动态SQL,如 `if` 标签进行条件判断,`choose`、`when`、`otherwise` 实现多条件选择,`where`、`set` 管理SQL关键字,`trim` 提供通用修剪功能,`foreach` 遍历集合数据。`sql` 和 `include` 用于代码重用,`selectKey` 处理插入后的返回值。参数传递支持匿名、具名、列表、Map、Java Bean和JSON方式。注意SQL转义及使用合适的jdbcType映射Java类型。
50 7
|
20天前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到SQL语法错误,该如何排查
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
1月前
|
SQL 数据库 索引
SQL SELECT语句的语法与查询优化技巧
SQL SELECT语句的语法与查询优化技巧
|
2月前
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用合集之sql代码中支持插入jinja语法语句吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
1月前
|
SQL 数据库 索引
SQL SELECT语句的语法与查询优化技巧
SQL SELECT语句的语法与查询优化技巧
|
3月前
|
SQL 关系型数据库 数据库
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
100 9
SQL Server语法基础:入门到精通