如何删除安装好的数据库?
-
删除程序。进入控制面板->在程序和功能选项卡中找到 MySQL,右键卸载。
- 删除安装文件夹下的所有内容。找到 MySQL 的安装路径,然后删除路径下所有文件
-
删除注册表。Windows+R 打开运行命令框,输入 regedit 回车,删除以下 3 个地方的
注册文件:-
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录
删除 -
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录
删除 -
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
目录删除
-
-
最重要的一点:进入 C 盘,选中查看->勾选“隐藏的项目”,然后下面就出来隐藏目
录(ProgramData)了,进入其中,删除 MySQL 文件夹。这样才算是完整卸载干净了,最后就可以重新安装 Mysql 了
SQL(Structured Query Language):结构化查询语言
DDL(数据定义语言):定义和管理数据对象,如数据库、数据表等:CREATE、DROP、ALTER
DML(数据操作语言):用于操作数据库对象中所有包含的数据:INSERT、UPDATE、DELETE
DQL(数据查询语言):用于查询数据库数据:SELECT
DCL(数据控制语言):用来管理数据库的语言,包括管理权限及数据更改:GRANT、COMMIT、ROLLBACK
登录MySQL : mysql -h localhost -u root -p 密码
显示当前所有数据库名:show databases;
使用当前数据库名:use 数据库名;
显示当前数据库下所有数据表:show tables;
显示数据库表结构的详情描述:desc 表名;
查询摸一张数据表的数据:select * from 表名;
创建数据库:create database 数据库名 charset utf8;
复制表(包含数据与结构):CREATE TABLE 新表名 AS SELECT * FROM 已存在表名;
创建数据库表:
create table Commodity(
`字段名` 字段类型(长度) 是否为空 默认值 注释
ID varchar(12) primary key,# primary key表示主键,AUTO_INCREMENT 表示自增
name varchar(20) not null,#not null不为空
manufacture varchar(20) DEFAULT NULL COMMIT '注释',#COMMIT 定义注释内容
price decimal(4,2)#decimal 表示 字符串形式的浮点数
);
修改表(ALTER TABLE)
- 修改表名:ALTER TABLE 旧表名 RENAME AS 新表名
- 添加字段:ALTER TABLE 表名 ADD字段名 列类型
- 修改字段:ALTER TABLE 表名 MODIFY字段名 列类型
- 修改字段二:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型
- 删除字段:ALTER TABLE 表名 DROP 字段名
- 删除 数据表:DROP TABLE [IF EXISTS] 表名
WHERE中的运算符:=等于、<>或!=不等于、>大于、<小于、>=大于等于、<=小于等于、BETWEEN在某个范围之间(包前包后)、AND 并且、OR 或
DELETE FROM 表名[WHERE 条件];delete删除,主键索引从最大的基础上自增;
TRUNCATE [TABLE] 表名;使用truncate删除,表示表的数据与结构都被删除,表都不存在了,(删除的数据块,对事物无影响)
DROP TABLE 表名;使用drop 删除,主键索引重新开始计算
SELETE语法:
select {* | table.* | 字段名 as 别名,.....}
FROM 表名 [as 别名]
[left | out | inner join 表名]#联合查询
[WHERE ...]#指定结果需满足的条件
[GROUP BY...]#指定结果按照哪几个字段来分组
[HAVING...]#过滤分组的记录必须满足的次要条件
[ORDER BY ...]#指定查询记录安一个或者多个条件排序
[LIMIT {[offse,] row_count | row_count OFFSET offset}];#指定行数
注意:[]表示可选,{}表示必须,#表示注释
关联查询:SELECT s.sName , r.rName FROM student AS s , role AS r WHERE s.rid = r.rid;
子查询:在查询语句中的WHERE条件子句中,有嵌套了另外一个查询语句,求解的方式是由里及外;
SELECT * FROM 表名1 WHERE id in (SELECT id FROM 表名2 WHERE 字段 = "值");
内连接:inner join
等值和非等值的连接查询
自身连接查询
(方式一:)SELECT 字段1,字段2, ******FROM 表名1 INNER JOIN 表名2 ON 表名1.字段 = 表名2.字段;
(方式二:)SELECT 字段1,字段2,。。。 FROM 表名1 , 表名2 WHERE 表名1.字段 = 表名2.字段;
外连接:out join
左连接:(LEFT JOIN):以左表为主,返回左表中所有记录,即使在右表中没有匹配的行
SELECT 字段1,字段2,。。。 FROM 表名1 LEFT JOIN 表名2 ON 表名1.字段 = 表名2.字段;
右连接:(RIGHT JOIN):已右表为主,返回右表中所有的记录,即使在左表中没有匹配的行
SELECT 字段1,字段2,。。。FROM 表名1 RIGHT JOIN 表名2 ON 表名1.字段 = 表名2.字段;
DISTINCT关键字:去掉SELECT 查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。
SELECT DISTINT 字段名,字段名...FROM 表名;
NULL空值条件查询:需要使用IS NULL 或 IS NOT NULL 比较操作符比较
IN 关键字:SELECT 字段列,...FROM 表名 WHERE 字段名 IN (值1,值2...);
LIKE关键字:SELECT 字段列... FROM 表名 WHERE 字段名 LIKE "%值%";
LIMIT 偏移量(从0开始) , 显示的容量;
MySQL的统计函数
COUNT(1) 统计记录总和数
SUM() 统计数字字段或表达式列作统计,返回一列的总和
MAX() 统计数字字段或表达式列作统计,返回一列的最大的值
MIN() 统计数字字段或表达式列作统计,返回一列的最小值
AVG() 统计数字字段或表达式列作统计,返回一列的平均值
使用 GROUP BY 对查询结果分组,分组的依据字段可以有多个,并依次分组,与HAVING结合使用,进行分组后的数据筛选
添加个示例
1 #在cmd中操作mysql 2 #关闭MySQL 3 net stop mysql 4 5 #打开MySQL 6 net start mysql 7 8 #登录MySQL 9 mysql -h localhost -u root -p 密码 10 11 #查看所有的数据库,注意分号 12 show databases; 13 14 #导入数据库,必须在mysql中有这个数据库名,登录mysql数据库,切换到需要导入的这个数据库后 15 source D:/LQ-Space/练习作业/dbschool #注意 导入你的sql脚本所在的路径,在win7中使用 / 斜杠 16 17 #导出数据库 18 mysqldump -h localhost -u root -p 数据库名 > 导出的文件绝对路径(如 D:/mysql.sql) 19 20 #cmd 建库,建表,CRUD 数据库的表; 21 DROP TABLE t_user; #删除数据表; 22 DROP DATABASE java1302; #删除数据库; 23 CREATE DATABASE java1302; #创建数据库; 脚本sql; 24 25 DROP TABLE IF EXISTS t_user6 ; 26 CREATE TABLE IF NOT EXISTS t_user6 ( #t_user 自己定义的表名,t_jd_prod_product; 27 uid INT PRIMARY KEY AUTO_INCREMENT, #uid自己定义的列名,2的32次方-1 28 uname VARCHAR(20) UNIQUE COMMENT '用户名', #20代表的是字符串的长度; UNIQUE 唯一索引; 29 upwd VARCHAR(20) COMMENT '密码', #最后一个列没有逗号; 30 usex VARCHAR(2) DEFAULT '男' NOT NULL COMMENT '性别' 31 )ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT '用户信息表' 32 33 #插入一行数据; 34 INSERT INTO t_user (uname,upwd) VALUES ('cengya','666'); 35 #修改一行数据; 36 UPDATE t_user SET upwd = '666666' WHERE uid = 1; 37 #删除一行数据; 38 DELETE FROM t_user WHERE uid =2; 39 #查询所有数据; 40 SELECT * FROM t_user; #* 查询所有的字段(列) 41 SELECT upwd FROM t_user WHERE uid = 1; #只查询uid=1的密码; 42 43 #查询有工资的员工 ; 44 SELECT * FROM t_user u WHERE u.`usalary` IS NOT NULL; 45 46 47 USE java1302; #切换数据库; 48 49 #重新给表命名; 50 ALTER TABLE t_user7 RENAME AS t_user8; 51 52 #给表添加一个字段; 53 ALTER TABLE t_user8 ADD uaddress VARCHAR(50) DEFAULT '深圳市大冲村' COMMENT '用户的地址'; 54 55 #修改表的字段的属性; 56 ALTER TABLE t_user8 MODIFY uaddress VARCHAR(100) ; 57 58 #删除表的字段; 59 ALTER TABLE t_user8 DROP uaddress; 60 61 #给表的列重新全名; 62 ALTER TABLE t_user8 CHANGE uaddress uaddr VARCHAR(50) DEFAULT '深圳大冲' COMMENT '用户地址'; 63 64 #删除数据表; 65 DROP TABLE IF EXISTS t_user4; 66 67 68 #insert 多条插入语句: 69 INSERT INTO t_user8 70 (uname,upwd,usex,uaddr) VALUES 71 ('张奇4','222','男','深大4'), 72 ('张奇4','222','男','深大4'), 73 ('张奇4','222','男','深大4'), 74 ('张奇4','222','男','深大4'), 75 ('张奇4','222','男','深大4'), 76 ('张奇4','222','男','深大4'), 77 ('张奇5','222','男','深大5'); 78 79 #update语句; 可以同时更新多个字段的值; 后面记得要带上条件,如果没有条件下,就是全部更新的。 80 UPDATE t_user8 u 81 SET 82 u.`uname`='wanjun', 83 u.`uaddr`='大冲商务国际大厦1301', 84 u.`usex`='女', 85 u.`upwd`='666' 86 WHERE uid=1; 87 88 SELECT * FROM t_user8 u WHERE u.`upwd` != '222'; 89 SELECT * FROM t_user8 u WHERE u.uid >=20 AND u.uid<=29; 90 SELECT * FROM t_user8 u WHERE u.uid BETWEEN 20 AND 29; 91 SELECT * FROM t_user8 u WHERE u.uid >=20 AND u.uid<=29 AND u.`upwd`='111' 92 93 94 #delete 删除语句 #如果有自增长,则在原来最大数的基础上继续加1; 95 DELETE FROM t_user8 WHERE uid BETWEEN 20 AND 29; 96 97 #TRUNCATE 删除语句 如果有自增长,则重新开始计数; ; 98 TRUNCATE TABLE t_user8; 99 100 #drop 删除语句 101 DROP TABLE t_user8 ; #表也删除了,表不存在了。 102 103 #select 字段名 from 表名 where 条件(过滤) 104 SELECT uid,uname,upwd,usex,uaddr FROM t_user8 u WHERE u.`uname`='张奇5'; 105 106 #别名用法; 表的别名,字段的别名; as 可以省略; 107 SELECT u.`uname` AS 用户名, r.`rname` AS 角色名 108 FROM t_user8 AS u, t_role AS r WHERE r.`rid`= u.`urid`; 109 110 # DISTINCT : 去掉重复的; 111 SELECT DISTINCT u.`upwd` FROM t_user8 u; 112 113 #表达式列; 114 SELECT 9.1*9.8; 115 SELECT u.`uname`, u.`total` 加分前, u.`total`+10 加分后 FROM t_user8 u 116 WHERE u.total <=700; 117 UPDATE t_user8 u SET u.`total` = u.`total`+10 WHERE u.`total`<=700; 118 119 #null; 120 SELECT * FROM t_user t WHERE t.`t_indentify_card` IS NOT NULL; 121 122 #not: 子查询; 123 SELECT * FROM t_user t WHERE t.`u_rid` NOT IN (1,2,3,4,5); 124 SELECT * FROM t_user t WHERE t.`u_rid` NOT IN (SELECT r.`t_rid` FROM t_roles r); 125 126 #in 子查询; 127 SELECT * FROM t_user8 u WHERE u.`urid` IN (4,5,6); 128 SELECT * FROM t_user8 u WHERE u.`urid` NOT IN (1,2,3); 129 130 #BETWEEN 指定范围查询 131 SELECT * FROM t_user8 u WHERE u.`urid` BETWEEN 4 AND 6; 132 SELECT * FROM t_user8 u WHERE u.`urid` NOT BETWEEN 1 AND 3; 133 134 # like 模糊查询; %: 0-多个字符; _ 1个字符 135 SELECT * FROM t_user8 u WHERE u.`uname` LIKE '张%' 136 SELECT * FROM t_user8 u WHERE u.`uname` LIKE '%张' 137 SELECT * FROM t_user8 u WHERE u.`uname` LIKE '%张%' 138 SELECT * FROM t_user8 u WHERE u.`uname` LIKE '_张_' 139 140 #内连接; (以下两种内连接效果是等价的!)只显示两张表都有的信息,如果有一张表中没有,则不显示 141 SELECT * FROM t_user8 u, t_role r WHERE u.`urid`= r.rid; 142 SELECT * FROM t_user8 u INNER JOIN t_role r ON r.`rid`= u.`urid`; 143 144 #外连接: 左外连接; 以左表数据为主(查左表所有数据),右表中没有对应的的数据用null; 145 SELECT * FROM t_user8 u LEFT JOIN t_role r ON r.`rid`=u.`urid`; 146 147 #外连接: 右外连接; 以右表数据为主(查右表所有数据),左表中没有对应的的数据用null; 148 SELECT * FROM t_user8 u RIGHT JOIN t_role r ON r.`rid`=u.`urid`; 149 150 # order by 排序; asc 默认升序; DESC 倒序 151 SELECT * FROM t_user8 u ORDER BY u.`urid` DESC; 152 153 # limit 分页; 每页3条,共计8条,所以可以分为3页,其中前2页为3条,第3页2条; 请查出第三页的数据; 154 # pageIndex:第几页,pageSize:每页的行数;==>通用的公式化: limit (pageIndex-1)*pageSize, pageSize 155 156 SELECT * FROM t_user8 LIMIT 0,3; #第1页 157 SELECT * FROM t_user8 LIMIT 3,3; #第2页 158 SELECT * FROM t_user8 LIMIT 6,3; #第3页 159 160 161 #in 子查询 162 SELECT * FROM t_user8 u WHERE u.`urid` IN ( 163 SELECT t.`rid` FROM t_role t WHERE t.`rname` IN ('java讲师','web讲师','UI讲师')); 164 165 #聚合函数; count(); 返回有多少行数据; 166 SELECT COUNT(*) 行数 FROM t_user8; 167 168 SELECT SUM(total) 总分 FROM t_user8; 169 170 SELECT AVG(total) 平均分 FROM t_user8; 171 172 SELECT SUM(total)/COUNT(*) FROM t_user8; 173 174 SELECT MAX(total) 最高分 FROM t_user8; 175 176 SELECT MIN(total) 最低分 FROM t_user8; 177 178 #分组查询; group by; 179 SELECT u.usex 性别, MAX(total) 最高分 FROM t_user8 u GROUP BY u.usex; 180 SELECT u.usex 性别, MIN(total) 最低分 FROM t_user8 u GROUP BY u.usex; 181 SELECT u.usex 性别, AVG(total) 平均分 FROM t_user8 u GROUP BY u.usex; 182 SELECT u.usex 性别, SUM(total) 总分 FROM t_user8 u GROUP BY u.usex; 183 SELECT u.usex 性别, COUNT(*) 人数 FROM t_user8 u GROUP BY u.usex;