MySQL单表语句记录

 MySQL 是一款安全,高效的数据库系统,许多公司都采用数据库系统,每个项目中构建的数据库都是必不可少的,下面记录简单的MySQL语句操作数据库,方便查询。

一)三范式

数据库的构建需要遵循三范式

原子性,存储的数据不可再分。     //一个字段名里不能再有可以再分的数据 

唯一性,消除非主键部分依赖于联合主键。  //有了联合主键的时候

独立性,非主键不依赖于另一个非主键,都依赖于主键

二)创建数据库和表

CREATE DATABASE java11 DEFAULT CHARACTER SET utf8; //创建数据库,默认使用UTF8

SHOW DATABASES; //列出所有的数据库

DROP DATABASE java11; //删除数据库
USE java11; //从连接切换到数据库,在数据库里创建表
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
age INT,
gender VARCHAR(1)
); //创建表 (最后一个字段名后不能加,)     (PRIMAARY KEY主键,不能重复,唯一确定一条记录(表))      (AUTO_INCREMENT自动增长)
SHOW TABLES; //查看所有表
DESC student; //(description)查看表的结构
DROP TABLE student; //删除表

三)ALTER更改表的结构

ALTER TABLE student ADD COLUMN address CHAR(10); //添加一列,列名叫address类型是char(10)占用10个字符
ALTER TABLE student DROP COLUMN address; //删除叫address的一列
ALTER TABLE student CHANGE address addr CHAR(20); //修改address这一列中的字段,将address修改成addr CHAR(20)
ALTER TABLE student RENAME TO stu; //修改表的名字

四)INSERT插入数据 / UPDATE修改数据

INSERT INTO student VALUES(4,'赵六22',33,'男'); //插入全部内容,前面的字段名可写可不写
INSERT INTO student(name,age,gender) VALUES('小张11',23,'男'); //插入部分字段值(必须把前面的字段名都写上)
INSERT INTO student(NAME,age,gender) VALUES('小张77',23,'男'),('小王',22,'男'); //一次插入多条数据
UPDATE student SET age=age+1 WHERE id=7;  //用where来确定位置

五)DELETE 删除数据

DELETE FROM student; //删除表中所有数据(自增的id会从删除之后的开始,但也可以手动添加原来的id)
DELETE FROM student WHERE age=24; //所有age是24的数据都被删除了,可能有多条数据都是age=24
DELETE FROM student WHERE id=12; //因为id是主键是唯一的,所以根据id删除只能删除唯一的一条数据
TRUNCATE TABLE student; //TRUNCATE删除表里面所有数据,自增的id会重新初始化为初始值1

六)SELECT查询数据   (查询时生成虚拟的表格)

SELECT id,name,age,gender FROM student; //显示所有列(字段)数据,应写出所有字段名(也可以用*来指代所有)
SELECT id,name,age AS '年龄','java1812' AS '班级' FROM student;//查询时添加常量列,添加的班级常量列,
SELECT id,name,(php+java) AS '总成绩' FROM student;//查询时候和并列,字段名可以当成java里面的变量来运算
SELECT DISTINCT address FROM student; //查询时候去掉重复的记录

SELECT * FROM student WHERE NAME='小王' AND address='青岛';

SELECT FROM student WHERE NAME='小王' OR address='北京'; //逻辑条件查询

聚合查询,(聚合的一列)用聚合查询函数:sum(),avg(),max(),min(),count()添加(sum() AS '值名')(count()统计一列有多少个,不包含NULL
SELECT * FROM student ORDER BY php DESC;//order by 字段名,ASC升序默认 / DESC 降序
SELECT gender AS '性别' ,COUNT(id) AS '数量 ' FROM student GROUP BY gender; //分组统计,group by根据一列的内容进行分组
SELECT address AS '地址',COUNT(id) AS '人数' FROM student 
GROUP BY address HAVING COUNT(id)>1; //分组查询后筛选,group by之后的条件查询使用having
SET @rowno := 0; -- 定义一个变量,变量名随意
SELECT (@rowno := @rowno +1) AS rowno,id,NAME,php,java FROM student;//前面加一列,增加的数字,从0 + 1开始 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值