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