文章目录
前言
MySQL数据库
一、MySQL数据库使用
1.MySQL的使用
MySQL安装后,MySQL会以windows服务的方式为我们提供数据存储功能。开启和关闭服务的操作:右键点击我的电脑→管理→服务→可以找到MySQL服务开启或停止。
也可以在DOS窗口,通过命令完成MySQL服务的启动和停止(必须以管理运行cmd命令窗口)
总结:
方式1: 我的电脑-----> (右键)管理---->服务和应用程序---->服务----找到MySQL服务右键启动或关闭
方式2: 进入dos窗口 使用命令: net start mysql 开启MySQL服务; 命令:net stop mysql 关闭MySql服务
2.MySQL的登录
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。
格式1:cmd> mysql –u用户名 –p密码
例如:mysql -uroot –proot
格式2:cmd> mysql --host=ip地址 --user=用户名 --password=密码
例如:mysql --host=127.0.0.1 --user=root --password=root
二、简单SQL语句
1.什么是SQL语句
- 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。关系数据库语言的国际标准;
- 各个数据库厂商都支持ISO的SQL标准;
- 各个数据库厂商在标准基础上做了自己的扩展。
2.SQL分类
- 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
- 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
- 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。
- 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等
3.SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾;
- 可使用空格和缩进来增强语句的可读性;
- MySQL数据库的SQL语句不区分大小写,建议使用大写,例如:SELECT * FROM user;
- 同样可以使用/**/的方式完成注释。
4.数据表中的数据类型
**整数类型** :
tinyInt 很小的整数
smallint 小的整数
mediumint 中等大小的整数
int(integer) 普通大小的整数
**小数类型** :
float 单精度浮点数
double 双精度浮点数
decimal(m,d) 压缩严格的定点数
**日期类型** :
year YYYY 1901~2155
time HH:MM:SS -838:59:59~838:59:59
date YYYY-MM-DD 1000-01-01~9999-12-3
datetime YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59
timestamp YYYY-MM-DD HH:MM:SS 1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC
**文本、二进制类型** :
CHAR(M) M为0~255之间的整数
VARCHAR(M) M为0~65535之间的整数
TINYBLOB 允许长度0~255字节
BLOB 允许长度0~65535字节
MEDIUMBLOB 允许长度0~167772150字节
LONGBLOB 允许长度0~4294967295字节
TINYTEXT 允许长度0~255字节
TEXT 允许长度0~65535字节
MEDIUMTEXT 允许长度0~167772150字节
LONGTEXT 允许长度0~4294967295字节
VARBINARY(M)允许长度0~M个字节的变长字节字符串
BINARY(M) 允许长度0~M个字节的定长字节字符串
MySQL中的我们常使用的数据类型如下
5.数据库操作
- 创建数据库
格式:
create database 数据库名;
create database 数据库名 character set 字符集;
例如:
#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8
CREATE DATABASE mybase;
#创建数据库 并指定数据库中数据的编码
CREATE DATABASE mybase CHARACTER SET utf8; - 查看数据库
查看数据库MySQL服务器中的所有的数据库:show databases;
查看某个数据库的定义的信息:show create database 数据库名; - 删除数据库
drop database 数据库名称;
例如:drop database mybase; - 使用数据库
use 数据库名; - 查看正在使用的数据库
select database();
6.表相关操作
- 创建表
格式:
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
例如:
###创建分类表
CREATE TABLE sort (
sid INT, #分类ID
sname VARCHAR(100) #分类名称
);
单表约束:
主键约束:primary key,要求被修饰的字段:唯一和非空
唯一约束:unique,要求被修饰的字段:唯一
非空约束:not null,要求被修饰的自动:非空 - 主键约束
在创建表时创建主键,在字段后面加上 primary key
例如:
create table tablename(
id int primary key,
…
)
在创建表时创建主键,在表创建的最后来指定主键
例如:
create table tablename(
id int,
…,
primary key(id)
)
删除主键:alter table 表名 drop primary key
例如:
alter table sort drop primary key;
主键自动增长:一般主键是自增长的字段,不需要指定。
实现添加自增长语句,主键字段后加auto_increment(只适用MySQL)
例如:
###创建分类表
CREATE TABLE sort (
sid INT PRIMARY KEY auto_increment, #分类ID
sname VARCHAR(100) #分类名称
); - 查看表
查看数据库中的所有表:格式:show tables;
查看表结构:
格式:desc 表名;
例如:desc sort;
- 删除表
格式:drop table 表名
- 修改表
添加一列:alter table 表名 add 字段名 类型(长度) [约束]
修改列的类型(长度、约束):alter table 表名 modify 要修改的字段名 类型(长度) [约束]
修改列的列名:alter table 表名 change 旧列名 新列名 类型(长度) [约束]
删除表的列:alter table 表名 drop 列名
修改表名:rename table 表名 to 新表名
修改表的字符集:alter table 表名 character set 编码 - 插入表记录
语法:
insert into 表 (列名1,列名2,列名3…) values (值1,值2,值3…); – 向表中插入某些列
insert into 表 values (值1,值2,值3…); --向表中插入所有列
注意:
插入的数据应与字段的数据类型相同
数据的大小应该在列的长度范围内
在values中列出的数据位置必须与被加入列的排列位置相对应。
除了数值类型外,其它的字段类型的值必须使用引号引起。
如果要插入空值,可以不写字段,或者插入 null。
对于自动增长的列在操作时,直接插入null值即可。
插入数据中文乱码问题解决办法:set names 编码; - 更新表记录
语法:
update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;
注意:
列名的类型与修改的值要一致.
修改值得时候不能超过最大长度.
值如果是字符串或者日期需要加’’. - 删除表记录
语法:
delete from 表名 [where 条件];
或者
truncate table 表名;
面试题:
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:delete 一条一条删除,不清空auto_increment记录数。
truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始 - 查询操作
语法:
select [distinct] | 列名,列名 from 表名 [where条件]
查询所有
select * from 表名;
查询指定字段信息
select 字段1,字段2,…from 表名;
别名查询,使用的as关键字,as可以省略的.
别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作。
表别名格式:
select * from 表名 as 别名;
或
select * from 表名 别名;
列别名格式:
select 字段名 as 别名 from 表名;
或
select 字段名 别名 from 表名;
去掉重复值查询
distinct用于去除重复记录
select distinct 字段 from 表名;
我们在sql语句的操作中,可以直接对列进行运算。
例如:将所有账务的金额+10000元进行显示.
select pname,price+10000 from product;
条件查询
结合where进行条件查询
排序
升序查询:select … order by 字段1 asc,字段2 asc…
降序查询:select … order by 字段1 desc,字段2 desc …
例如:
商品表中价格按升序排列:select * from product order by price asc;
聚合查询
常用的聚合函数:
sum()求和
avg()平均
max()最大值
min()最小值
count()计数
注意:聚合函数不统计null值
例如:
获得所有商品价格总和:select sum(price) from product;
获得所有商品的平均价格:select avg(price) from product;
获得所有商品的个数:select count() from product; - 分组操作
group by 字段;