数据库
一、基本概念
**概念:**用于存储和管理数据的仓库。
特点:
- 持久化存储数据的。其实数据库就是一个文件系统。
- 方便存储和管理数据。
- 使用统一的发生方式操作数据库—sql语句。
常见的数据库软件:
Oracle:收费的大型数据库。
MySql:开源免费的小型数据库,1.6之后开始收费。
Microsoft SQL Server:收费中型数据库系统。
DB2:IBM 收费的大型数据库系统,常用语银行系统。
SQLite:嵌入式小型数据库,应用在手机端。
二、mysql
0.安装和卸载
MySQL配置
1.启动mysql服务
cmd->services.msc打开服务窗口,手动启动或关闭mysql服务- 管理员权限运行cmd,启动和停止mysql服务
net start mysql net stop mysql
2.登录和退出
**登录:**本地访问:mysql -uroot -ppassword
远程访问:mysql -h127.0.0.1 -uroot -ppassword mysql --host=127.0.01 --user=root --password=password
**退出:**quit 或者 exit
三、SQL
1.SQL基本概念和通用语法
**基本概念:**Structured Query Language:结构haunted查询语言,定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为方言。
通用语法:
- SQl语句可以单行或多行书写,以分行结尾。
- 使用空格或者缩进来增强可读性。
- 数据库SQL语句不区分大小写,但是建议关键字用大小写区分。
- 注释:单行 [-- ]或者 [#] 多行[/* 注释内容*/]
2.数据库、表、记录及权限的操作

(1)DDL(Data Definition Language):用来定义数据库对象,操作数据库、表和列等。
1)操作数据库:CRUD
- C(Create)创建:
创建数据库:create database db1;创建数据库之前判断是否存在:create database if not exists db2;创建同时设置字符集:create database db3 character set gbk;综合:create database if not exists db4 character set gbk - R(Retrieve)查询:
查询所有数据库:show databases;查询数据库字符集:show create database mysql; - U(Update)修改:
alter database db3 character set utf8; - D(Delete)删除:
drop database db4;drop database if exists db3; - 使用数据库:
当前正在使用的数据库:select database();使用数据库:use db1
2)操作表
-
C(Create)创建:
create table_name(colum1 character,olum2 character,···olumn character);复制表:create table stu like student;实例:create table student(id int,name varchar(32),age int,score double(4,1),birthday date,insert_time timestamp);sql中的数据类型:
int :整数类型 age int;
double:小数类型 score double(5,2); 五位数,保留两位小数
date:日期类型,只包含年月日信息 yyyy-MM-dd
datatime:日期格式,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
timestamp:时间戳类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果不给这个字段赋值或者赋值为null,则默认使用系统当前时间作为此记录的值。
varchar:字符串类型:name vachar(20);最大20个字符,超过就会报错。
-
R(Retrieve)查询:
查询正在使用的数据库中的所有表:show tables;查询表结构:desc table_name; -
U(Update)修改:
修改表名:alter table table_name1 rename to tabole_name2;①查看字符集:show create table table_name;②修改字符集:alter table character set utf8;添加一列:alter table table_name add column_name character;修改列名:①alter table table_name change column old_name new_name character_new l例如alter table user change column phone gender varchar(5);;alter table table_name modify column_name character_new ②删除列:alter table table_name drop column_name; -
D(Delete)删除:
drop table if exists table_name;
(2)DML(Data Manipulation Language):数据库操作语言,用来对表中的数据进行增删改。
-
添加数据:
insert into table_name(column_name1,···column_namen) values(value1,···valuen);查看表中记录:select * from table_name注意事项:
- 列名和值一一对应
- 如果表名后,不定义列名,则默认给所有列添加值:insert into table_name values(所有列的值都需要写);
- 除了数字类型,其它类型需要使用引号包裹起来,单双都可以。
-
删除数据:
delete from table_name [condition]delete form table db1 where id=1;注意事项:
不加条件,则删除表中所有记录。为了删除表中所有记录可以使用
删除表然后创建一个一模一样的空表TRUNCATE TABLE table_name;这两种删除第二种速度较快,因为将表作为整体删除。 -
修改数据:
update table_name set column_name1=value1,···column_namen=valuen [condition];update table_name set column_name1=value1,···column_namen=valuen where id=2; -
注意事项:
如果不加任何条件,则会将表中所有记录全部修改。
(3)DQL(Data Query Language):数据库查询语言,用来查询数据库中表的记录。
查询语法:select 字段类表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件限定 order by 排序 limit 分页限定;
基础查询:
- 查询多个字段:
select * from talble_name;select column_name from table_name; - 去除重复结果集:
select distinct column_name from table_name; - 计算列(四则运算):
select name,english,math +englist From student;select name,english,math +ifnull(english,0) From student; - 起别名:
select name,english,math +ifnull(english,0) as score From student;select name 姓名,english 英语,math +ifnull(english,0) 总分 From student;
IFNULL(arg1,arg2);
arg1:那个字段需要判断是否是null
arg2:如果arg1为null,则将该字段值替换为arg2
条件查询:
where子句后跟条件。
select * from stu where age>20; select * from stu where age>=20; select * from stu where age<20; select * from stu where age=20; 不等于①select * from stu where age!=20;②select * from stu where age<>20;
并且:①select * from stu where age>=20 AND age<=30;②select * from stu where age between 10 and 30; 或者:①select * from stu where age=22 or age =19 or age =18;②select * from stu where age in(22,19,18);
判断是否为空:select * from stu where english is null; select * fro stu where english is not null;
模糊查询:(查询姓为李的用户)select * from stu where name Like '马%'; 第二个字是化 "_化%" 总共三个字 "___" 包含马的人 %马%
占位符
_ 单个任意字符
%多个任意字符
排序查询:
语法:order by 排序字段 排序方式1,排序字段2 排序方式2,···;
默认省略:select * from stu ORDER BY math; 单条件:select * from stu ORDER BY math DESC; 多条件:select * from stu ORDER BY math ASC,english DESC;
排序方式:
ASC:升序,默认方式,排序方式不指明,默认就是ASC
DESC:降序。
如果有多个排序方式,则当第一条件一样时,才判断第二条件。
聚合函数:
将一列数据作为一个整体,进行纵向的计算。比如:计算数学成绩的平均分。
count:计算个数
max:计算最大值
min:计算最小值
sum:求和
avg:求平均值
注意:聚合函数的计算排除null值。解决:
①select count(IFNULL(english,0)) form stu;②选择不包含非空的列(主键)计算:select count(id) from stu;
select count(name) form stu; select count(name) form stu; select max(math) form stu; select min(enlgish) form stu; select sum(math) form stu; select avg(name) form stu;
分组查询:
语法:group by 分组字段;
注意事项:
分组之后查询的字段:要吗是分组字段,要吗是聚合函数
where 和having的区别:
where在分组之前进行限定,不满足条件,则不参与分组;having在分组之后进行限定,不满足条件,不被显示。
where后不可以跟聚合函数,having之后可以跟聚合函数的判断。
select sex,avg(math),count(id) from stu group by sex;
- 按照性别分组,分别查询男女平均分,要求:分数低于70分的人不参与分组。
select sex,avg(math) from stu where math>70 group by sex; - 按照性别分组,分别查询男女平均分,要求:分数低于70分的人不参与分组,每组人数要大于2人
select sex,avg(math),count(id) from stu where math>70 group by sex having count(id)>2;
分页查询:
语法:limit 开始索引,每页查询的记录数;
公式:开始索引=(当前页码-1)*每页显示条数;
limit分页操作是mysql方言;
select * from stu limit 0,3;
(4)DCL(Data Control Language):数据库控制语言,定义数据库的访问权限和安全级别以及创建用户,关键字:GRANT,REVOKE等。
1.管理用户
**1.添加用户:**语法:CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
**2.删除用户:**语法:DROP USER ‘用户名’@‘主机名’;
3修改用户密码:
1. UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
2. UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';
3. SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
4. SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
mysql中忘记了root密码:
cmd – > net stop mysql 停止mysql服务
使用无验证方式启动mysql服务: mysqld – skip-grant-tables
打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
use mysql;
update user set password = password(‘你的新密码’) where user = ‘root’;
关闭两个窗口
打开任务管理器,手动结束mysqld.exe 的进程
启动mysql服务
使用新密码登录
4.查询用户
-
切换到mysql数据库
USE myql; -
查询user表
SELECT * FROM USER;
通配符: % 表示可以在任意主机使用用户登录数据库
2.权限管理
1.查询权限
SHOW GRANTS FOR ‘用户名’@‘主机名’;
SHOW GRANTS FOR ‘lisi’@’%’;
2.授予权限
– 授予权限
grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
– 给张三用户授予所有权限,在任意数据库任意表上
GRANT ALL ON . TO ‘zhangsan’@‘localhost’;
3.撤销权限
revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;
REVOKE UPDATE ON db3.account FROM ‘lisi’@’%’;
1.命令行
备份数据库:
mysqldump -uroot -proot db1>d://a.sql
还原数据库:
创建 选择数据库 执行文件: source 文件路径
mysql> source d:/myprogram/database/db.sql;
1万+

被折叠的 条评论
为什么被折叠?



