MySQL初 一

环境准备

mysql安装,注意将安装目录和数据目录放在一起。
-- 配置环境变量: 安装目录/bin
--检查是否安装成功

连接

 mysql [-h 连接的主机ip -P端口3306] -u 用户名 -p 密码
 如果连接的是本机:可以省略 -h  -P  主机IP和端口。

Navicat 快捷键
注释:Ctrl+/
运行选中的:Ctrl+shift+r

SQL分类

DDL    (数据定义语言) Data Defination Language
--create drop alter  truncate(清空数据表记录)
DCL    (数据控制语言) Data Control Langugae
--grant    revoke    begin transation等
DML    (数据操作语言) Data Manipulation Language
--update  insert   delete   不包含查询
DQL    (数据查询语言) Data 	Query Language
--select

查看所有数据库

show databases;
--information_schema数据库
虚拟数据库,保存着关于MySQL服务器所维护的所有其他数据库的信息。
如数据库名,数据库的表,表栏的数据类型与访问权限等。

--mysql数据库
mysql库是系统库,里面保存有账户信息,权限信息,存储过程,event,时区等信息。

--performance_schema数据库
存储引擎,主要用于收集数据库服务器性能参数。
    
--test数据库
测试数据库,没有任何表
查看数据库编码集
--show create database*库名 
查看数据库的创建方式:查看数据库的编码表;

创建数据库

--create database 数据库名 character set 编码表名;
创建数据库使用指定编码表

--create database 数据库名;
未指定编码表,使用安装数据库时默认的编码表

编码表
java     UTF-8;   GBK;    GB2312;   ISO-8859-1
mysql    utf8;    gbk;    gb2312;   latin1;   

删除数据库

drop database 数据库名;

修改数据库编码集

alter database 数据库名称 chracter set 字符集

切换数据库

use 数据库名;

查看当前数据库

select database();

建表相关

语法:
create tabele 表名(
			列名  类型(长度),
			列名  类型(长度),
			........   ........  .......
			列名  类型(长度)
			);
--建表一定要切换到一个具体的数据库, use 数据库名
--一个数据表可以存多个字段,每个字段有类型和长度
--列之间逗号隔开,最后一个列不行要逗号

数据类型:
	-字符类型
varchar : 列的长度可变
char : 列的长度固定,不可变

	-数值型
整形:THINYINT  SMALLINT  INT  BIGINT
小数:FLOAT(单精度)  DOUBLE(双精度)

	-位数据类型(逻辑性)
BIT :  1或0组成的数据
	   1 表示true
	   0 表示false

	-日期型
DATE       只有日期   2017年06月07号
Time       时分秒     16时17分28秒
DateTime   日期和时间都包含 年月日时分秒
TIMESTAMP  日期和时间都包含,自动更新为表数据被修改的时间

单表创建时的约束
*主键约束 primary key  非空 唯一
 定义格式: 列名 列的类型 primary key
    补充:自增长  auto_increment  (主键是int类型,才可以添加自增长)	
ex: id int primary key auto_increment
    	
*唯一约束 unique
		该字段的值不允许重复,可以为空(空不算重复)
		一张表中可以有很多个唯一约束
格式  列名 类型(长度)unique
ex: name varchar(20) unique

*非空约束 not null
格式  列名 类型(长度)not null
ex: age int not null

查看表
 show tables;   查看该数据库所有表

查看具体某张表的机构
 desc 表名; 

修改表结构(对列的增删改)

alter table 表名 增/删/改 列名 类型(长度)约束;
--可以对表名、表中的列名、列的类型进行增删改。

alter table 表名 add 列名 类型(长度)约束;
--增加列

alter table 表名 modify 列名 类型(长度)约束;
--修改现有列类型、长度和约束

alter table 表名 change 旧列名 新列名 类型(长度)约束;
--修改现有列名称

alter table 表名 drop 列名;
--删除现有列

alter table 表名 character set 编码集;
--修改表的编码集

改表名

rename table 旧表名 to 新表名;
--修改表名 

表删除

drop table 表名;
--drop table emp;

insert语句–向表中插入数据

insert into 表名(列1,列2,列3...) values (值1,值2,值3...);
--写全
  值与列一一对应,如果某一列没值,可以使用null。
  使用单引号表示字符串
  date型数据也用单引号括起来
  如果主键自增长,可以直接插入null
	
insert into 表名(列,列,列...) values (值,值,值...);
--省略部分列
	某些列可以为null,或者自增长的列,或者有默认值,可省略

