- 下载完之后在终端确认是否已经安装成功
-
输入cd /usr/local/mysql/bin 回车
- 输入ls回车
- 输入/usr/local/mysql/bin/mysql -uroot -p 回车
- 直接输入密码回车
确认完成可直接使用
- sql语句
|
1. sql语句就是结构化查询语句 ==>需要学习的一些指令 便于对数据库进行操作 2. sql 语句的分类 DDL DML DQL DCL DDL:主要是针对于 数据库 以及表的操作 关键字 alter drop create DML 主要是针对于 表里的数据进行操作,也就是 增加 删除 修改 insert delete update DQL 主要是针对于 表里的数据进行操作 一般用于写查询语句(重点) DCL 主要用于修改权限 运维做的 |
-DDL
|
1. 创建一个数据库 语法: create database 数据库的库名; 2. 在创建数据库的时候给其设置编码格式 语法: create database 数据库的库名 character set utf8; 3. 在创建数据库的时候 判断数据库 是否存在 语法: create database if not exists 数据库的库名; 4. 查看数据库的结构 语法: show create database 数据库的库名; 5. 修改数据库的编码格式 语法: alter database 数据库的库名 character set gbk; 6. 切换到具体的某一个数据库 语法: use 数据库的库名 ; 7. 删库 drop database 数据库的库名; 8. 查看所有的数据库 show databases; |
-数据库中的表
- 数据库中的数据类型
|
1. int: 整形 2. double: 小数 3. char: 字符串 不可以变的字符串 不管数据的多少 都会占 设置的长度 不够的使用""来代替 一般用于设置固定长度的字符型(性别 男 或者是女) 4. varchar: ==>可变 的字符串 根据数据来设置其长度 5. date: 年月日 6. datetime: 年月日 时分秒 |
创建表
语法:
create table 表明(
列名1 数据类型(长度),
列名2 数据类型(长度),
列名3 数据类型(长度)
);
注意:
| 1. 一定要切入到对应的数据库 use 数据库的名字 2. 创建表结构 show create table 表名; 3. 查看表结构 desc 表名; 4. 修改标的名字 alter table 表名 rename to 新的表名; 5. 查看当前库中所有的表 show tables; 6. 新增加一列 alter table 表名 add 列名 数据类型(长度); |
修改表
| 1. 只修改数据类型 alter table 表名 modify 列名 数据类型(长度); 2. 修改列名 alter table 表名 change 原列名 新的列名 数据类型(长度); |
可视化工具 SQLyog
- DML 语句
- 插入
1. 增加(插入一条数据):
(1) insert into 表名 (sid,sname,spwd,createTime) values (值1,值2,值3,值4)
(2) 不指定列名 按照顺序来进行插入(不常用 容易出现错误)
insert into 表名 values (插入的值1,插入的值2)
注意: 必须所有的列都要插入值
2. 插入多条数据
语法: insert into 表名 value (第一组值), (第二组值)
注意事项 :A.列名必须是表名存在的
B.列名的类型与插入值的类型要以一对应
C. 如果插入的是事件类型 一定要加上单引号
INSERT INTO student VALUES(3,“花花”,“123452”,‘2019-06-21’),(4,“翠翠”,“123457”,‘2019-04-12’):
- 修改 关键字update
1. 修改一个列的语法 update 表名 set 列名 = 数据1 where 条件
UPDATE student SET sname=“大胖” WHERE sid =3
2. 修改多个列 update 表名 set 列名=数据1,列名2=数据2 where 条件
UPDATE student SET sname=“小胖”,spwd=“123456” WHERE sid =3
3. 修改表中所有的数据 update 表名 set 列名=数据1, 列名2=数据2
注意事项 :A.列名必须是表名存在的
B.列名的类型与插入值的类型要以一对应
C. 如果插入的是事件类型 一定要加上单引号
UPDATE student SET sname=“小胖”,spwd=“123456”
- 删除 关键字delete
- 语法 delete from 表名 where 条件
DELETE FROM student WHERE sid=2
- 删除所有的数据 delete from 表名 一定要慎用
DELETE FROM student
总结:增加删除修改 会对数据库的数据产生影响,查询不会对数据产生影响
- DQL 语句
查询语句的关键子是select * from
1. 表示查询所有的数据,也可以根据具体的字段来查询指定的列
-
在查询的过程可以做一些相应的计算
#查询结果是表达式(运算查询):将所有商品的价格+10元进行显示
-
去重复 DISTINCT
-
设置别名 关键字是 as as可以给表 设置 也可以列设置 as可以省略
-
根据条件来进行查询 关键字: where or 或者 and 并且 between and 在什么范围之类 in(20,30) 或者
- 模糊查询 like % 匹配所以 _匹配一个字符
- is not null is null 这里null 并不是""
- 分页查询的关键字 limit 参数1, 参数2 参数1表示数据索引 参数2表示页量
- 升序 与降序 order by asc 升 desc 降
- 聚合函数 count() sum() max() min() avg()
- 分组 关键字 group by
- 分组关键字 group by
-
过滤使用的是 having
having 过滤 与where的区别 一个是分组前where having是在分组后
- 查询语句不能随便调换位置
SQL练习
#查询product表中所有记录 SELECT * FROM product #查询product表中pid和pname字段 SELECT pid,pname FROM product #查询product表中所有的电脑办公记录 SELECT * FROM product WHERE category_name = \'电脑办公\' #查询结果是表达式(运算查询):将所有商品的价格+10元进行显示. SELECT pname,price+10 FROM product #查询商品名称为“花花公子”的商品所有信息: SELECT * FROM product WHERE pname = \'花花公子\' #查询价格为800商品 SELECT * FROM product WHERE price=800 #查询价格不是800的所有商品 SELECT * FROM product WHERE price !=800 #查询商品价格大于60元的所有商品信息 SELECT * FROM product WHERE price>60 #查询商品价格在200到1000之间所有商品 SELECT * FROM product WHERE price BETWEEN 100 AND 1000 #查询商品价格是200或800或者2000的所有商品 SELECT * FROM product WHERE price=200 OR price=800 OR price=2000 SELECT * FROM product WHERE price IN(200,800,2000) #查询含有\'霸\'字的所有商品 SELECT * FROM product WHERE pname LIKE \'%霸%\' #查询以\'香\'开头的所有商品 SELECT * FROM product WHERE pname LIKE \'香%\' #查询第二个字为\'想\'的所有商品 SELECT * FROM product WHERE pname LIKE \'_想%\' #商品没有分类的商品 SELECT * FROM product WHERE category_name IS NULL #查询有分类的商品 SELECT * FROM product WHERE category_name IS NOT NULL #1.使用价格排序(降序) SELECT * FROM product ORDER BY price DESC #2.在价格排序(降序)的基础上 #若价格相同,相同价格的数据以pid降序排序 SELECT * FROM product ORDER BY price DESC,pid DESC #1 查询商品的总条数 SELECT COUNT(*)AS "总记录数" FROM product SELECT COUNT(1) FROM product #查看商品总价格、最大价格、最小价格、价格的平均值 SELECT SUM(price)AS 总价格,MAX(price)AS 最大值,MIN(price)AS 最小值,AVG(price)AS 平均价格 FROM product #2 查询价格大于200商品的总条数 SELECT COUNT(1) FROM product WHERE price>200 #3 查询分类为\'电脑办公\'的所有商品的总记录 SELECT COUNT(1) FROM product WHERE category_name=\'电脑办公\' #4 查询分类为\'服装\'所有商品的平均价格 SELECT AVG(price)AS 平均价格 FROM product WHERE category_name=\'服装\' # 统计各个分类下商品的个数 SELECT COUNT(1),category_name FROM product GROUP BY category_name #统计各个分类商品的个数,有且 只显示分类名称不为空值的数据 SELECT COUNT(1),category_name FROM product GROUP BY category_name HAVING category_name IS NOT NULL #分页查询 SELECT * FROM product LIMIT 0,3 SELECT * FROM product #去重复 SELECT DISTINCT price FROM product
SQL练习
CREATE TABLE stu ( sid CHAR(6), sname VARCHAR(50), age INT, gender VARCHAR(50) ); INSERT INTO stu VALUES(\'S_1001\', \'liuYi\', 35, \'male\'); INSERT INTO stu VALUES(\'S_1002\', \'chenEr\', 15, \'female\'); INSERT INTO stu VALUES(\'S_1003\', \'zhangSan\', 95, \'male\'); INSERT INTO stu VALUES(\'S_1004\', \'liSi\', 65, \'female\'); INSERT INTO stu VALUES(\'S_1005\', \'wangWu\', 55, \'male\'); INSERT INTO stu VALUES(\'S_1006\', \'zhaoLiu\', 75, \'female\'); INSERT INTO stu VALUES(\'S_1007\', \'sunQi\', 25, \'male\'); INSERT INTO stu VALUES(\'S_1008\', \'zhouBa\', 45, \'female\'); INSERT INTO stu VALUES(\'S_1009\', \'wuJiu\', 85, \'male\'); INSERT INTO stu VALUES(\'S_1010\', \'zhengShi\', 5, \'female\'); INSERT INTO stu VALUES(\'S_1011\', \'xxx\', NULL, NULL); -- 查询性别为女,并且年龄大于等于50的记录 SELECT sid,sname FROM stu WHERE gender=\'female\' AND age>=50; -- 查询学号为S_1001,或者姓名为liSi的记录 SELECT sid,sname FROM stu WHERE sid=\'s_1001\' OR sname=\'lisi\'; -- 查询学号为S_1001,S_1002,S_1003的记录 SELECT * FROM stu WHERE sid IN(\'s_1001\',\'s_1002\',\'s_1003\'); -- 查询学号不是S_1001,S_1002,S_1003的记录 SELECT * FROM stu WHERE sid !=\'S_1001\'AND sid !=\'S_1002\'AND sid !=\'S_1003\'; SELECT * FROM stu WHERE sid NOT IN(\'s_1001\',\'s_1002\',\'s_1003\'); -- 查询年龄为null的记录 SELECT * FROM stu WHERE age IS NULL; -- 查询年龄在20到40之间的学生记录 SELECT * FROM stu WHERE age>=20 AND age<=40 SELECT * FROM stu WHERE age BETWEEN 20 AND 40 -- 查询性别非男的学生记录 SELECT * FROM stu WHERE gender != \'male\' -- 查询姓名不为null的学生记录 SELECT * FROM stu WHERE sname IS NOT NULL; SELECT * FROM stu WHERE NOT sname IS NULL; -- 查询姓名由5个字母构成的学生记录,一个_表示一个字母 SELECT * FROM stu WHERE sname LIKE \'_____\' -- 查询姓名由5个字母构成,并且第5个字母为“i”的学生记录,4个_+i SELECT * FROM stu WHERE sname LIKE \'____i\' -- 查询姓名以“z”开头的学生记录 SELECT * FROM stu WHERE sname LIKE \'z%\' -- 查询姓名中第2个字母为“i”的学生记录 SELECT * FROM stu WHERE sname LIKE \'_i%\' -- 查询姓名中包含“a”字母的学生记录 SELECT * FROM stu WHERE sname LIKE \'%a%\' INSERT INTO stu VALUES(\'s_112\',\'花花1\',23,\'male\'),(\'s_113\',\'花花2\',23,\'male\'); UPDATE stu SET sname = \'虾米\' WHERE sid = \'s_112\' DELETE FROM stu WHERE sid = \'s_113\'