create database if not exists website
创建一个数据库
在xds这个表里面添加一个字段,teacher,然后是属性
alter table xds ADD teacher int(11)
在xds这个表里面修改一个字段,teacher,然后是属性(修改的是约束)
alter table xds modify teacher varchar(11)
在xds这个表里面修改一个名字,teacher,然后是属性(修改的是名字)
将teacher变为xgg
alter table xds change teacher xgg varchar(11)
删除表的某一行
alter table xds drop xgg
删除表
drop table xds
老版的与现有的版本区别
myisam
:支持全文索引
较小
innodb
:不支持全文索引
安全,支持多表操作
支持事务处理
较大
外键
创建外键的书写
,同样是修改,在新增的上面增加了
constraint 是约束条件,在st这张表,加到gd这张表,引用
哪张表的字段
alter table st add
constraint `Fk_stgd` foreign key(`stgd`)
references `gd`(`gdid`)
这个是物理外键,不容易删除,所以是不建议使用的
数据库是单纯的数据,行和列
用程序去实现
插入语句
插入语句,
表明,某一列,值
如果是多个的话用逗号隔开
insert into `st`(`stname`) value('熊大帅')
insert into `st`(`stname`,`stgd`) value('1','1')
插入
带有条件的修改,如果不带条件的话会将全部修改掉,建议run
表明,某一列,条件多个的话,逗号,
update `st` set `stname` = 'xds' where stid = 1
update `st` set `stname` = 'xds', `stgd` = 2
where stid = 1
删除
相同点:都能删除数据不会删除表的结构
delete
他的删除语句,清空某张表的话是不需要where查询语句的
delete from st where stid = 2
当进行插入的时候,会发现这个表的id属性会依然自增
不会有所改变,变为stid = 3
insert into `st`(`stname`) value('dasdsa')
但delete后重启数据库后会依然从id=1开始
所以是断电即开始,存储到内存钟就是
不会影响自增列
truncate
不影响事务,清空自增列
查询,important,核心
select
查询这张表的所有信息
select * from st
查询这张表的某一列
select stname from st
为这张表的表头起一个别名
select stname as 学生姓名 from st
给这张表里面添加一些数字
select concat('熊猫:',stname) as 学生姓名 from st
查询当前的版本
select version()
去重distict
distict
从stgd这张表里面选中内容,去掉重复的元素
重复的数据只显示一条
select distinct `gdid` from stgd
模糊查询
is null
is not null
between如果a在这个区间则为真
like 如果a匹配b,则为真
in 如果a在里面,则为真
% 这 个是在like里面使用的
查询这个字段当中带x的所有字符,
注意这个是以x开头的
select stname from st where stname like 'x%'
查询这个字段当中带x的一个字符,
两个字符的话x_ _,
select stname from st where stname like 'x_'
查询名字中带有这x这个字的所有名字
select stname from st where stname like '%x%'
in的话是查询具体的值
select stname from st where stid in(1)
多表联查
将st表和gd表,通过右连接拼接起来
如果有相同的话就需要指定是哪张表的s.stname
这样指定,不然会出现木棱两可的
select stname,stage,gdname
from st s right join gd g on s.stgd = g.gdid
如果是left join 的话会出现左边为空的也会查出来,,
但right join 就不会出现这中情况
连接查询,传统
还有子查询
是从里面到外面开始查,
where子查询更快,不涉及到连表,只是单纯的查询、
这张就是使用left join
这张就是right join
分页和排序
where
group by
having
order by
limit
这些顺序是不能写错的
分页limit 排序 orderby
order by 名字(字段) desc降序/asc升序
分页
0代表起始的大小,后面的5代表的是页数大小
limit 0,5
聚合函数
count
看是不是主键,count(列名)要更快
count(列名) 会忽略掉null值
count(*) 不会忽略
count(1) 不会忽略 将所有的列变为1
sum
avg 平均分
max
min
ACID
原子性,
要么同时发生,要么同时取消
一致性,
事务最终形态是一值得
隔离性,
多个用户操作,每个事务隔离的
持久性
就是之前如果发生,就发生了,不会变
如果之前没有变,就恢复回原状态
脏读
不可重复读
幻读(虚度)
隔离失败后的