insert into 表名 values (值,值,值,值);
--省略所有的列
  如果给表中所有列插入数据,这时可以省略表名后面的列名,直接写values

1)如果主键:是自增长。不需要人工赋值(可以给值null)。数据库会按照自己的算法,为主键填充值。
2)通常遇到主键自增长,人工赋值的时候,赋值null。mysql会自己把null替换成新的值。
 数据的插入:
两种方式 -- 根据列名插入对应的值
直接插入所有的列  -  将列名省略掉

update语句(修改数据)

update 表名 set 列名=值,列名=值...[where 条件语句]
---如果不加条件语句,将会修改某一列的所有值
update person set username='zhaoliu',password='zhaoliu'where id =5;

delete 语句(删除表数据)

delete from 表名 【where 条件语句】
---不添加where条件,会删除表中所有数据。表依然存在,是空表
---delete是删除行数据
---删除后,再添加数据是接着之前的编号增长的
---数据可恢复。怎么恢复???

truncate语句(删除数据)

truncate table 表名;
--先删除表中所有内容,再创建表。
--只能删除一张表的数据,不能有条件删除。不能恢复数据。

truncate函数和round函数

SELECT ROUND(3.45,1),ROUND(3.45,0),ROUND(123.45,-1),ROUND(167.8,-2);
     --3.5  --3  --120  --200

SELECT TRUNCATE(2.34,1),TRUNCATE(4.56,1),TRUNCATE(4.56,0),TRUNCATE(56.78,-1);
    --2.3  --4.5  --4  --200

drop语句

drop table person;
---把person表从数据库中删除。表已经不存在了,不能向里面添加数据

查询

select * from 表名;
--查询表中所有信息
---select * from student;

select 列名,列名... from 表名;
--显示指定列数据。
---select name,score from student;

select 列名,列名... from 表名 where 条件;
--查找符合where条件的数据
---select * from student where age >= 24;

select distinct 列名 from 表名 [where 条件]
--去重复 distinct

select * from 表名 order by 列名1 asc|desc , 列名2 asc|desc ...
--order by 排序 。 默认是asc升序。

select 列名 as 别名,列名 as 别名...from 表名 where 条件;
--别名
--注意:再使用别名的时候,as关键字可以省略

运算符
>(大于)  <(小于)  >=(大于等于)  <=(小于等于) 
=(等于)    <>或者!=(不等于)

and 逻辑与
or 逻辑或
not  逻辑非
between 开始值 and 结束值
in(值1,值2,值3)在指定的值中任意取

模糊查询:like'模糊查询部分'
占位符:
 % 表示零个或任意多个字符
 _  表示任意单个字符
注意:含有某个值 %xx%

is null 判断该值是否为空
is not null :不是空

聚合函数

定义:多个数据进行运算,运算出一个结果

count函数 (统计行数)
--select count(*)  from 表名;
  统计表中的行数
--select count(列名)  from 表名;
  按具体列统计行数,不统计null值所在行

sum函数(求和)
--select sum(列名),sum(列名),... from 表名;
 使用sum进行多列求和的时候, null + 任何值=null
 解决?
 
 ifnull(列名,默认值)
---select sum(ifnull(age,0)+IFNULL(score,0)) from student;
怎么控制小数点?truncate(列名,截取的小数位)
---select truncate(sum(ifnull(age,0)+IFNULL(score,0)),2) from student;

avg函数(求平均值)
--select avg(列名) from 表名;
  求某列的平均值,avg里面的null不作为统计
---select sum(age)/count(age) from student;
---select avg(age) from student; 和上面结果一夜

max,min函数(统计该列最大最小值)
--select max(列名),min(列名) from 表名;(null除外)
---select max(score),min(score) from student;

grop by 分组

--select ... from ... group by 列名,列名;
---select id,product,sum(price) from orders group by product,price; 
    先分组,再计算
    通常select 后面的内容是被分组的列,或者聚合函数

having和where的区别
-Where跟的条件 having都可以,having单独使用的时候的条件在查询中的字段必须包含!!!
-having 后面可以跟聚合函数,where后面不能跟聚合函数
 聚合函数(sum,avg,max,min,count)
-where是在分组前进行过滤。
-having是在分组后进行过滤。
---select id,product,sum(price) from orders where id>3 group by product having sum(price)>30;
---先执行where id>3 --> group by product --> having后面的sum(price)>30- -->select 后面的内容 --->order by 排序

排序
select ...要显示的内容
from ... 表名
where ...关联条件 
group by ...分组的列
having ... 分组后的条件
order by (asc desc) ... 排序;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值