sql语法、关系建模

简介: sql 数据类型  好处更多的数据存储方案 存储更加灵活 数值:int(11)             bigint(20) 大数据类型相当于Java的long类型           decimal(浮点数据类型) 可以定义大小与保留后几位小数 decimal(20,3)        字符类型.

sql 数据类型 好处更多的数据存储方案 存储更加灵活

     
数值:int(11)

               bigint(20) 大数据类型相当于Java的long类型

               decimal(浮点数据类型) 可以定义大小与保留后几位小数 decimal(20,3)

26.gif


字符类型:char(10)

                varchar(3000)最常用字符类型 一定要定义大小

               text 超文本类型 可以存储文本 不建议使用 不好优化、 数据太大不建议存储到数据库当中

26.gif


时间:datetime 最常用数据类型 包括年月日时分秒

          date、time、year

26.gif


其他:enum 枚举 bit(0和1) boolean(true、fales)

26.gif


创建数据命令:drop database 数据库名称;

创建数据库表命令:CREATE TABLE 名称(列说明,列说明,列说明)

      列名

      数据类型

      属性: not null (不能为空)

                 null (为空)

                 default (默认值)

                 primary key (主键)

                 AUTO_INCREMENT 自动增长 缺点需要排队执行效率提不上去


一张表需要有一个主键:好处方便检索,检索速度快、因为主键具有唯一性

26.gif


INSERT(插入数据)

                          语法 INSERT INTO 表[(列名,列名)] VALUES(值,值,值,值)

                           INSERT INTO student VALUES(1,'张三','北京海淀区')

26.gif


UPDATE(修改数据)

                   注意事项:所有的修改中的条件判断、与修改 都是用sql修改

                  不要用逻辑将对象查出来 拿这对象修改、因为存在万一数据库有人修改、那你的数据还是没改的数据


                   语法:UPDATE 表 SET 列=值,列=值,列=值 条件 

                   UPDATE user2 SET uid=uid+100 where uid>10

26.gif


条件WHERE:

                     行级操作的,它每操作一行都会询问你,是否允许操作(= > < >= <=,<> != 这个两个都是不等于 )

                     AND OR NOT 的的意思 意思两个条件必须都满足

                     UPDATE USER2 SET USERNAME='小萝卜头' WHERE uid>=950 AND uid <960 AND username!='a'

26.gif


select查询:

                   select [列名 可以有多个列] from [表名] where [查询条件 可以有多个条件]

26.gif


分页查询: 数据大了不可能全部读取上来只能选择读上来一部分

                  SELECT * FROM user2 LIMIT 0,5

                   LIMIT 分页关键字 第一个参数从第几行开始、第二个参数每次读几行

26.gif


排序查询:

                order by 排序关键字  这个要注意 要在where 后面写、再在limit前面 写在分页前面 

                DESC 降序 从打到小   ASC 升序(在关键后面写) 、order by desc(这句话的意思是:排序按照降序)  

                select*from stu where sname='小明' order by uid DESC limit 0,5  uid(按照哪一个列进行排序,这里是按照uid查询 条件自定选择)

26.gif


 聚合函数:(可以帮我们做一些运算、帮助我们的开发)

                count  统计总行数

                     select count(*) from stu; 统计这个表共有多少行

                     select count(sid) from stu; 统计下sid这个行共有多少个

                     select count(*) from stu where mm>=15;  查询这个表 将满足这个条件的列 统计下共有多好行

              

                avg  数值列  统计这个列的平均值     SELECT AVG(uid) FROM user2

                sum  数值列 统计这个列的总和        SELECT SUM(uid) FROM user2

                max  数值列 找到这个列中的最大值 SELECT MAX(uid) FROM user2

                min  数值列 找到这个列中的最小值  SELECT MIN(uid) FROM user2

26.gif


 分组查询:

                GROUP BY  把相同的列在一组 、再查看列的时候只能写分组的那个列、聚合函数与分组在一起只是统计这一组的数据

                SELECT xiangmu FROM cba GROUP BY xiangmu ; \\将 xiangmu有关的列合并起来

                SELECT address FROM student GROUP BY address ; \\将 address有关的列合并起来

                SELECT xiangmu,COUNT(*) FROM cba WHERE duiwu='新疆' GROUP BY xiangmu ORDER BY COUNT(*) DESC

                 这句的意思 查询cba 将姓名相同的列合并起来 统计共有多少行 条件是duiwu='新疆'  按照生效

26.gif


子查询:以里面的查询为条件

    SELECT * FROM tiezi WHERE yhid=(SELECT yhid FROM yonghu WHERE nicheng='阿朗')

子查询可以用in查询多个:不建议使用查询效率高不起来

   select * from table where sid in(1,2,34,45,5,4)

26.gif


模糊查询 like 模糊查询关键字 模糊查询效率高不起来

     SELECT * FROM tiezi WHERE biaoti LIKE '%123%'   只要含有123的都查询出来

     凯%                只要含有凯开头就可以

    %凯%              只要字符里面还有凯字样就行

    %java%凯%     有这两个关键字都查询出来

26.gif


UNION 记录集合并 适合将不同的表和在一起将记录做成一张表

     UNION ALL 重复记录也合并

     UNION  去除重复记录


SELECT sid,sname,address,age,cid FROM student

UNION UNION  

SELECT  cid,cname,NULL,NULL,NULL FROM cls

26.gif


表联查

SELECT * FROM 表  连接方式   表  ...  ON 连接条件    WHERE 记录过滤条件     ORDER BY 排序   LIMIT 0,1

问题

     连接查询,肯定会出现重复列,在数据库中没有问题,在代码开发中会出现重复列错误


SELECT * FROM student 

INNER JOIN cls 

INNER JOIN room

INNER JOIN banzhuren

ON student.`cid`=cls.`cid` AND cls.`rid`=room.`rid`

AND cls.`bid`=banzhuren.`bid`

26.gif


目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
3月前
|
SQL PHP
thinkphp之进阶sql语法,持续更新
thinkphp之进阶sql语法,持续更新
23 0
|
1月前
|
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的语法写
24 5
|
20天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
92 0
|
2月前
|
SQL 关系型数据库 数据库
sql语法
【7月更文挑战第30天】sql语法
38 12
|
2月前
|
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类型。
63 7
|
2月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到SQL语法错误,该如何排查
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2月前
|
SQL 数据库 索引
SQL SELECT语句的语法与查询优化技巧
SQL SELECT语句的语法与查询优化技巧
|
4月前
|
SQL 关系型数据库 数据库
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
123 9
SQL Server语法基础:入门到精通
|
3月前
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用合集之sql代码中支持插入jinja语法语句吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。