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  修改表:

  1. 修改之添加列:给stu表添加classname列:

ALTER TABLE stu ADD (classname varchar(100));

  1. 修改之修改列类型:修改stu表的gender列类型为CHAR(2):

ALTER TABLE stu MODIFY gender CHAR(2);

  1. 修改之修改列名:修改stu表的gender列名为sex:

ALTER TABLE stu change gender sex CHAR(2);

  1. 修改之删除列:删除stu表的classname列:

ALTER TABLE stu DROP classname;

  1. 修改之修改表名称:修改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数据库学习的更多相关文章

  1. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  5. MySQL数据库学习: 01 —— 数据库的概述

    壹 概述 一 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件). 易混淆:人们常常用“数据库”这个词语来代表他们使 ...

  6. MYSQL数据库学习笔记1

      MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...

  7. mysql数据库学习目录

    前面的话 对于前端工程师来说,数据库并不是主要技能点,但是基本的增删改查操作还是需要了解的.小火柴将mysql数据库的学习记录整理如下 目录  前端学数据库之基础操作 前端学数据库之数据类型 前端学数 ...

  8. mysql数据库学习(一)--基础

    一.简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 R ...

  9. MySQL数据库学习笔记<一>

    MySQL基本概念以及简单操作   一.MySQL   MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系 ...

随机推荐

  1. LTE时代的定位技术:OTDOA,LPP,SUPL2.0

    LTE时代的定位技术:OTDOA,LPP,SUPL2.0 移动定位技术的发展历程 如今智能手机已经在整个社会普及,数量众多的手机应用成为了人们生活当中不可或缺的一部分.越来越多的手机应用都用到了手机定 ...

  2. ssh The authenticity of host '10.11.26.2 (10.11.26.2)' can't be established

    The authenticity of host '10.11.26.2 (10.11.26.2)' can't be established. ECDSA key fingerprint is SH ...

  3. nyoj 1238(BFSor最短路)

    最少换乘 时间限制:2000 ms  |  内存限制:65535 KB 难度:3   描述 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. ...

  4. linux 检查补丁包是否安装 名称 版本 release号

    To determine whether the required packages are installed, enter commands similar to the following: # ...

  5. git在eclipse中的配置 转载

    git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...

  6. 使用POI导入EXCEL报java.lang.IncompatibleClassChangeError

    使用POI导入xls格式的excel报java.lang.IncompatibleClassChangeError异常,而导入xlsx正常. oracle.apps.fnd.framework.OAE ...

  7. throw new OAException执行了,却没有正常抛出异常!

    try { if ("E".equals(returnStatus)) { throw new OAException(returnMessage, OAException.ERR ...

  8. 开启turbine收集hystrix指标功能

    使用turbine收集hystrix指标 1.pom中引入对turbin的依赖,并增加dashboard图形界面的展示 <dependencies> <dependency> ...

  9. wordpress 使用less 样式无法及时刷新

    wordpress 样式无法及时刷新 wordpress编写style样式时,无法及时刷新页面,因此特意记录一番如何处理较好,网友的建议清除Chrome缓存,实时修改style携带的参数 折腾之旅开启 ...

  10. SQL Server 数据库获取架构信息

    得到数据库存储过程列表: select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name ...