1 SHOW DATABASES;#查看当前所有的数据库
2 USE 库名;#打开指定的库
3 SHOW TABLES;#查看当前库的所有表
4 SHOW TABLES FROM 库名;#查看其他库的所有表
5 DESC 表名;#查看表的列信息
6 SELECT * FROM 表名;#查看表中所有数据
7 SELECT `字段`,`字段`FROM 表名;#自定义查询表中多个字段
8 SELECT DATABASE();#查看当前所在库
9
10 UPDATE USER SET PASSWORD=PASSWORD('123456')WHERE USER='root';#修改密码
11 SET PASSWORD =PASSWORD('123456');#改密码
12 FLUSH PRIVILEGES;#刷新数据库
13 CREATE DATABASE NAME;#创建数据库
14 SELECT VERSION();#查看服务器的版本
15 #sc delete mysql 清空服务
16
17 /*
18 unsigned 无符号整数
19 zerofill 空位零补充
20 auto_InCrement 自增
21 */
22
23 #修改
24 ALTER TABLE 旧表名 RENAME AS 新表明;#修改表名
25 ALTER TABLE 表名 ADD 字段名 列属性[INT(4)];#增加表的字段
26
27 ALTER TABLE 表名 MODIFY 字段名 列属性;#修改表的字段名
28 ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性;#字段修改约束或类型
29 /*
30 change用来字段重命名,不能修改字段类型和约束
31 modify不用来字段重命名,只能修改字段类型和约束
32 */
33 #删除
34 DROP TABLE IF EXISTS 表名;#删除表
35 /*
36 为防止报错在创建和删除操作是尽量加上判断,一面报错~
37 #if exists#
38 */
39
40 SHOW CREATE DATABASE 库名;#查看数据库的定义
41 SHOW CREATE TABLE 表名;#查看数据表的定义
42
43
44 #增
45 INSERT INTO 表名(字段1,字段2,字段3,...) VALUES('值1','值2','值3')
46 /*注:字段和字段之间使用英文逗号隔开;
47 字段是可以省略的,但是后面的值必须要一一对应,不能少
48 可以同时插入多条数据,values后面的值,需要使用,隔开即可 values(),()...
49 */
50
51 #改
52 UPDATE 表名 SET `指定列名`='要改的内容',[`指定列名`='要改的内容'] WHERE [条件]
53 /*注:指定列名是数据库的列,尽量带上``
54 条件:筛选的条件如果没有指定,则会修改组欧诺的列
55 要更改的内容是一个具体的值,也可以是一个变量
56 多个设置的属性之间,使用英文逗号隔开
57 */
58
59 #删
60 DELETE FROM `表名`; -- 自增不清零
61 TRUNCATE TABLES `表名`; -- 自增清零
62
63 #查
64 SELECT `字段`,... FROM `表名`;
65
66 -- 查询指定字段
67 SELECT `employee_id`,`first_name` FROM `employees`
68
69 -- 给查询的字段取别名[AS 可以给字段和表起别名]
70 SELECT `employee_id`AS 员工ID,`first_name`AS 名字 FROM `employees`AS kin
71
72 -- 函数 Concat(a,b)
73 SELECT CONCAT('名字',`first_name`,'工资:',`salary`) AS 新名字 FROM `employees`
74
75 #去重
76 SELECT * FROM `employees`;-- 查看所以数据
77 SELECT `manager_id` AS 工种 FROM `employees`;-- 发现重复数据
78 SELECT DISTINCT `manager_id` AS 工种 FROM `employees`;-- 去重
79 --
80 SELECT VERSION();-- 查看mysql版本
81 SELECT 250*7+2500+1750+1750 AS 计算结果;-- 计算数值
82 -- 结果 +1 查看
83 SELECT `first_name` AS 员工,`manager_id` +1 AS 加薪后 FROM `employees`;
84
85 -- =============================== where查询 ===================================
86
87 -- ID 在110~130之间的数据
88 SELECT `employee_id` AS ID,`salary` AS 薪水 FROM `employees`
89 WHERE `employee_id`>=110 AND `employee_id`<=130;
90
91 -- ID 小于110或等于130的数据
92 SELECT `employee_id` AS ID,`salary` AS 薪水 FROM `employees`
93 WHERE `employee_id`<=110 || `employee_id`=130;
94 -- ID 不等于110的数据
95 SELECT `employee_id` AS ID,`salary` AS 薪水 FROM `employees`
96 WHERE `employee_id`!=100 AND `salary`>=10000;
97
98 SELECT `employee_id` AS ID,`salary` AS 薪水 FROM `employees`
99 WHERE `employee_id` BETWEEN 100 AND 110 AND `salary`<=10000
100
101 SELECT `department_id` AS 部门,`salary` AS 薪水 FROM `employees`
102 WHERE `department_id`>=90 AND NOT `salary`<=10000
103
104 -- =============================== 模糊查询 ===================================
105
106 -- like 结合[ % 表示从0到任意一个字符,_ 表示任意一个字符]
107
108 #like
109 SELECT `first_name`,`last_name` FROM `employees`
110 WHERE `first_name` LIKE 'S%'
111
112 SELECT `first_name`,`last_name` FROM `employees`
113 WHERE `first_name` LIKE 'S%'
114
115 SELECT `姓名`,`年龄`FROM `stu`
116 WHERE `姓名` LIKE '王__'
117
118 SELECT `姓名`,`年龄`FROM `stu`
119 WHERE `姓名` LIKE '%梦%'
120
121 -- in() 在某个范围内
122
123 SELECT `ID`,`姓名`FROM `stu`
124 WHERE `性别` IN('女')
125
126 -- is null is not null
127 SELECT *FROM `departments`
128 SELECT `department_name` AS 姓名,`location_id` AS 工种 FROM `departments`
129 WHERE `manager_id` IS NULL OR `department_id` IN(230,240,250)
130
131 SELECT `department_name` AS 姓名,`location_id` AS 工种 FROM `departments`
132 WHERE `manager_id` IS NOT NULL
133
134 SHOW CREATE TABLE `stu`#查询表结构
135
136 #聚合函数
137
138 SELECT COUNT(`姓名`) FROM `stu_copy`
139
140 函数名称 函数功能
141
142 COUNT() 返回选取结果集中行的数目
143
144 SUM() 返回选取结果集中所有值的总和
145
146 AVG() 返回选取结果集中所有值的平均值
147
148 MAX() 返回选取结果集中所有值的最大值
149
150 MIN() 返回选取结果集中所有值的最小值
151
152 语法:SELECT 函数(`列名`) FROM `表名`
153
154 #排序查询 order by
155 SELECT * FROM `stu_copy` ORDER BY `工资` ASC #升序
156 SELECT * FROM `stu_copy` ORDER BY `工资` DESC #降序
157 #分页函数 limit
158 SELECT * FROM `stu`
159 LIMIT 0,5
160 -- 语法:limit 起始下标,查询起始长度
161
162 #联立查询
163
164 -- INNER JOIN
165 SELECT s.`ID`,`工种`,`成绩`,`性别`
166 FROM `stu` AS s
167 INNER JOIN `stu_copy` AS c
168 WHERE s.stu=c.stu_copy
169
170 -- Right join
171 SELECT s.`ID`,`工种`,`成绩`,s.`姓名`
172 FROM `stu` AS s
173 RIGHT JOIN `stu_copy` AS c
174 ON s.`ID`=c.`ID`
175
176 -- Left join
177 SELECT s.`ID`,`工种`,`成绩`,s.`姓名`
178 FROM `stu` AS s
179 LEFT JOIN `stu_copy` AS c
180 ON s.`ID`=c.`ID`
181
182 SELECT s.`ID`,`工种`,`成绩`,s.`姓名`
183 FROM `stu` AS s
184 LEFT JOIN `stu_copy` AS c
185 ON s.`ID`=c.`ID`
186 WHERE `成绩` IS NULL
187
188 -- join (连接的表) on (判断的条件) 连接查询
189 -- where 等值查询
190
191 #方法
192 /*
193 我要查询哪些数据:select ……
194 从哪几个表中查:from 表名 左表[as *] join 连接的表[as *] on 交叉条件
195 假设存在一种多张表查询,慢慢来,先查询两张表然后在慢慢增加
196 */
197
198 #SELECT语法
199 SELECT [ALL | DISTINCT]
200 {* | table.*| [table.field1[AS alias1]][,...]]}
201 FROM table_name [AS table_alias]
202 [LEFT | RIGHT | INNER JOIN table_name2] -- 联合查询
203 [WHERE ...] -- 指定结果需满足的条件
204 [GROUP BY ...] -- 指定结果按照哪几个字段来分组
205 [HAVING] -- 过滤分组的记录必须满足的次要条件
206 [ORDER BY ...] -- 指定查询记录按一个或多个条件排序
207 [LIMIT {[OFFSET,]ROW_COUNT | row_countOFFSET OFFSET}];
208 -- 指定查询的记录从哪条至哪条
209 注意 : [ ] 括号代表可选的 , { }括号代表必选得
210
211 -- ==================== 函数 ====================
212 #数学运算
213 SELECT ABS(-8)-- 绝对值
214 SELECT CEILING(9.5)-- 向上取整
215 SELECT FLOOR(9.5)-- 向下取整
216 SELECT RAND()-- 返回0~1之间的随机数
217 SELECT SIGN()-- 判断一个数的符号 0=0 正=1 负=-1
218
219 #字符串函数
220 SELECT CHAR_LENGTH('勿以恶小而为之')-- 字符串长度
221 SELECT CONCAT('2020','2月','19日')-- 拼接字符串
222 SELECT INSERT('我爱炉石传说',2,1,'喜欢打')-- 替换字符串
223 SELECT LOWER('ScHool')-- 转换为小写字母
224 SELECT UPPER('ScHool')-- 转换为大写字母
225 SELECT INSTR('Hello word','o')-- 搜索指定字符,返回第一个发现指定字符的位置
226 SELECT REPLACE('二戒喜欢打炉石传说','喜欢','爱')-- 字符串替换函数
227 SELECT SUBSTR('我爱学习sql语言,然后学习jdbc',2,9)-- 返回指定的子字符串(源字符串,截取的位置,截取的长度)
228 SELECT REVERSE('你的生字表')-- 反转
229
230 #时间和日期函数
231 SELECT NOW()-- 获取当前时间
232 /*
233 select current_date()-- 获取当前日期
234 select curdate()-- 获取当前日期
235 select localtime()-- 本地时间
236 select sysdate()-- 系统时间
237 */
238 SELECT YEAR(NOW())-- 年
239 SELECT MONTH(NOW())-- 月
240 SELECT DAY(NOW())-- 日
241 SELECT HOUR(NOW())-- 时
242 SELECT MINUTE(NOW())-- 分
243 SELECT SECOND(NOW())-- 秒
244
245 #系统
246 SELECT SYSTEM_USER()-- 系统当前用户
247 SELECT USER()-- 系统当前用户
248 SELECT VERSION()-- 系统当前版本
249
250 -- ==================== 聚合函数 ====================
251 -- 都能够统计 表中的数据(想查询一个表中有多少个记录,就使用这个count())
252 SELECT COUNT(`ID`) FROM `copy`;-- count(列名),会忽略所有的 null 值
253 SELECT COUNT(*) FROM `copy`;-- count(*),不会忽略null值,本质计算行数
254 SELECT COUNT(1) FROM `copy`-- count(1),不会忽略所有的null值 本质计算行数
255
256 SELECT SUM(`成绩`) AS 总分 FROM `copy`-- 求和
257 SELECT AVG(`成绩`) AS 平均分 FROM `copy`-- 求平均值
258 SELECT MAX(`成绩`) AS 最高分 FROM `copy`-- 求最大值
259 SELECT MIN(`成绩`) AS 最低分 FROM `copy`-- 求最小值
260
261
262 #索引
263 SELECT * FROM `app_user` WHERE `name` ='用户999999'
264 EXPLAIN SELECT * FROM `app_user` WHERE `name`='用户999999'
265
266 -- id_表名_字段名
267 -- create index 索引名 on 表(字段)
268 CREATE INDEX id_app_user_name ON app_user(`name`)
269
270 SELECT * FROM `app_user` WHERE `name` ='用户999999'
271 /*索引在小数据量的时候,用处不大,但是在大数据的时候,局别十分明显
272 索引的原则:
273 索引不是越多越好
274 不要对进程变动数据加索引
275 小数据量的表不需要加索引
276 索引一般加在常用来查询的字段上!
277 */
278
279 -- 创建用户 create user 用户名 identified by '密码'
280 CREATE USER kin IDENTIFIED BY '123456'
281
282 -- 修改密码(修改当前用户密码)
283 SET PASSWORD=PASSWORD('123456')
284
285 -- 修改密码(修改指定用户密码)
286 SET PASSWORD FOR kin=PASSWORD('200105')
287
288 -- 重命名 rename user 原来名字 to 新的名字
289 RENAME USER kin TO kin2
290
291 -- 用户授权:all privileges on(全部的权限)库.表 to 指定用户
292 #除了给别人授权,其他都可以
293 GRANT ALL PRIVILEGES ON *.* TO kin2
294
295 -- 查看权限
296 SHOW GRANTS FOR kin2-- 查看指定用户权限
297 SHOW GRANTS FOR root@localhost
298 SHOW GRANTS FOR
299
300 SET PASSWORD FOR LONG=PASSWORD('123456')
301
302
303 #导出
304 -- 使用命令行导出 mysqldump 命令行使用
305 # mysqldump -h 主机 -u 用户名 -p 密码 数据库 表名 > 物理磁盘位置/文件名
306 mysqldump -h localhost -u root -p123456 school day1 > C:/a.sql-- 单表导出
307
308 # mysqldump -h 主机 -u 用户名 -p 密码 数据库 表名1 表名2 … > 物理磁盘位置/文件名
309 mysqldump -h localhost -u root -p123456 school day1 day2 > C:/b.sql-- 多表导出
310
311 # mysqldump -h 主机 -u 用户名 -p 密码 数据库 > 物理磁盘位置/文件名
312 mysqldump -h localhost -u root -p123456 school > C:/b.sql-- 数据库导出
313
314
315 #导入
316 -- 登录mysql的情况下
317 -- 命令行操作:source 物理磁盘位置/文件名
318 source c:/a.sql