MySQL入门
姥姥家的程序员带你走进数据库的入门
此篇博客献给想入门计算机数据库的小白,如果那里写错,请留言或者私信,愿与大家一起成长。
什么是数据库(数据库的概念,DB:DataBase)
- 数据库概念: 数据库就是存储数据的仓库,本质上讲,数据库就是一种文件系统。
- 数据库管理系统概念: 管理数据库文件
MySQL数据库的安装
-
数据库安装包以及SQLyog下载网盘链接:
链接:https://pan.baidu.com/s/1L8JUYIGvKvpL3zPXs8reMw
提取码:a2p1 -
安装步骤:
4. 数据库操作工具SQLyog的下载使用: 在文章开头提供的百度网盘链接里面有SQLyog的压缩包,解压后直接使用即可。
5. SQL语句的分类:
(1)数据定义语言(DDL): 主要是用来操作数据库中的对象,例如数据库,表,字段。
(2)数据操作语言(DML): 主要用来操作表中的数据,对数据进行增删改。
(3)数据查询语言(DQL ): 主要用来操作表中的数据,对数据进行各种过滤查询。
(4)数据库控制语言(DCL): 主要定义数据库的访问权限和安全级别,及创建用户等。
6. SQL语句的语法和数据类型:
(1)以分号结尾。例如 select * from users;
(2)不区分大小写,但是关键字建议大写。例如 SELECT * FROM users;
(3)注释 /* */、 #、–空格
(4)数据类型(常用):1.整形(int)2.小数(double)3.字符创(varchar(字符串的长度)) 4.时间(data 只显示年月日)
数据库定义语言(DDL)
一、DDL之操作数据库
-
增: 创建一个数据库。关键字(create)
(1)语法:
create database 数据库名字; ------使用默认编码格式创建数据库
create database 数据库名字 charset 编码名字;------使用特定的编码格式创建数据库
(2)示例:
CREATE DATABASE users;
CREATE DATABASE users CHARSET gbk; -
删: 删除一个已经“存在”的数据库。关键字(drop)
(1)语法:
drop database 数据库名;
(2)示例:
DROP DATABASE users; -
改: 更改数据库。一般不做更改,因为数据库一旦更改,与之匹配的程序内部结构也需要作出很多更改。但是可以更改正在使用的数据库。
(1)语法:
use 数据库名;
(2)示例:
use users; -
查: 查看数据库。
(1)语法:
查看全部数据库:SHOW DATABASES;
查看某一个数据库的详细信息:SHOW CREATE DATABASE 数据库名;
(2)示例:
查看某一个数据库的详细信息:SHOW CREATE DATABASE users ;
查看当前正在使用的数据库:SELECT DATABASE();
二、DDL之操作表(下面操作中的[],代表可选配置)
-
增: 创建一张表。
(1)语法:
create table 表名(
字段名1 数据类型(长度) [约束],
字段名2 数据类型(长度),
字段名3 数据类型(长度)
);
约束:PRIMARY KEY 主键约束,要求该列的值 唯一且不为空
(2)示例:
CREATE TABLE users(
uid INT PRIMARY KEY,
uname VARCHAR(20),
uage INT
); -
删除: 删除已经存在的表
(1)语法:
drop table 表名;
(2)示例:
DROP TABLE users; -
改: 修改某张表
(1)语法:
修改名字:rename table 旧表名 to 新表名;
(2)示例:
RENAME TABLE users TO roles; -
查: 查看表
(1)语法:
查看所有表:show tables;
查看某一张表的信息:desc 表名;
(2)示例:
查看某一张表的信息:desc roles;
三、DDL之操作字段
-
增: 向表中添加一列。
(1)语法:
alter table 表名 add 列名 数据类型(长度) [约束];
(2)示例:
ALTER TABLE userss ADD phone VARCHAR(20); -
删: 从表中删除一列。
(1)语法:
alter table 表名 drop 列名;
(2)示例:
ALTER TABLE userss DROP phone; -
改: 修改表中的某一列。
(1)语法:
修改列名:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
修改数据类型和约束:alter table 表名 modify 列名 类型(长度) 约束;
(2)示例:
修改列名:ALTER TABLE userss CHANGE uname username VARCHAR(20);
修改列的数据类型和约束:ALTER TABLE userss MODIFY username VARCHAR(40); -
查: 查看所有列(就是查看表的信息)
(1)语法:
desc 表名;
(2)示例:
desc roles; -
其他: 修改编码
(1)语法:
alter table 表名 character set 字符集;(一般不修改)
(2)示例:
ALTER TABLE userss CHARSET gbk;
数据操作语言(DML):对数据进行操作。
-
增: 向表中添加一条记录
(1)语法:
insert into 表名 (字段1,字段2…) values (值1,值2…);
insert into 表名 VALUES (值1,值2…);
(2)注意:
字段名和值 顺序和数据类型要一一对应。
在值中,除了整数可以直接写,其他的必须用" "或者’ ‘引起来。建议是’ '。
语法中的第二种写法,插入数据库中的值要是全部字段的值切值得类型必须匹配。
(2)示例:
创建一张商品分类表:
CREATE TABLE category(
cid INT PRIMARY KEY AUTO_INCREMENT,-- id 唯一不能为空,自动增长
cname VARCHAR(20)
);
向表中添加一条记录
INSERT INTO category (cid,cname) VALUES (1,‘服装类’);
INSERT INTO category VALUES (2,‘烟酒类’);
INSERT INTO category VALUES (NULL,‘饮料类’);
注:因为使用了AUTO_INCREMENT的约束,所以可以给该字段插入null值,插入进去的数据会自动增加。 -
删: 从表中删除一条记录
(1)语法:
delete from 表名;------清空表,但是不清空自动增长的数值
truncate table 表名;------摧毁并重新创建,不仅会清空数据,而且也是重置自动增长值
delete from 表名 where条件------条件删除
(2)示例:
删除数据
DELETE FROM category;
摧毁表并重新创建
TRUNCATE TABLE category;
条件删除
DELETE FROM category WHERE cid = 3; -
改: 修改表中的某一条记录
(1)语法:
update 表名 set 字段名1=值1,字段名2=值2;
update 表名 set 字段名1=值1,字段名2=值2 where 条件;
(2)示例:
修改表的记录(将category表中的字段为cname的内容全部替换为"饮料类")
UPDATE category SET cname=‘饮料类’;
修改表的记录带有条件(将category表中的字段为cname并且cid为2的全部替换为"玩具类")
UPDATE category SET cname=‘玩具类’ WHERE cid = ‘2’;
数据查询语言(DQL)
一、简单查询
- 查询关键字: select from where
-
查询格式: select [distinct] *|字段1 [as] 别名1,字段2 [as] 别名2 from 表 where条件;
中括号表示 该关键字可以省略 -
示例:
(1)查询所有字段
SELECT * FROM category;
(2)查询某几个或者一个字段
SELECT cid,cname FROM category;
SELECT cname FROM category;
(3)查询去掉重复值
SELECT DISTINCT price FROM product;
(4)查询结果是表达式(运算查询):将所有商品的价格+10元进行显示
SELECT pname,price*1.2 FROM product;
(5)别名查询.使用的关键字是as(as可以省略的)
SELECT pname 商品名字,price+10 打折价格 FROM product;
二、条件查询
-
常用的查询条件:
(1)比较元算符:
> < >= <= = != <>
between 数值 and 数值(包括两个数值在内)
in(100,200,300) (表示查询的值在"in"里面)
like ‘_冬%’ 查询第二个是冬的(’_‘表示1个位置,’%'表示n个位置)
is null 以及 is not null
(2)逻辑运算符:
and or not -
条件查询练习:
(1)查询商品名称为“花花公子”的商品所有信息:
SELECT * FROM product WHERE pname=‘花花公子’;
(2)查询价格为800商品
SELECT * FROM product WHERE price=800;
(3)查询价格不是800的所有商品
SELECT * FROM product WHERE price <> 800;
SELECT * FROM product WHERE NOT (price=800);
SELECT * FROM product WHERE price !=800;
SELECT * FROM product WHERE price NOT IN (800);
(4)查询商品价格大于60元的所有商品信息
SELECT * FROM product WHERE price > 60;
SELECT * FROM product WHERE NOT (price <= 60);
(5)查询商品价格在200到1000之间所有商品
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;
SELECT * FROM product WHERE price >=200 AND price <=1000;
(6)查询商品价格是200或800的所有商品
SELECT * FROM product WHERE price IN (200,800);
SELECT * FROM product WHERE price = 200 OR price = 800;
(7)查询含有’霸’字的所有商品
SELECT * FROM product WHERE pname LIKE ‘%霸%’;
(8)查询以’香’开头的所有商品
SELECT * FROM product WHERE pname LIKE ‘香%’;
(9)查询第二个字为’想’的所有商品
SELECT * FROM product WHERE pname LIKE ‘_想%’;
(10)查询没有分类的商品
SELECT * FROM product WHERE category_id IS NULL;
(11)查询有分类的商品
SELECT * FROM product WHERE category_id IS NOT NULL;
(12)查询所有价格大于2000的电脑商品(catetory_id是c001)或者价格大于2000的服装商品(catetory_id是c002)
SELECT * FROM product WHERE price > 2000 AND category_id IN (‘c001’,‘c002’);