ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ##### 约束条件 1. 唯一 unique 2. 非空 not null 3. 检查 check(条件) 4. 默认值 default 值 5. 主键 primary key 又称之为 PK约束 6. 外键 references 表(列) 又称之为 FK约束 #### 数据类型 1. number 数字 2. char 定长的字符串 3. varchar2() 可变长的字符串 4. date 日期 **查询解题思路** 1. 确定所查询的数据来自于哪些表; 2. 如果查询的数据需要从多张表中获取,就需要在where字句后面,把这些表的相同字段用等于号连接起来; 3. 如果需要对单条数据做过滤,就把过滤条件追加到where字句后面,并用and连接起来; 4. 如果需要对多组数据做统计,就要使用group by字句; 5. 如果需要对分组后的数据做过滤,就要使用having字句; 6. 如果需要排序,就要使用order by字句。 **分组函数的使用** 1. 分组函数只能出现在select、having、order by 子句中 2. 如果在select语句同时含有group by、having、order by,那么他们的顺序是group by、having、order by 3. group by 有一个原则,就是 select 后面的除分组函数外的所有字段,必须出现在 group by 后面,否则,有语法错误(重要) 4. 有having 一定有group by ### DML语句 **增** ~~~ insert into 表名(列1,列2) values(值1,值2); ~~~ **删** ~~~ delete from 表 where 条件 ~~~ **改** ~~~ update 表名 set 列1=值1,列2=值2 where 条件 ~~~ **查** ~~~ select 列名1,列2,* from 表名 where 过滤条件 group by 分组 having 对分组后的内容进行限制 order by 排序 ~~~ **去重** > distinct > 去除重复项 **模糊查询** > like **左右连接** 左连接,+在右边,以左表为主表 右连接,+在左边,以右表为主表 另外一种写法: ~~~ SELECT stu.*,addr.address FROM stu RIGHT JOIN addr ON stu.id = addr.id; ~~~ Oracle中还可以写成 ~~~ SELECT stu.id,addr.address FROM stu,addr WHERE stu.id=addr.id(+); ~~~ **mysql分页查询** > limit x,y > x表示从第几条开始取,从0开始 > y表示取多少条数据 > 取第6-10条的数据 > `select * from 表 limit 5,5;` ~~~ SELECT id,username FROM users LIMIT 0,5; SELECT id,username FROM users LIMIT 5,10; LIMIT m,n m 表示从第多少条开始(下标,第一条数据的下标为0) n 表示取多少条数据 ~~~ **视图 view** > 我们可以把视图看做一张不可修改表,只能够进行查询 **索引 index** > 提升查询的效率,类似书的目录 **删除表的区别** ~~~ drop table 表名; --删除表的结构与数据 truncate table 表名;--删除表的数据 delete from 表名;--删除表的数据(可以回滚rollback) ~~~ ### DDL语句 **创建表** ~~~ create table 表名( 列名1 数据类型 约束条件, 列名2 数据类型 约束条件, 列名3 数据类型 约束条件 ); ~~~ **新增列** ~~~ alter table 表名 add( 列名1 数据类型 约束条件, 列名2 数据类型 约束条件, 列名3 数据类型 约束条件 ); ~~~ **删除一列** ~~~ alter table 表名 drop column 列名; ~~~ **修改列** ~~~ alter table 表名 modify ( 列名1 数据类型 约束条件, 列名2 数据类型 约束条件, 列名3 数据类型 约束条件 ); ~~~