MySql简单语法复习

时间:2021-07-27 03:05:55
1、 mysql数据库使用
A、查看所有用show命令,查看当前用select函数
查看所有的数据库Show databases
创建和删除数据库create/drop database name
使用或连接数据库use databasename(),
查看当前使用的数据库:select database()
查询当前时间:selectnow()
查询当前用户:select user()
查询数据库版本:select version()
查看所有表:show tables
show processlist;列出每一笔联机的信息。 
show variables;列出mysql的系统设定。 
show tables from db_name;列出db_name中所有数据表; 
show [full] columns from table_name;列出table_name中完整信息,如栏名、类型,包括字符集编码。 
show index from table_name; 列出table_name中所有的索引。 
show table status;;列出当前数据库中数据表的信息。 
show table status from db_name;;列出当前db_name中数据表的信息。 
alter table table_name engine innodb|myisam|memory ;更改表类型 
explain table_name / describe table_name ; 列出table_name完整信息,如栏名、类型。 
show create table table_name 显示当前表的建表语句 
alter table table_name add primary key (picid) ; 向表中增加一个主键 
alter table table_name add column userid int after picid 修改表结构增加一个新的字段 
alter table table_name character set gb2312 改变表的编码 
select user(); 显示当前用户。 
select password(’root’); 显示当前用户密码 
select now(); 显示当前日期 
flush privileges 在不重启的情况下刷新用户权限 
mysqld –default-character-set=gb2312 ;设置默认字符集为gb2312


B、表操作
备注:操作之前使用“use<数据库名>”应连接某个数据库。
匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串; 
联合字符或者多个列(将列id与":"和列name和"="连接)
  select concat(id,':',name,'=') fromstudents;
limit(选出10到20条)<第一个记录集的编号是0>,SQLServer上为Top
  select * from students order by id limit 9,10;
建表:create table <表名> (<字段名 1> <类型 1> [,..<字段名 n><类型 n>]);
插入数据:insert into <表名> [( <字段名 1>[,..<字段名 n >])] values ( 值 1 )[, ( 值 n )]
获取表结构:describe tablename, desc tablename, show columns from tablename
删除表 drop table tablename
删除表中数据 命令:delete from 表名 where 表达式
修改表中数据 命令:update 表名 set 字段=新值,... where 条件
在表中增加字段 命令:alter table 表名 add 字段 类型 其他;
更改表名 命令:rename table 原表名 to 新表名
更新字段内容 命令:update 表名 set 字段名 = 新内容,
删除student_course数据库中的students数据表:rm-f student_course/students.* 直接使
用linux命令来删除,也可以使用drop命令
 创建临时表:create temporary table zengchao(name varchar(10));
创建表是先判断表是否存在: create table ifnot exists students(……);
从已经有的表中复制表的结构: create table table2 select * from table1 where 1<>1;
复制表,复制表的时候也会将表结构也复制过去了:create table table2 select * from table1;
对表重新命名:altertable table1 rename as table2;
创建索引,创建索引有两种方式,alter原来的表结构然后add,或者
删除索引drop index idx_id on table1;
alter table table1 dropindex ind_id;
可以使用ALTER TABLE语句来更新与属性或表有关的约束。关于修改索引也是用类似的命令
删除约束:ALTER TABLEDROP CONSTRAINT约束名
增加约束ALTER TABLEADD CONSTRAINT约束名约束定义


C、数据库导入导出
从数据库导出数据库文件, 使用“mysqldump”命令
1)导出数据库: mysqldump -u [用户名] –p [数据库名] -A>[备份文件的保存路径],如
mysqldump -h localhost -u root -p mydb >e:\MySQL\mydb.sql
2)导出数据和数据结构:mysqldump -u [用户名] -p [数据名 表名>[备份文件的保存路径]
mysqldump -h localhost -u root -p mydb mytable>e:\MySQL\mytable.sql :数据表
mysqldump -h localhost -u root -p mydb --add-drop-table >e:\MySQL\mydb_stru.sql:数据库结构
3)只导出数据不导出数据结构:mysqldump -u [用户名] -p -t [数据库名]>[备份文件的保存路径]
4)导出数据库中的Events: mysqldump -u [用户名] -p -E [数据库名]>[备份文件的保存路径]
5)导出数据库中的存储过程和函数:mysqldump -u [用户名] -p -R [数据库名]>[备份文件的保存路径]
从外部文件导入数据库中
1)使用“source”命令:source [备份文件的保存路径] 这个Source有点类似shell的source命令
2)使用“<”符号:mysql -u root –p < [备份文件的保存路径]
3)用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;


D、optimize table使用
结合mysql官方网站的信息,个人是这样理解的。当你删除数据时,mysql并不会回收,被已删除数据的占据的存储空间,以及索引位。而是空在那里,而是等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。所以对于写比较频烦的表,要定期进行optimize,一个月一次,看实际情况而定了。