Mysql数据库笔记

来源:互联网 发布:电力线路输送网络信号 编辑:程序博客网 时间:2024/05/16 14:38

1.控制台操作数据库

mysql控制台操作的时候需要找到安装目录下的mysql.exe文件才能进行mysql的操作

2.创建数据库

create database 数据库名;
use 数据库名//使用这个数据库

3.创建表结构

create table 表名(
列名 数据类型 约束,
列名 数据类型 约束,
列名 数据类型 约束
)

ctrl+o 快速打开数据库文件
例如:
创建用户表
CREATE TABLE user(
uid INT,
uname VARCHAR(20),
uaddress VARCHAR(200)
);

4.约束

就是限制这一列能写什么数据不能写什么数据(相当集合中的泛型)
主键约束
格式:primary key auto_increment,//设置为主键,并且可以实现自动增长
特点:主键不能为空,并且主键唯一

5.表的操作

show tables //显示所有数据表
desc users //查看表中结构
drop table users 删除数据表

6.修改表的结

/*
1.添加列
alter table 表名 add 列名 数据类型(长度) 约束;
*/
ALTER TABLE users ADD tel VARCHAR(20);
/* 2.修改列,在原有的列上修改
可以修改列的数据类型以及长度和约束
alter table 表名 modify 列名 数据类型(长度) 约束;
*/
ALTER TABLE users MODIFY uname VARCHAR(50);
/*
3.修改列名
alter table 表名 change 旧列名 新列名 数据类型(长度) 约束;
*/
ALTER TABLE users CHANGE tel newtel VARCHAR(50);
/*4.删除列
alter table 表名 drop 列名;
*/
ALTER TABLE users DROP newtel;
/*5.修改表名
rename table 旧表名 to 新表名
*/
RENAME TABLE users TO newusers;
/*6.修改表的字符集
alter table 表名 character set 字符集;
*/

7.向表中插入数据

向表中插入数据的四种方式.
CREATE TABLE product (– 商品表
– 商品的id (单行注释 格式:–空格 注释内容)
id INT PRIMARY KEY AUTO_INCREMENT,
– 商品的名字,设置不能为空
pname VARCHAR(50) NOT NULL,
– 商品的价格,用double
price DOUBLE
);

/*
格式1:
insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3..);
*/
INSERT INTO product(id,pname,price) VALUES(1,”电脑”,4999);
//格式2: 不考虑主键
Insert into 表名(列名) values (值);
INSERT INTO product(pname,price) VALUES (“空调”,2999);

//格式3:所有值全给出
格式: insert into 表名 values(全值);
INSERT INTO product VALUES(5,”洗衣机”,800);
格式4:批量写入数据
Insert into 表名(列名1,列名2..) values(值1,值2..),(值1,值2..)…
INSERT INTO product(pname,price) VALUES (“彩电”,900),(“电磁炉”,300);
注意:列名和值,数据类型应该一一对应;
当表中其中的一条数据删除的话,再次向表中添加数据的时候id值会自动加1.

8.修改表中数据

是修改原有的数据
格式:update 表名 set 列1 = 值1,列2=值2… Where 条件

修改条件的写法.
Id=6 id<>6(不等于)
与或非
与 AND 或OR 非NOT
Id in(1,3,4,5) 包含
Id not in(1,3,4,5) 不包含

9.删除表中数据

格式:deleate from 表名 where 条件;
Drop table 表名; //删除整个数据表,删除之后表就不存在了,也不会重新给建表
Truncate table 表名;
两种删除的对比:
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:delete 一条一条删除,不清空auto_increment记录数。
truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。

命令行中中文乱码问题

原因:操作系统为gbk,mysql安装的时候装的是utf-8的,
解决方法: 命令行中输入set names gbk;(只能临时修改)

10.SQL查询语句(基本查询)

1.查询指定列的数据
格式:select 列名1,列名2 from 表名;
2.查询所有列的数据
格式:select *from 表名;
3.查询去掉重复记录(用Distinct 关键字)
格式: select distinct 列名 from 表名;
4.查询重新命名列(as关键字)
格式:select *from 表名 as 别名;(在查询之后会将结果中显示的暂时修改为别名)
Select 列名 as 别名 from 表名;
5.查询过程中可以直接进行数学运算
SELECT zname,money+1000 AS ‘sum’ FROM zhangwu;

11.SQL查询语句(条件查询)

Where进行条件过滤.
格式: select 字段 from 表名 where 条件;
While条件的分类如下:

这里写图片描述

– 查询所有吃饭支出记录
SELECT *FROM zhangwu WHERE zname=’吃饭支出’;
– 查询出金额大于1000的信息
SELECT money FROM zhangwu WHERE money>1000;
– 查询出金额在2000-5000之间的账务信息
SELECT * FROM zhangwu WHERE money>=2000 AND money<=5000;
SELECT *FROM zhangwu WHERE money BETWEEN 2000 AND 5000;
– 查询出金额是1000或5000或3500的商品信息
SELECT *FROM zhangwu WHERE money=1000 OR money=5000 OR money=3500;
SELECT *FROM zhangwu WHERE money IN(1000,3500,5000);
– 查询出账务名称包含”支出”的账务信息。配合通配符
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);

12.查询对结果集进行排序

升序,降序,对指定列排序
格式:order by 列名 [asc] (升序排序,默认)desc

13.聚合函数

查询对一列值进行计算,然后返回一个单一的值
使用聚合函数查询计算
– count求和,对表中的数据的个数求和 count(列名)
格式1:COUNT(列名) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(列名) FROM 表名
格式2:COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM 表名
格式3:COUNT(DISTINCT 列名) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT 列名) FROM表名
– sum求和,对一列中数据进行求和计算 sum(列名)
– max min 对某列的数据获取最大值或最小值
格式:SELECT MAX(列名) FROM 表名
– avg 函数,计算一个列所有数据的平均数
格式:SELECT AVG(列名) FROM 表名

14.分组查询

查询所有的数据
吃饭指出 共计多少
工资收人 多少
服装指出 多少
股票收入 多少
打麻将指出 多少

格式:group by 被分组的列名
注意:必须跟随聚合函数
select查询的时候,被分组的列,要出现在select选择列的后面
必须使用sum聚合函数,金额求和
按照zname中的内容,重复的内容求和
重复内容分为一组,单独统计.
– 对zname内容进行分组查询求和,但是只要支出
SELECT SUM(money),zname FROM zhangwu GROUP BY zname;

结果集是在分组查询后,再次进行筛选,不能使用where,分组后再次过滤,应该使用关键字having

注意:Having和where的区别

Having是在分组后对数据进行过滤,Where是在分组前对数据进行过滤
Having后面可以使用分组函数(统计函数),wher后面不能使用分组函数
SELECT SUM(money) AS ‘getSum’,zname FROM zhangwu WHERE zname LIKE ‘%支出%’
GROUP BY zname HAVING getSum>600;

原创粉丝点击