day37 mysql数据库学习
3.什么是数据库
用来存储数据的仓库 数据是以文件的形式保存
海峰补充内容 ↓
4 数据库服务器、数据管理系统、数据库、表与记录的关系(重点理解!!!)
记录:1 刘海龙 324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)
表:student,scholl,class_list(即文件)
数据库:oldboy_stu(即文件夹)
数据库管理系统:如mysql(是一个软件)
数据库服务器:一台计算机(对内存要求比较高)
总结:
数据库服务器-:运行数据库管理软件
数据库管理软件:管理-数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
1.windos忘记密码操作
#1 关闭mysql服务(mysqld 即mysql服务端) 去任务管理器--》服务--》mysql5.6 将他关闭
#2 在cmd中执行:mysqld --skip-grant-tables (跳过授权表,当登录的时候可以不用账号密码就能进mysql 客户端 (mysql 的服务端) #3 在cmd中执行(另外开了一个cmd)窗口):mysql (mysql 的客户端)
#4 执行如下sql:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges;
# 记住对权限的修改都要刷新到授权表中去即 flush privileges
#5 tskill mysqld #或taskkill -f /PID 7832
#6 重新启动mysql
#1. 关闭mysql,可以用tskill mysqld将其杀死
#2. 在解压目录下,新建mysql配置文件my.ini
#3. my.ini内容,指定
[mysqld]
skip-grant-tables #4.启动mysqld
#5.在cmd里直接输入mysql登录,然后操作
update mysql.user set authentication_string=password('') where user='root and host='localhost'; flush privileges; #6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
4. 在windows下,为mysql服务指定配置文件
强调:配置文件中的注释可以有中文,但是配置项中不能出现中文
注意:一个程序的配置文件只对它对应的程序生效,程序各有各的配置文件(如mysql的配置文件 navacat就不能用)
#在mysql的解压目录下,新建my.ini,然后配置
#1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1 #解压的目录
basedir=E:\mysql-5.7.19-winx64
#data目录
datadir=E:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据 #2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效直接生效,(如将用户名密码信息写进去了就不用再输入用户名密码)
[client]
port=3306
default-character-set=utf8
user=root
password=123 #3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置 使用mysql服务端 会先走这里的配置,这里没有就会从client全局中去找。
[mysql]
;port=3306
;default-character-set=utf8
user=egon
password=4573 #!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
5. 统一字符编码
#1. 修改配置文件
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8 #mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8 #2. 重启服务
#3. 查看修改结果:
\s
show variables like '%char%'
4.数据库的优势:
1.存储数据量大
2.方便管理
3.多用户共享
4.千万级吞吐量
4.独立的数据集合
5. 关系型数据
mysql oracle sql server db2 sybase
6. 非关系型数据库 (NO SQL)
redis MongoDB
7.连接数据库
mysql -u root -p 回车
输入密码:*****
1.用户及权限操作
1.用户操作
1 #更新root 用户的密码
2 set password for ‘root’@’localhost’ = password(‘新密码’)
3
4 #创建一个新用户,mysql授权用户以指定IP登录
6 create user ‘用户名’@’192.168.1.1’ identified by ‘密码’
7 ps:指定固定IP访问
8
9 create user ‘用户名’@’192.168.1.%’ identified by ‘密码’
10 ps:前面三位IP符合条件即可以访问
11
12 create user ‘用户名’@’%’ identified by ‘密码’
13 ps:没有IP限制,%表示通配所有IP
14
15 删除用户
16 drop user '用户名'@'IP'
17 修改用户
18 rename user '老用户名'@'IP' to '老用户名'@'IP'
2.数据库操作
1.显示所有数据库
show databases;
3.使用数据库
use 数据库名;
1.创建新的数据库 1. create database 数据库名 character set ='utf8'
2.复制表:
1 CREATE TABLE tb_name2 SELECT * FROM tb_name; #复制表格内容
3 或者部分复制:
5 CREATE TABLE tb_name2 SELECT id,name FROM tb_name;
3.查看数据库中可用的表:
SHOW TABALES;
4.删除表
1 drop table if exists tb_name; //if exists 判断当前表是否存在,存在则删除,不存在则不做任何操作.好处:不会报错!
5.清空表 1 truncate table 表名;
6 表重命名 rename table 旧表名 to 新表明
7.更改表结构:
1 ALTER TABLE 表名 ADD column 字段varchar(80) NOT NULL;//添加字段
2
3 ALTER TABLE 表名 DROP address; //删除字段
4
5 ALTER TABLE 表名 CHANGE score int(4) NOT NULL;//改变字段类型
查看当前数据库中所有表名称:SHOW TABLES;
l 查看指定表的创建语句:SHOW CREATE TABLE emp,查看emp表的创建语句;
l 查看表结构:DESC emp,查看emp表结构;
l 删除表:DROP TABLE emp,删除emp表;
l 修改表:
- 修改之添加列:给stu表添加classname列:
ALTER TABLE stu ADD (classname varchar(100));
- 修改之修改列类型:修改stu表的gender列类型为CHAR(2):
ALTER TABLE stu MODIFY gender CHAR(2);
- 修改之修改列名:修改stu表的gender列名为sex:
ALTER TABLE stu change gender sex CHAR(2);
- 修改之删除列:删除stu表的classname列:
ALTER TABLE stu DROP classname;
- 修改之修改表名称:修改stu表名称为student:
ALTER TABLE stu RENAME TO student;
拷贝表
#拷贝表结构+记录
create table day43.user select host,user,password from mysql.user;
#只拷贝表结构
create table day43.user select host,user,password from mysql.user where 1=2;#因为 1 不等于二 所以没有任何一条字段内容被拷贝,所以只是拷贝了表的字段和结构
删除数据库 drop database db1
2.. 创建 一个新的表格文件
CREATE TABLE person(p_name VARCHAR(5) not NULL, # not null 的意思是这一行不能为空,什么都不传
p_age INT not NULL,
p_sex CHAR(1) not NULL,
p_id varchar(6) null) # null 这一行可以为空,
1 CREATE TABLE table_name(
2 id int not null auto_increment primary key, //id值,非空、递增——唯一性,主键。
3 name VARCHAR(60) NOT NULL
4
5 score int NOT NULL DEFAULT 0, //设置默认列值
6
7 )ENGINE=InnoDB //设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,
支持事务;MyISAM高效不支持全文检索
8
9 DEFAULT charset=utf8; //设置默认的编码,防止数据库中文乱码
10
11 如果有条件的创建数据表还可以使用 CREATE TABLE IF NOT EXISTS tb_name(........
3. 在行上添加内容
-- insert into person (p_name,p_age,p_sex,p_id) values('台北','','女','12345s')
-- insert into person (p_name,p_age,p_sex,p_id) values('北京','','男','74444a') #方法一,键值对,一行一行的添加 insert into person (p_name,p_age,p_sex,p_id) values('北京','','男','74444a'),('egon','','男',null),('女神','','女',"")
#方法二或先写键,在后边写多行 insert into person values('北京','','男','74444a'),('egon','','男',null),('女神','','女',"") #方法三 或者这样写,省去写键
2.修改
1 update tb_name SET 字段名=更新值 WHERE 条件字段=条件值;
2 update tb_name set 字段名=更新值,字段名=更新值2 where 字段名=‘值’ and 字段名='值2'
3.删除
1 DELETE FROM 表名称 WHERE 条件字段=条件值;
2. delete from 表名称 #清空表中的内容
清空表
清空表:
delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一个数作为起始(比如删除前最后一个是2 则新建的表是从3开始)。
truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,
4.查询
1. select * from ren
默认查询表中所有字段
select :关键字,表示查询
* :通配符,表示查询当前表中所有的字段
from :表示从哪个表中进行查询
ren :具体的表名称 concat
select id,concat('name:',' ',name) from emp;
这样打印出来的 k可以给打印出来的内容前边加一些东西
2.select p_name,p_age from ren
按照字段的方式进行查询
注意:要查询哪个字段就把哪个字段的名称写在select与from之间,
多个字段之间用(",")间隔 3.select * from ren where p_age = 20
按条件进行查询
where:关键字,表示条件,在where语句之后的都称之为条件.
p_age :表示一个具体的条件字段
= 20 :表示查询当前字段下为20的所有数据.
注意1:所有字段字符串类型的数据都要使用单引号('')进行包裹
注意2:对于数字类型来说,可以加上单引号(''),也可以不使用. 4.select * from ren where p_age <> 50
按照逻辑运算符 进行数据筛选
=, !=, <, >,<=,>=,<>表示不等于 5.select * from ren where p_age < 50 AND p_sal >8000 and p_leader = 0
select * from ren where p_age < 40 or (p_sal <8000 and p_leader !='0')
多条件查询
and :表示逻辑与运算,两个或两个以上的条件同时成立.
or :表示逻辑或运算,表示多个条件时,其中一个条件满足时就成立.
():表示一组条件 6.select * from ren where p_name like '%张%'
模糊查询
like :关键字 ,表示 模糊查询
1.以张开始: like '张%'
2.以张结尾: like '%张'
3.包含张 : like '%张%' 7.select * from ren where p_menpai in('武当','明教','嵩山')
等同于:select * from ren where p_menpai ='武当' or p_menpai ='明教' or p_menpai = '嵩山'
以集合的方式进行查询
in:关键字,表示集合
注意:在in关键字之后,用()表示集合条件,必须按照当前条件进行查询. 8.select * from ren where p_menpai NOT in('武当','明教','嵩山')
以集合的方式查询2
not :关键字,表示 非集合的内容查询 9.select * from ren where p_sal BETWEEN 4000 and 8000
等同于:select * from ren where p_sal >=3000 and p_sal
按照区间进行查询
注意:between zhi1 and zhi2 :表示查询的是zhi1 到zhi2之间的数据前后包含 10.select * from ren ORDER BY p_sal ASC
排序方式
order by :表示 排序
ASC :表示正序排列
DESC :表示倒序排列
SQL中,
DESC是descend 降序意思
ASC是ascend 升序意思
例,
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
SELECT Company, OrderNumber
FROM Orders ORDER BY Company DES
11.select * from ren where p_leader in (select p_id from ren where p_age in(select p_age from ren where p_age = 20 ))
子条件查询
注意1:where关键字后的具体条件应为一个具体的查询结果
注意2:子条件查询的结果为单一数据时,可以使用(=)进行查询,如果不为单一数据则需要使用(in关键字)
注意3:遇到"="为单一,遇到"in"为集合 //---------聚合函数 --------------
12. select MAX(r.p_sal) as p_sal from ren as r
求最大值
as : 表示 重命名
MAX():表示求最大值 13.select min(r.p_sal) as p_sal from ren as r
求最小值
MIN():表示求最小值 14. select avg(r.p_sal) as p_sal from ren as r
求平均值
AVG():表示求平均值 15.select sum(r.p_sal) as p_sal from ren as r
求和
sum():表示求和 16.select count(*) as jishu from ren as r
求数据总条数 17.select avg(p_sal),p_name from ren GROUP BY p_menpai
按照指定字段进行分组查询,一般与聚合函数一起使用
group by : 表示分组进行查询 18.select max(p_sal),p_name from ren GROUP BY p_menpai having p_menpai = '武当'
having :关键字,分组/聚合函数的条件,在having之后加入条件
注意:一般只与分组函数( GROUP BY)一起使用
注意:只分组不加条件时,可以省略having关键字.特别注意:
group
by
必须在
where
之后,
order
by
之前
19.select MAX(p_sal) from (select p_sal from ren where p_menpai = '武当') as haha
使用结果集作为表查询
注意:结果集作为表时必须要起一个别名 20.select DISTINCT p_menpai,p_name from ren
去重复查询
注意:DISTINCT 关键字,一般只用于单一字段进行去重复查询 21.select p_menpai ,p_name from ren GROUP BY p_menpai
使用分组函数进行去重复查询
22.select * from ren r,wei w where r.p_menpai = w.a_name
多表联合查询
注意1:多表联合查询的结果:为两个表中的数据乘积(笛卡尔乘积)
注意2:多表联合查询的结果,需要使用where条件进行过滤 23.select * from ren r LEFT JOIN wei w ON r.p_menpai = w.a_name
左连接查询 select *from ren LEFT JOIN wei ON ren.p_menpai=wei.a_name LEFT JOIN perosn on 条件
注意1:left join :表示左连接查询(左关联查询), on:表示条件,类似与where 和having.一般配合联合查询使用.
注意2:左关联查询以左表为准,左表中的数据全要,右表没有与左表匹配的数据则用 null 来填充. 24.select * from ren r RIGHT JOIN wei w ON w.a_name =r.p_menpai
右关联查询
注意1:RIGHT JOIN :表示右连接查询(右关联查询), on:表示条件,类似与where 和having.一般配合联合查询使用.
注意2:右关联查询以右表为准,右表中的数据全要,左表没有与右表匹配的数据则用 null 来填充. 25.select * from ren r INNER JOIN wei w ON w.a_name =r.p_menpai
内关联查询
注意1: INNER JOIN:表示内关联查询,on:表示条件,类似与where 和having.一般配合联合查询使用.
注意2:内链接查询,两个表中匹配条件的结果显示,与多表联合查询一样 26.select * from ren LIMIT 4,8
分页查询
limit:表示分页查询
参数1:表示从第几条数据开始查询
参数2:每页查询几条数据 27.select r.p_menpai,r.p_name from ren r
UNION
select w.a_address,w.a_name from wei w
union(操作符) :表示合并两个或两个以上的select 语句的结果集 28.select * from ren where p_name is NULL
查询字段为 null 数据 注意1: 查询非null的字段 : is not null
注意2: 查询 空白字符串字段: =''
设置一个空字段 字段名=null
查询一个空字段 字段名 is null
day37 mysql数据库学习的更多相关文章
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
- MySQL数据库学习: 01 —— 数据库的概述
壹 概述 一 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件). 易混淆:人们常常用“数据库”这个词语来代表他们使 ...
- MYSQL数据库学习笔记1
MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...
- mysql数据库学习目录
前面的话 对于前端工程师来说,数据库并不是主要技能点,但是基本的增删改查操作还是需要了解的.小火柴将mysql数据库的学习记录整理如下 目录 前端学数据库之基础操作 前端学数据库之数据类型 前端学数 ...
- mysql数据库学习(一)--基础
一.简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 R ...
- MySQL数据库学习笔记<一>
MySQL基本概念以及简单操作 一.MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系 ...
随机推荐
- hdu2087kmp
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input输入中含有一些数据,分别是成对出现的花布条和 ...
- C++中的赋值运算符重载函数(operator=)
MyStr& operator =(const MyStr& str)//赋值运算符 { cout << "operator =" << e ...
- HDU-2829 Lawrence (DP+四边形不等式优化)
题目大意:有n个敌方军火库呈直线排列,每个军火库有一个值vi,并且任意相邻的两个库之间都有通道相连.对于任意一条连起来的军火库链,它对我方的威胁可以用函数w(i,j)表示为:w(i,j)=vi*sum ...
- Application 类
Application 类具有用于启动和停止应用程序和线程以及处理 Windows 消息的方法,如下所示: Run 在当前线程上启动应用程序消息循环,并可以选择使某窗体可见. Exit 或 ExitT ...
- 37. Sudoku Solver *HARD*
Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...
- 阿里云ECS安装最新版本Node.js
原文 http://www.w3ctech.com/topic/1610 主题 Node.js操作系统服务器 我的ECS实例是Ubuntu操作系统,直接使用 apt-get install node ...
- BZOJ一天提交(AC) 51纪念
像我这种蒟蒻...一天交了51道题也要纪念... 真是...但是.不知道还有没有机会了... 这样子就会有很多题解要补了...慢慢来吧... 另.AC数已经超过500了还真是历史性的一步啊...
- js前台数据校验
1.脚本 Validator = { exp:{ numWord:/^[A-Za-z0-9]+$/, //数字或字母 numWordM:/^[\-]*[A-Za-z0-9]+$/, //数字或字母可为 ...
- java.util.logging
我们目前记录日志用的最多的就是Apache的log4j,其实java.util本身也提供日志记录功能,即java.util.logging,值得关注的就是它的等级与log4j的等级有所不同: 首先我们 ...
- OSI七层网络模型与TCP/IP四层模型介绍
目录 OSI七层网络模型与TCP/IP四层模型介绍 1.OSI七层网络模型介绍 2.TCP/IP四层网络模型介绍 3.各层对应的协议 4.OSI七层和TCP/IP四层的区别 5.交换机工作在OSI的哪 ...