-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmysql命令大全.txt
205 lines (176 loc) · 10.7 KB
/
mysql命令大全.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
==========MySQL常用命令大全===============
登录mysql mysql -u用户名 -p密码
1.数据库操作
show databases; 显示数据库
create databases <name>; 创建数据库
use database <name>; 选择当前的数据库
drop database <name>; 直接删除数据库,不提醒
show tables; 显示当前数据库下的所有数据库表
2.数据库表操作
describe <tablename>; 显示数据库表的表结构
desc <tablename>; describe <tablename>的缩写形式
show columns from <tblname>; 显示表的列
drop table <tblname>; 删除表
3.数据库表的操作(查询和更新[增加/删除/修改])
======================================================
insert into <tblname> (<column_name1>, <column_name2>,...) value (<column_value1>, <column_value2>,...);
这里的value可以是value,也可以是values,使用逗号来分割多个数据元祖
======================================================
create table <tablename> (<column_name> <column_data_type>,...,<table_describ>); 最后的列描述主键和外键等。
create table <tablename> like <existstablename>; 根据existstablename的表结构来创建数据库表tablename
insert into <tablename>
values (<column_value>, ...), (<column_value>, ...); 插入数据到数据库表,需要写出所有列的数据
insert into <tablename> (<column_name>, <column_name>, ...)
insert into <tablename> select * from <tablename_src>; 将tablename_src中的所有数据插入到<tablename>中,<tablename>已经存在
update <tablename> set <column_name>=<column_value>, <column_name1>=<column_value1> where ...; 更新表数据
update <tablename> set <column_name>=replace(<column_name, 'old_value', 'new_value'); 使用replace函数来更新数据,凡是等于old_value的都会替换成new_value
update <tablename> set <column_name>=<column_value>, <column_name1>=<column_value1> ... where <column_name> regexp <reg_expression>; 使用正则表达式来过滤
说明:where如果携带多个条件的话 需要使用关系谓词来进行组合例如
select * from student where Name regexp '^l[iI]si' and Age regexp 20;
select * from student where Name regexp '^l[iI]si' and Age=20;
delete from <tablename> where ..; 删除表数据,如果不带where则整个表数据都会被删除
select 中加上distinct去除重复字段
select * from <tablename> where <condition> [order by <column_name> limit <M,N>];
where 表示条件语句
limit 表示限制的结果行数
order by <column_name> <order_way>, <column_name> <order_way> 表示按照那个条件进行排序,其中排序方式包含升序 (asc)和降序(desc)
3.1表结构的调整
===============================================================
alter table <table_name> [operation] ...
operation: rename add drop modify
===============================================================
alter table <table_name_old> rename <table_name_new> 重命名表
rename table <table_name_old> to <table_name_new> 重命名表
alter table <table_name> add <字段> <类型> 增加字段
alter table <table_name> drop <column_name> 删除字段
alter table <table_name> modify <column_name> <data_type> 修改字段
alter table <table_name> [default] character set <character_name>; 修改表的某人字符集
alter table <table_name> change <column_name> <column_name> <data_type> <character set XXX>; 修改表中字段的字符集
4.数据库用户及权限操作
update user set password=password("xueok654") where user='root'; 修改用户密码
flush privileges; 刷新数据库权限管理
5.mysqladmin的操作
mysqladmin drop databasename 删除数据库,有提醒
6.其他操作
select version(), current_date, current_time; 显示当前的版本和日期,时间
7.MySQL数据库函数
select database(); 查看当前使用的数据库信息
select current_date; 查看当前日期
select current_time; 查看当前时间
select user(); 查看当前的用户
select password('<username>'); 查看用户的口令(加密之后的)
replace 替换函数:
替换指定字段的特定值 update <tblname> set <column_name>=replace(<column_name>, 'old_value', 'new_value');
concat 连接函数:
将数据库字段中的数据,使用字符串连接起来
update <tblname> set <column_name>=concat(<str>, <column_name>)
abs 绝对值函数:
select abs(-1);
pi 数学符号π函数:
select pi(); //3.1415927
date 日期函数,将字符串转换成日期
time 事件函数
length 求字符串的长度
round 求数值的四舍五入值
upper 字符串转大写
lower 字符串转小写
select curent_timestamp(); 查看当前的时间日期标签
cast 类型转换函数
select cast('0001' as signed integer);
select cast('2017-10-1' as date);
8.show命令
show命令增加full的符号可以查看该命令的详细
show databases; 查看当前权限内的所有数据库
show [full] tables; 查看当前数据库下的所有权限内的数据库表
show grants for <username>@<hostname>; 查看某个用户的所有权限(需要有mysql表的查询权限)
show grants; 查看当前用户的权限
show keys from <tablename>; 显示某个表的键值
show index from <tablename>; 显示某个表的索引信息
show variables ;显示所有的环境变量(工作状态参数)
show privileges; 显示服务器支持的不同权限
show status; 显示数据库的当前工作状态
show engines; 显示安装后可用的存储引擎和默认存储引擎
show errors; 显示最近的错误信息
show warnings; 显示最近的警告信息
show table status; 显示当前数据库下所有可见表的工作状态(包含表使用的存储引擎,底层数据存储模式等)
show processlist; 显示当前系统中正在运行的所有进程,root可以看到所有在使用客户端数据库的登录账号
show [full] columns from <tablename> ;查看数据表中的列信息
show full columns from <tablename> ;查看数据库表中的完整信息(包含特权和注释等)
show create [table|database] [<tablename>|<databasename>] ;查看完整的数据库表和数据库的创建语句
show collation; 查看所有的校对字符集(也就是用来比较的字符集,如何比较字符集之间的大小关系)
show triggers; 显示存储过程
9.修改用户密码
1.进入到mysql数据库中,找到user表进行修改,这里需要调用password函数来生成mysql的加密口令
update user set authentication_string=password('new_password') where User='username';
修改完成以后,如果希望即可生效的话,必须要更新数据库
flush privileges;
或者可以通过mysqladmin来修改密码
mysqladmin -u username -p password newpassword
10.数据和索引的加载以及导出
可以通过 help load 或 ? load在mysql交互命令行中查看帮助。
load data infile <datafullpath> into table <dbname>.<tblname>
11.MySQL中的聚集函数,意义 [参数都是字段名称]
sum() 求和
avg() 平均值
count() 表达式中记录的数目
count(*) 计算记录的数目
max() 最大值
min() 最小值
12.数据库表索引,其中删除数据库表索引的时候是不需要指定列名称的,创建的时候需要指定
create index <index_name> on <tablename>(column_name); 创建数据表索引,可以使用? create index 来查看
drop index <index_name> on [<dbname>.]<tablename>; 删除数据库表索引
13.指定数据库表字段的外键
通过foreign_key和references来限定外键,创建外键的类型必须一直,包括是否使用unsigned,以及类型等。
否则会导致外键创建失败。 ERROR 1142 cannot add foreign key constriant
(1)创建的时候直接指定
create table <tablename> (id int auto_increament primary key,
....
...,
forkey int unsigned,
foregin key (forkey) references <dbname>.<tablename>(<column_name>)
);
(2)通过alter修改表属性来指定外键
alter table <tablename> add foreign key (<self_column_name>) references <dbname>.<tablename>(<column_name>)
14.数据库查询join操作
select * from table1 inner|left|right|corss join table2 on condition
join按照功能可以分为三类
1.inner join 等值连接:取得两个表中存在连接匹配关系的记录
2.left [outer] join 左连接:取得左表完全记录,右表并无匹配记录
3.right [outer] join 右连接:取得右表完全记录,左表并无匹配记录
4.注意mysql不支持full join(全连接),但是可以通过union关键字来合并left join和right join来模拟full join
select * from tabl1 left outer join tabl2 union select * from tbl1 right outer join table2;
5.cross join 交叉连接,得到两个表的笛卡尔乘积
15.MySQL谓词的使用
使用谓词,在元祖的个数类型上必须统一,否则没法进行元素对集合的比较操作,使用这些谓词可以很容易求集合的极值。
MySQL的谓词主要包含 exists, like, all, any, some, unique
all 所有的条件都满足返回true,否则返回false
any 只要有条件满足就返回true,否则返回false
some 和any的意思一样,存在一些就返回true,否则返回false
16.创建视图
创建视图的时候要注意的时候,如果选择结果来自多个表,而且这多个表中有同名的字段名称,需要使用as来重命名,这样
得到的结果view中就不会有重复的字段名称了。
create view <view_name> as select ....
drop view <view_name>
17.MySQL的逻辑执行语句
(1)if表达式
if(expr1, expr2, expr3)
如果expr1的逻辑结果是true,则返回expr2作为结果,否则返回expr3作为结果,例如
select if(score >= 60, 'pass','fail') from score; //筛选成绩合格的
select student.name ,student.age, if(select_score.score >= 60, 'pass', 'fail') from
student inner join select_course on student.sno = select_course.sno
(2)select case语句
select case value
when 1 then 'A'
when 2 then 'B'
when 3 then 'C'
else 'D'
end as degree_level from test; //根据value字段的数值来返回指定对应的数据'A','B','C','D' 以end结尾
N.杂项
1.where 条件判断某个数据是否是null,
select * from table1 where columnA is not null; 从table1中获取columnA不是空的表数据
2.mysql中的常量
true 1
false 0
3.mysql增加常数列
select a, b from table where ..
select <const_value> as <column_name> , a, b from table where ....