关系在关系型数据库中吗,就是二维表
选择selection:称为限制,是从关系中选择出满足给定条件的元组。
投影projection:在关系上投影就是从选择出若干属性列组成新的关系。
链接join:将不同的两个关系链接成一个关系。
一般有时候交给ORM做,但是还是需要自己了解
在表里新加入一条记录
查询出来的内容插入
往表里插入对应的值,当键重复了,DUPLICATE key 就改为更新,当主键或者唯一键冲突,将原来的插入新的,变为更新动作
往user表里插入数据
创建一个索引
唯一键会生成唯一键索引
怕出问题,就反引号括一下
现在数据就有了。password也是用的明文
删除唯一键约束
再次执行
除了主键其他都一样
现在再次添加唯一键索引
显示loginname重复
修改数据
再次保存就不报错了
再次插入唯一键冲突
可以加 ON DUPLICATE KEY update出现这样的情况就update loginname=‘jerry’
插入数据冲突了,转而不insert,改为update
现在试试插入不进去,把name更新
成功了
这种语句用的很多
受影响0行,加个ignore,=忽略,能插入成功就插入成功,失败就不重复插入了,这是比较常用的用法update语句不加where会出大事
delete语句几乎不用,现在都是假删除,打标签
经常用的,for update |lock in share mode是要不要加锁的问题
查询会返回一个结果集recordset,用一个数据结构,把查询到的数据装载到里面
一般不这么做,对于大数据的表,就比较不合适
说明在sql中加号不是用来做字符串+的,是数字加的,会把字符串隐式转换成数字
使用concat
可以加空格
这样列名就变了,这就是别名
as关键字可以拿掉,好的习惯是as加上去,并且反斜杠去除歧义美化sql就有大写了
只显示开始5条
想要从6行开始,偏移后5个,这是最方便的
在知道列的情况下可以这么写
也可以这么写
**从第10个开始偏移5个,从几开始偏移几个
**
limit往往用在分页上,数据集太大,一定要分页
like的通配符就两个。%任意多个字符,_代表一个,like子句有性能问题,不使用索引,大量IO,最好用搜索引擎
**逻辑上有短路,就可以让它尽早短路提高性能 **
建议使用括号,防止出现错误
默认升序
优先使用第一个字段排序,排完序,第1个字段有相同的时候,birth_data一样,就比第二个字段emp_no谁大谁小
也可以指定第二个字段的排序方式,排序好数据给用户
这张表重复的东西比较多
去重要么是数据库做,要么是python程序进程来做
类似联合主键,把两列联合起来了
这个是联合主键,两个字段结合起来表现为1,所以上面对着两行去重没有意义
先去重再计算有多少行
先去重,再平均
聚合是把这么多行数据产生一个数据出来
emp_no有40几行,但是后面的字段都被聚合了,就把emp_no其中的一个拿出来了
发过薪水的人,总计发了多少
这两列都是爱谁谁,sql server 这个语法是错误的
平均工资大于4.5万的拿出来
可以使用别名
也可以limit
也可以offset
子查询是嵌套查询,内部查询
有些时候比较麻烦必须先写个子查询
这两种子查询用的很多,一种是当临时表来用,一个是作为结果集给其他表作为数据源的