创建表有三种语法
第二种方法是select执行结果作为创建表
第三种是复制了表结构但是没复制表中数据
表结构是一样的
insert基本语法
数据和字段有对应关系
可以只赋值两个字段
可以一次性添加两条记录
employee这个表是用的utf8
但是studdens是用的拉丁
给学生表添加信息,中文就是乱码
这样的语法也可以,set用的不多
可以做批量增加,现在想把employee的内容全部添加到students表里
主键不能重复,就写>1
两个表的字段要一一对应,数据类型要一致,不要求字段名一致
这种用法最多
update修改
如果不加条件就全部改了
为了避免悲剧发生,mysql配置文件有防止这样的错误发生,加一个安全更新
将来如果在更改,删除表的时候没有加where条件是不允许操作的
再次更新就提醒你了,不加where是没办法更新的
这其实是个mysql客户端选项,如果没有加也是可以的,直接加选项也是可以的
这个语句块是这对mysql客户端有效的,换了台机器就没了
-U最省事,安全更新
**delete适合删除部分记录,如果全部删除,也不要用delete,效率低,使用trancate **
大表最好不要贸然删除、可能删除文件的时候会加锁,造成卡住
硬链接本质上是同一个文件,起多个名字,在磁盘上占空间是一份空间,软连接类似快捷方式,在删除大表的时候,可以利用linux特性,硬链接,删除只是删除一个同名的,本质上还在
这时候就能瞬间删除,因为删除的时候只是删除一个硬链接名字
一个文件太大,如果用rm删,也会造成IO增长,也有小技巧,>直接清0,这样rm就轻松了
只是把表的内容清空,数据库数据不破坏
测试数据库的sql
AUTO_INCREMENT是自动递增
把脚本执行一遍
现在就有数据
课程信息
COC是课程ID和班级ID的对应关系
学生表是被依赖的表,属于主键
查询语句用法比较丰富的
查询方式特别多,有时候可能因为一条效率比较低的语句造成数据库宕机*单表操作,星号所有字段
建议写程序,不用星号,写明字段名
可以加别名sql也是一种语言,也可以做运算
行过滤
=精确匹配
不等
为空,null比较特殊,需要使用is
有个简单写法就是between andin是包含
distinct把重复的去掉了
通配符
姓名s开头的
这种写法最好不要出现,因为索引工作机制是左前缀机制
正则表达式
建议不使用,想办法用其他方法代替