如何删除安装好的数据库?
- 删除程序。进入控制面板->在程序和功能选项卡中找到 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(
`字段名` 字段类型(长度) 是否为空 默认值 注释
primary key,#primary key表示主键,AUTO_INCREMENT
not null,#not null不为空
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
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;