SQL语言分类
Structured Query Language的缩写,即结构化查询语言关系型数据库的标准语言,用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能(增,删,该,查)
- DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
- DML:数据操纵语言,用于对表中的数据进行管理
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
MySQL数据库的日志
数据库日志文件用于备份、恢复、故障定位,是最核心的部分。
mysql与oracle日志有所区别:mysql每写一条数据会同步保存到日志文件中;而Oracle有个重做日志组,在一个组中至少有3给个日志成员轮流存储日志,还会有另一个组与之同步/备份。(特别安全)
mysql存储引擎
主要负责把数据从数据库表中的数据保存到磁盘或者文件系统中。这里简要了解两个存储引擎:
- myisam:快速读取,不支持事务
- innodb:更注重写,支持事务
mysql常规操作
删除指定的数据表:
drop table +表名;
drop table 库.表名; #如果不用use进入库中,则需加上库名
删除指定的数据库:
drop datebase 数据库名;
创建一个加密密码的表:
这里出现报错了,要对上面的表结构优化下
update:更新原有数据(更新的是一条记录里的信息,即行)
格式
UPDATE 表名 set(修改)字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
delete:删除不需要的数据(表内容)
DELETE FROM 表名 [WHERE 条件表达式]
数据查询语言-select
格式:
SELECT字段名1,字段名2[,...] FROM 表名[WHERE 条件表达式]
select * from biao;
select * from biao\G #以列表方式竖向显示
select id,name from biao;
select id,name from biao where score>80; #查询出分数大于80的
select * from biao limit 2; #输出前三行(表头为第一行)
select * from biao limit 1,2; #显示第一行下面的两行(不包括第一行)
修改表名和表结构
alter 修改表名和表结构(表结构)
alter table 旧表名 rename 新表名;
alter table biao rename biao_new;
alter table biao_new add hobit int(5); #扩展表结构(增加字段)
alter table biao_new change address address_new varchar(50) unique key default '地址不详';
#修改字段名,添加唯一键,默认值为’地址不详‘
unique key 为唯一键(特性:唯一,但可以为空,空值只允许出现一次)
promary key:唯一且非空
ps:这里把地址设为唯一键并不合理,地址可以相同。
删除字段格式:
ALTER TABLE表名 DROP 字段名;
alter table xinxi drop hobid;
扩展
- if not exists: 表示检测要创建的表是否已存在,如果不存在就创建。
- int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001。
- auto increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次。
- unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键。
- not null:表示此字段不允许为NULL。
数据表高级操作
create table yyy2 like yyy; #复制格式,通过LIKE方法,复制yyy表结构生成yyy2表
insert into yyy2 select * from yyy; #备份内容
克隆表
克隆表,将数据表的数据记录生成到新的表中
CREATETABLE test02(SELECT * from test);l复制test表数据到test02中
清空表,删除表
delete from info;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。
truncate table info;
#TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,ID会从l开始重新记录。
#删除类型比较:
drop table table_name1):不可回滚(无法恢复);不带where;表内容和结构都删除,删除速度快
truncate table table name:不可回滚;不可带where;表内容删除,删除速度快
delete from table_name:可回滚(可恢复);可带where;表结构在,表内容要看where执行的情况;删除速度慢,需要逐行删除
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate
速度方面
drop> truncate> delete
安全性方面
delete最好
创建临时表
create temporary table xxxx (id int(4),name varchar(10));
临时表:只会保存在内存中,在数据库退出连接之前的所有操作,都是在内存中进行的,不会保存在磁盘里面,退出连接后,临时表会释放掉
永久表:sql 写入——》数据表中—》先把数据保存在内存中—》写入到磁盘