-- mysql有一个配置文件很重要my.ini,mysql是一种关系型数据库,所以支持sql语句的规范
-- 一条语句以分号结尾, 关键词建议大写, sql不区分大小写, 注释三种(单行注释:--空格,#,多行注释/*注释内容*/)
/*
DDL:数据库定义语言,专门操作数据库和表的增删改查
create(增加),drop(删除),alter(修改),show(查询)
DML:数据库操作语言,专门针对表中的数据的增删改
update delete insert
DQL:数据库查询语言,专门针对表中数据的查询
select
DCL:数据库控制语言,专门用来创建用户,删除用户, 授权, 撤权
grant
*/
/*************************DDL语句*********************************/
/*-------数据库的操作---------*/
-- 创建数据库(!!!!!!!!!!!!!!!!!!)
CREATE DATABASE db1;
-- 了解内容
-- 查询数据库
SHOW DATABASES;
-- 指定字符串创建数据库---有些数据库的编码指定是utf-8有些是utf8
CREATE DATABASE db2 CHARACTER SET utf8;
-- 查询数据库的创建语句
SHOW CREATE DATABASE db2;
-- 判断是否存在
CREATE DATABASE IF NOT EXISTS db3;
-- 删除数据库
DROP DATABASE db2;
-- 修改数据库,编码
ALTER DATABASE db2 CHARACTER SET gbk;
SHOW CREATE DATABASE db2;
-- 使用数据库(!!!!!!!!!!!!!!!!!!)
USE db3;
/*-------表的操作---------*/
-- 查询所有的表
SHOW TABLES;
-- 查询表的结构
DESC HOST;
/*
int 整数
double小数
date年月日
datatime年月日时分秒
timestamp时间蹉
varchar字符串
注意 char和varchar的区别: varchar是可以变的,char是固定的, varchar更省空间
创建表的格式:
create table 表明(
字段名 字段类型 约束,
字段名 字段类型 约束,
....
字段名 字段类型 约束 (最后一个字段不加逗号)
);
*/
-- 创建学生成绩表(!!!!!!!!!!!!!!!!!!)
CREATE TABLE student_score(
id INT,
NAME VARCHAR(32), -- varchar必须指定长度
chinese DOUBLE(4,1), -- double(总位数,小数的个数),也可以不填
math DOUBLE(4,1),
english DOUBLE
);
-- 删除表(建议少用或者不用)
DROP TABLE student_score;
-- 修改表名
ALTER TABLE student_score RENAME TO stu_score;
-- 修改name的长度为10 ---->MODIFY只能修改类型(!!!!!!!!!!!!!!!!!!)
ALTER TABLE stu_score MODIFY NAME VARCHAR(10);
-- 将name这个字段名字改成sname--->CHANGE可以改名字还可以改类型(!!!!!!!!!!!!!!!!!!)
ALTER TABLE stu_score CHANGE NAME sname VARCHAR(10);
-- 添加一列"所属班级"--->ADD(!!!!!!!!!!!!!!!!!!)
ALTER TABLE stu_score ADD class VARCHAR(20);
ALTER TABLE stu_score ADD aaa VARCHAR(20);
-- 删除表中的aaa这一列--->DROP(!!!!!!!!!!!!!!!!!!)
ALTER TABLE stu_score DROP aaa;
/*************************DML语句*********************************/
/*-------表的数据的添加INSERT---------*/
/*
格式: insert into 表名(列名的列表) values(列值的列表)
简化格式: insert into 表名 values(所有列的列值列表)
批量插入格式: insert into 表名 values(所有列的列值列表),(所有列的列值列表),(所有列的列值列表)....
注意: 列名和列值要一一对应(不仅个数一样,类型也要一样)
*/
-- 采用标准格式插入
INSERT INTO stu_score (id,sname,chinese,math,english,class) VALUES(1,'梅军建',100,100,100,'一班');
-- 采用省略格式插入
INSERT INTO stu_score VALUES(2,'林青霞',100,100,100,'一班');
INSERT INTO stu_score VALUES(2,'李青霞',100,100,100,'一班');
INSERT INTO stu_score VALUES(2,'梅青霞',100,100,100,'一班');
-- 采用批量插入
INSERT INTO stu_score (id,sname,chinese,math,english,class) VALUES
(3,'黎姿',99,99,99,'二班'),
(4,'豆腐妹',88,88,88,'一班'),
(5,'小明',10,9,0,'一班')
;
/*-------表的数据的删除DELETE---------*/
/*
delete from 表名 where 条件
注意:一定要挂条件,不然出现全部删除的情况!!!!!
如果真的想要删除所有的数据,我们建议truncate table 表名这种语句,因为效率高
*/
DELETE FROM stu_score WHERE id >= 3;
/*-------表的数据的修改UPDATE---------*/
/*
update 表名 set 列名=列值 , 列名=列值.... where 条件
注意:一定要挂条件,不然出现全部修改的情况!!!!!
*/
-- 修改id为1的名字为"建建"
UPDATE stu_score SET sname = '建建' WHERE id = 1;
-- 修改id为2的名字为"青青"
UPDATE stu_score SET sname = '青青' WHERE id = 2;
-- 不要忘记加条件,否则会修改全部
UPDATE stu_score SET class = '梅军建家里';
-- 修改id为1和id为2的班级为"一班"
UPDATE stu_score SET class = '一班' WHERE id = 1 || id = 2;
/*************************DQL语句*********************************/
/*
注意:
null和任何数据计算都为null,可以使用ifnull(字段, 默认值)来解决问题
条件相关的知识
>,<,=,!=(<>),>=,<=
&&(and) , ||(or), !(not)
between and: 和>= and <=一样的效果
in(集合) 简化 多个or的书写
null不可以使用=和!=,应该用is或者is not来判断
like--->模糊查询
_:匹配一个
%:匹配多个
*/
-- 查询一张表中所有的字段!!!
SELECT * FROM stu_score;
-- 查询sname和class这两列
SELECT sname,class FROM stu_score;
-- 去重查询(一般去重查询只针对一个字段)
SELECT DISTINCT class FROM stu_score;
-- 计算列(一般针对数字列(int或者double类型的列))
SELECT *,chinese+math+english AS 总分 FROM stu_score;
SELECT *,chinese+math+english 总分 FROM stu_score;
SELECT *,stu_score.`chinese`+ stu_score.`english`+ stu_score.`math` 总分 FROM stu_score;
-- 多个OR的语句很麻烦,可以使用in这个简化书写
SELECT * FROM stu_score WHERE id = 1 OR id = 3 OR id = 5;
-- 使用in简化or的书写
SELECT * FROM stu_score WHERE id IN(1,3,5);
-- 查所有的"青霞"
SELECT * FROM stu_score WHERE sname LIKE '%青霞%';
-- 查第二个字是"青"的人
SELECT * FROM stu_score WHERE sname LIKE '_青_';
|
|