MySQL数据库(一)建库建表、CRUD

如何删除安装好的数据库?

  1. 删除程序。进入控制面板->在程序和功能选项卡中找到 MySQL,右键卸载。

  2. 删除安装文件夹下的所有内容。找到 MySQL 的安装路径,然后删除路径下所有文件
  3. 删除注册表。Windows+R 打开运行命令框,输入 regedit 回车,删除以下 3 个地方的
    注册文件:

    1. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录
      删除

    2. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录
      删除

    3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
      目录删除

  4. 最重要的一点:进入 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)

  1. 修改表名:ALTER TABLE 旧表名 RENAME AS 新表名
  2. 添加字段:ALTER TABLE 表名 ADD字段名 列类型
  3. 修改字段:ALTER TABLE 表名 MODIFY字段名 列类型
  4. 修改字段二:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型
  5. 删除字段:ALTER TABLE 表名 DROP 字段名
  6. 删除 数据表: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; 

转载于:https://www.cnblogs.com/in-the-game-of-thrones/p/11320858.html

你可能感兴趣的:(数据库,java,操作系统)