DDL(数据定义语言)
create database 数据库名称;
show databases;
在information_schema数据库下
use 数据库名称;
drop database 数据库名称;
show tables;
desc 表名
show create tables 表名;
drop table 表名
alter table 表名 modify 字段名 字段类型;
alter table 表名 旧字段名 新字段名;
alter table 表名 add 字段名;
alter table 表名 drop 字段名;
alter table 表名 rename (to) 新表名;
DML(数据操作语言)
insert into 表名(一个或多个字段名) values(各个字段对应的数值) ;
select * from 表名;
select 一个或多个字段名(逗号隔开)from 表名;
update 表名 set 字段名=数值 where条件;
delete from 表名 where条件;
DCL(数据控制语言)
create user 用户名@ip地址 identified by '密码’;
drop user 用户名@ip地址;
grant update/insert/delete on 数据库名.表名 to 用户
grant all privileges on *.* to 用户;
revoke 权限 on 数据库名.表名 from 用户名;
show grants for 用户名;
DQL(数据查询语言)
select 字段名1,字段名2,... from 表名 where条件;
select distinct 列名 from 表名;
select concat(列名,列名,..) from 表名;
select concat_ws('@',列名,列名,..) from 表名;
select 列名 as 别名 from 表名;
select 列名 from 表名 where 列名 like '%hello%';
select 列名 from 表名 where match(索引的列名) against(查找的值);
select 列名 from 表名 order by 排序所依据的列名 desc/asc;
select 列名 from 表名 group by 列名;
select 列名 from 表名 group by 列名 having语句;
- 内连接查询(where可以使用on代替)
- 左右连接查询(这里没体现出差异)
- 联合查询
select 语句 union all select语句
others
mysql -u 用户名 -p 密码;
use mysql;
select user,host from user;
update user set host where user="用户名";
flush privileges;
mysqladmin -u 用户名 -p 原密码 password 新密码
https:
-
查看编码设置
-
查询sql_mode等
-
查询autocommit等
-
指定引擎和编码
create table 表名(字段...) engine=InnoDB charset=utf8
alter table 表名 engine=Innodb;
show engines;
show character set;
create database 数据库名 character set gbk;
create table 表名(字段名..) charset=gbk;
show table status\G;
使用transaction使得commit(确认修改)或rollback(撤销操作)之前的语句能够不中断的执行。结构如下:
start transaction
一系列sql语句
commit /rollback
- 关闭自动提交(不写入硬盘,先保存在内存,直到手动commit)
set autocommit=0
create view 视图名(字段名.....) as select语句;
alter view 视图名(字段名...) as select语句;
drop view 视图名 if exists 视图名;
create trigger 触发器名 before/after insert/update/delete on 表名 for each row
begin
sql语句
end;
delimiter
drop trigger 触发器名;
sql语句优化查询
show variables like "%slow%";
Variable_name | Value |
+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | xxxx |
set global log_slow_queries=on;
show variables like "%long%";
+
| Variable_name | Value |
+
| long_query_time | 10.000000 |
| performance_schema_events_stages_history_long_size | 10000 |
| performance_schema_events_statements_history_long_size | 10000 |
| performance_schema_events_transactions_history_long_size | 10000 |
| performance_schema_events_waits_history_long_size | 10000 |
+
set long_query_time=0.5;
explain 查询语句;
show variables like "%profiling%";
set profiling=on;
show profiles;
+
| Query_ID | Duration | Query |
+
| 1 | 0.00234400 | show variables like "%profiling%" |
| 2 | 0.00016400 | ste profiling=off |
+
show profile for query 2;
+
| Status | Duration |
+
| starting | 0.000108 |
| freeing items | 0.000051 |
| cleaning up | 0.000005 |
+
show variables like "%cache%";
alter table 表名 add index 索引名(列名);
create index 索引名 on 表名(列名);
load data infile "文件路径名" into table 表名;
select 列名,列名... into outfile '导出文件名路径' from 表名;
mysqldump -u 用户名 数据库名>备份文件名;
mysqldump -u 用户名 数据库名 表名>备份文件名;
alter table 表名 auto_increment=100;
create table 新表名 like 旧表名;
create table 新表名 select * from 旧表名;
rename user 旧用户名 to 新用户名;
set password=password("密码");
set password for user=password("密码");
mysql db name< text file
mysql< text_file
alter table school alter column subordinated_to set default '教育部';