mysql入门02

数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言SQL语句,它是数据库的代码。
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
创建数据库、创建数据表、向数据表中添加一条条数据信息均需要使用SQL语句。

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等
    以下是一些SQL语句操作及注释:
/*
创建一个属于自己的数据库
不要使用MySQL自带的数据库
*/

CREATE DATABASE tamyda;

/*
注明现在使用的是哪个数据库
use 数据库名
*/
USE tamyda;
/*
创建数表格式

creat table 表名(
	列名1 数据类型 约束,      //约束可写可不写
	列名2 数据类型 约束,

)
创建用户表,用户编号,姓名,地址
*/

CREATE TABLE users(
	uid INT,
	uname VARCHAR(20),
	uaddress VARCHAR(200)
);
DROP TABLE users;
/*
将编号设置为主键
数据库可以让主键列的数据自动增长
primary key auto_increment
*/
CREATE TABLE users(
	uid INT PRIMARY KEY AUTO_INCREMENT,
	uname VARCHAR(20),
	uaddress VARCHAR(200)
);
/*
显式库中所有的表
*/
SHOW TABLES
/*
查看表结构
desc 表名
*/
DESC users;
/*
对已存在的表进行操作
alter table 表名 add 列名 数据类型 约束
*/
ALTER TABLE users ADD tel INT
/*
修改列,在原有基础上修改
alter table 表名 modify Tel varchar(50)
*/
ALTER TABLE users MODIFY tel VARCHAR(50);
DESC users;
/*
修改列名
alter table 表名 change 旧列名 新列名 数据类型 约束
*/
ALTER TABLE users CHANGE tel newtel DOUBLE;
DESC users;
/*
删除列
alter table 表名 drop 列名
*/
ALTER TABLE users DROP newtel;
DESC users
/*
修改表名
rename table 表名 to 新表名
*/
RENAME TABLE users TO newuse;

/*
向数据表中添加数据 insert
insert into 表名(列名1,列名2,列名3)values (值1,值2,值3)
注意:
	列名,表名问题
	对应问题,数据个数,数据类型
*/
CREATE TABLE product(
	id INT PRIMARY KEY AUTO_INCREMENT,
	pname VARCHAR(100) NOT NULL,
	price DOUBLE
);
INSERT INTO product (id,pname,price) VALUES (1,'笔记本',5555.9);
INSERT INTO product (id,pname,price) VALUES (2,'手机',3000.5);
/*
添加数据格式,不考虑主键
insert into 表名 (列名)values (值)没有主键
*/
INSERT INTO product(pname,price)VALUES('洗衣机',5000.0);
/*
所有值全给出
insert into 表名 values(全列值)
*/
INSERT INTO product VALUES(4,'微波炉',500)
/*
批量数据
insert into 表名(列名1,列名2,列名3)values(值1,值2,值3),(值1,值2,值3)
可以无限增加
*/
INSERT INTO product(pname,price)VALUES
('智能机器人',9000),
('彩电',4000.0),
('沙发',600.5)
/*
手动删除会出现主键断号现象,属于正常,如果没有主键添加,则直接跳过被删的主键号,
但是可以以该号码为主键进行添加
*/
/*
对数据进行更新操作
在原有的数据基础上进行操作
	update 表名 set 列1=值1,列2=值2(在这种情况下,所有的该列数据都被修改)
	where条件
*/
UPDATE product SET price=19999 WHERE id=5;
UPDATE product SET price=9999 WHERE pname = '智能机器人';
/*
删除表中的数据
	delete from 表名 where 条件(当删除所有记录时,其auto_increment不清空)
	drop table 表名(删除整张表)
	truncate table 表名;(摧毁表,直接将表删除,重新建表,auto_increment将置为0)
*/

DELETE FROM product WHERE id=7;

grep mysql;

CREATE TABLE zhangwu (
  id INT PRIMARY KEY AUTO_INCREMENT, -- 账务ID
  zname VARCHAR(200), -- 账务名称
  zmoney DOUBLE -- 金额
);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (1,'吃饭支出',247);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (2,'工资收入',12345);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (3,'服装支出',1000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (4,'吃饭支出',325);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (5,'股票收入',8000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (6,'打麻将支出',8000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (7,NULL,5000);



/*
查询指定列的数据
	select 列名 from 表名 where 条件
*/
SELECT zmoney FROM zhangwu;

/*
*表示所有数据
*/
SELECT * FROM zhangwu;
/*
查询去掉重复记录
distinct去除
*/
SELECT DISTINCT zmoney FROM zhangwu;
SELECT DISTINCT zname FROM zhangwu;
/*
查询重新命名列
as 关键字
*/
SELECT zname AS newname FROM zhangwu;
/*
在查询中直接做数学中的计算
直接写在查找的数据中
*/
SELECT zname,zmoney+10000 FROM zhangwu;
/*
where条件查询
*/
SELECT * FROM zhangwu WHERE zname='吃饭支出';
SELECT * FROM zhangwu WHERE zmoney>1000;
SELECT * FROM zhangwu WHERE zmoney>=2000 AND zmoney<=5000;
SELECT * FROM zhangwu WHERE zmoney BETWEEN 500 AND 5000;
-- 查询金额是1000,3500,5000其中一个
SELECT * FROM zhangwu WHERE zmoney=500 OR zmoney=3500 OR zmoney=5000;
SELECT * FROM zhangwu WHERE zmoney IN (1000,3500,5000);
SELECT * FROM zhangwu;
/*
模糊查询like
*/
SELECT * FROM zhangwu WHERE zname LIKE '%支出';
-- 查询只是五个字符的
SELECT * FROM zhangwu WHERE zname LIKE '_____';
-- 查询账务名字不为空的
SELECT * FROM zhangwu WHERE zname IS NOT NULL;
SELECT * FROM zhangwu WHERE NOT (zname IS NULL);

/*
查询,对查询结果进行排序(升序,降序)
[desc降][asc升]
*/
SELECT * FROM zhangwu ORDER BY zmoney;
SELECT * FROM zhangwu ORDER BY zmoney DESC;
SELECT * FROM zhangwu WHERE zname LIKE '%支出%' ORDER BY zmoney;


/*
聚合函数
count 对一列的数据进行统计,计算其数据个数count(列名)
*/
USE tamyda;
SELECT COUNT(zname) FROM zhangwu;
-- sum 对所有的数据进行求和(数值求和)
SELECT SUM(zmoney) FROM zhangwu;
-- max对某列数据取最大值min最小值
SELECT MAX(zmoney)FROM zhangwu;
-- avg求该列的平均值
SELECT AVG(zmoney)FROM zhangwu;
/*
吃饭支出多少,工资收入多少,服装支出,股票收入,打麻将支出
*/
SELECT SUM(zmoney),zname FROM zhangwu GROUP BY zname;
-- 对zname进行分组求和,但只要支出
SELECT SUM(zmoney)AS 'getsum',zname FROM zhangwu WHERE zname LIKE '%支出%'
GROUP BY zname
ORDER BY getsum DESC;
-- 对zname进行分组求和,但只要支出,要求显示金额大于5000
-- 结果是分组查询后,再次进行筛选,不能使用where,分组后再次过滤,关键字having
SELECT SUM(zmoney)AS 'getsum' ,zname FROM zhangwu WHERE zname LIKE '%支出%'
GROUP BY zname
HAVING getsum>5000;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值