A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张昭昭 初级黑马   /  2019-7-14 15:10  /  1187 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

-- 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 '_青_';











0 个回复

您需要登录后才可以回帖 登录 | 加入黑马