ps:现在是dos命令行环境下的操作
1、创建一个数据库
/*
创建数据库
create database 数据库名;
*/
CREATE DATABASE mybase;
2、创建表
/*
使用数据库
*/
USE mybase;
/*
创建数据表的格式
create table 表名(
字段名1 数据类型 约束,
字段名2 数据类型 约束,
字段名3 数据类型 约束
);
创建用户表,用户编号,姓名,用户的地址
将编号列,设置为主键约束,保证列的数据唯一性,非空性
primary key AUTO_TNCREMNT
让主键列数据,实现自动增长
*/
CREATE TABLE users(
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20),
uaddress VARCHAR(200)
);
/*
show tables 显示所有数据表
desc users 查看表中结构
drop table users 删除数据表
*/
/*
添加列,添加字段
alter table 表名 add 列名 数据类型 约束
*/
ALTER TABLE users ADD tel INT;
/*
修改列,在原有的列上修改
修改列名,数据类型约束
alter table 表名 modify 列名 数据类型 约束
*/
ALTER TABLE users MODIFY tel VARCHAR(50);
/*
修改列名
alter table 表名 change 旧列名 新列名 数据类型 约束
*/
ALTER TABLE users CHANGE tel newtel DOUBLE;
/*
删除列
alter table 表名 drop 列名
*/
ALTER TABLE users DROP newtel;
/*
修改表名
rename table 表名 to 新名
*/
RENAME TABLE users TO newusers;
CREATE TABLE product (
-- 主键列,自增长
id INT PRIMARY KEY AUTO_INCREMENT,
-- 商品名字,可变字符,非空
pname VARCHAR(100) NOT NULL,
-- 商品的价格,double
price DOUBLE
);
/*
向数据表中添加数据 insert
格式:
insert into 表名(列名1,列名2,列名3)values (值1,值2,值3)
注意:
列名,表名问题
对应问题,个数,数据类型
添加数据格式,所有值全给出
格式:
insert into 表名 values (全列值)
*/
INSERT INTO product (id,pname,price) VALUES (1,'哔哩哔哩',1212.11);
INSERT INTO product (pname,price) VALUES ('爱奇艺',111.11);
INSERT INTO product VALUES (3,'格式工厂',15.1);
/*
添加数据格式,批量写入
格式:
insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3)
*/
INSERT INTO product (pname,price) VALUES
('WeGame',83223.21),
('google',323.22),
('KuGou',123.24)
/*
对数据进行更新操作
数据在原有的基础上修改
格式:
update 表名 set 列1=值1,列2=值2 where 条件
*/
-- 修改哔哩哔哩,价格上升到12321
UPDATE product SET price = 12321 WHERE id=1;
/*
修改条件的写法
与或非 && || !
&& and
|| or
! not
id in (1,2,3,4,5) 包含
*/
-- 将WeGame和KuGou的价格,全部修改为2000
UPDATE product SET price = 2000 WHERE id = 4 OR id = 6;
UPDATE product SET price = 3000 WHERE id IN (2,3);
ps:在这里我用的是SQLyog作为mysql数据库的操作工具。/**/是多行注释,-- 是单行注释
/*
删除表中的数据
格式:
delete from 表名 where 条件
drop table 表名 删除整个数据表
*/
CREATE TABLE bill(
id INT PRIMARY KEY AUTO_INCREMENT,-- 账务id
bname VARCHAR(200), -- 账务名称
zmoney DOUBLE -- 金额
);
INSERT INTO bill(bname,zmoney) VALUES
('吃饭支出',621),
('工作收入',121),
('辅助支出',521),
('打野收入',9441),
('上单支出',8021),
('视野支出',111),
('中单支出',1275),
('ADC收入',1505);
INSERT INTO bill (bname,zmoney) VALUES ('',5000);
DELETE FROM bill WHERE id=10;
/*
查询指定列的数据
格式:
select 列名1,列名2 from 表名
*/
SELECT bname,zmoney FROM bill;
/*
查询所有列的数据
格式:
select * from 表名
*/
SELECT zmoney AS bmoney FROM bill;
-- 将所有的zmoney加上100,用sum作为输出值
SELECT zmoney , zmoney+100 AS SUM FROM bill;
-- 显示出zmoney大于1000的所有记录
SELECT * FROM bill WHERE zmoney > 1000;
-- 显示zmoney值在2000到5000以内的记录
SELECT * FROM bill WHERE zmoney >= 2000 AND zmoney <= 5000;
-- 改成between and 方式
SELECT * FROM bill WHERE zmoney BETWEEN 1000 AND 5000;
-- 查询 1000,3500,5000其中一个
SELECT * FROM bill WHERE zmoney = 1000 OR zmoney = 3500 OR zmoney = 5000;
-- 改成in 方式
SELECT * FROM bill WHERE zmoney NOT IN (1000,3500,5000);
-- 模糊查询 配合通配符
SELECT * FROM bill WHERE bname LIKE '%支出';
-- 查询账务名字中五个字符的
SELECT * FROM bill WHERE bname LIKE '_____';
-- 查询账务名字不为空的就行
SELECT * FROM bill WHERE bname IS NOT NULL;
/*
查询,对结果集进行排序
升序,降序,对指定列排序
order by 列名 [desc][asc]
*/
-- 查询账务表,价格进行升序
SELECT * FROM bill ORDER BY zmoney;
-- 查询账务表,价格进行降序
SELECT * FROM bill ORDER BY zmoney DESC;
-- 查询账务表,查询所有的支出,对金额升序排列
-- 先查询过滤条件 where 查询的结果再排序
SELECT * FROM bill WHERE bname LIKE '%支出' ORDER BY zmoney ASC;
/*
使用聚合函数查询计算
*/
-- count 求和,对表中的数据的个数求和 count(列名)
-- 查询统计账务表中,一共有多少条数据
SELECT COUNT(*)AS'count' FROM bill;
-- sum求和,对一列中数据进行求和计算 sum(列名)
-- 对账务表查询,对所有的金额进行求和计算
SELECT SUM(zmoney) FROM bill;
-- 求和,统计所有支出的总金额
SELECT SUM(zmoney) FROM bill WHERE bname LIKE '%支出';
-- max函数,对某列数据获取最大值
SELECT MAX(zmoney) FROM bill;
-- avg函数,计算某列的平均值
SELECT AVG(zmoney) FROM bill;
/*
查询所有的数据
吃饭支出 共计多少
辅助收入 共计多少
工作收入 共计多少
打野收入 共计多少
上单支出 共计多少
视野支出 共计多少
ADC收入 共计多少
中单支出 共计多少
*/
-- 分组查询:group by 被分组的列名必须跟随聚合函数
-- select 查询的时候,被分组的列,要出现在select 选择列的后面
SELECT SUM(zmoney),bname FROM bill GROUP BY bname;
-- 对bname内容进行分组/查询/求和/临时改名为'getsum',但是只要支出
SELECT SUM(zmoney) AS 'getsum',bname FROM bill WHERE bname LIKE'%支出'
GROUP BY bname
ORDER BY SUM(zmoney) DESC;
-- 在上面的基础上加一个条件:只显示金额大于5000的
-- 结果集是分组查询后,再次进行筛选,不能使用where,分组后再次过滤,关键字having
SELECT SUM(zmoney) AS 'getsum',bname FROM bill WHERE bname LIKE'%支出'
GROUP BY bname
HAVING getsum>5000
ORDER BY SUM(zmoney) DESC;
不同的数据库的SQL语句会有所不同但百变不离其宗,将上面的多练习一下也差不多了~_~;