MySql的各种操作积累
查询表的字段信息:desc table(表名);
查看数据库:show databases;
查看某个数据库:user database(数据库名);
查看当前使用的表:show tables;
查询 表中的数据 select * from 表名;
插入数据 insert into 表名(字段1,字段2,…,字段n) values(值1,值2,…,值n);
例如:
1 | insert into dif(st_title,st_author,submission_data) values ("学习","hello","2016-07-09"); |
查询语句
1 | SELECT field1, field2,...fieldN FROM table_name1, table_name2... |
2 | [WHERE condition1 [AND [OR]] condition2..... |
例子:
1 | select * from where st_author = "怎么样"; |
mysql复制表的两种方式。
第一、只复制表结构到新表
1 | create table 新表 select * from 旧表 where 1=2 |
或者
1 | create table 新表 like 旧表 |
第二、复制表结构及数据到新表
1 | create table新表 select * from 旧表 |
数据库备份
mysqldump -hlocalhost -u boke -p hello > /home/thacker/文档/mysql_backup/my_sql_dump.sql
mysqldump -h数据库地址 -u 用户名 -p 回车后写密码 数据库名 >(到的意思) 存放地址/备份数据名称.sql
恢复数据库
create database my_database;(为了直观看出恢复,创建了个表)
mysql -u boke -p hello1(随意数据库名称) < /home/thacker/文档/mysql_backup/my_sql_dump.sql
mysql -u 用户名 -p 回车后写密码 数据库名 <(到的意思) 存放地址/备份数据名称.sql
解决外健约束问题
alter table 表名
nocheck(不检查) constraint(约束) FK_约束的外键
INSERT JOIN(内连接)
检查两个表,连接两个表相同的字段信息
select 字段名*n
from student s
insert join class c
on s.class_id = c.id
可选:加上WHERE子句、ORDER BY等子句。
outer join(外连接)
select 字段名*n
from student s
outer join class c
on s.class_id = c.id
MySQL删除表操作(delete、truncate、drop的区别)
区别
1、表和索引所占空间:
当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小;
DELETE操作不会减少表或索引所占用的空间;
DROP语句将表所占用的空间全释放掉。
2、应用范围:
TRUNCATE 只能对table;
DELETE可以是table和view。
3、执行速度:
drop > truncate > delete
4、delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。
5、DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
6、当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。
7、如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变;
使用truncate删除之后,种子会恢复到初始值。
总结
1、delete 语句可以使用where子句实现部分删除,而truncate不可以,会将表中的整个数据全部删除,使用时,可以按需求选择;
2、如果想从表中删除所有的数据,不要使用delete,可以使用truncate语句,因为这样执行速度更快。truncate语句实际是删除原来的表然后重新建立一个新表;
3、在没有备份情况下,谨慎使用 drop 与 truncate。要删除表结构使用drop;
4、对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。