黑马程序员技术交流社区

标题: mysql第一天 [打印本页]

作者: 849618121    时间: 2018-12-10 17:22
标题: mysql第一天
本帖最后由 849618121 于 2018-12-10 17:27 编辑

-- 对数据库 --
SHOW DATABASES;-- 查询数据库
SELECT DATABASE();-- 查当前数据库
SHOW CREATE DATABASE test01;-- 查指定数据库
CREATE DATABASE test01 CHARACTER SET utf8;-- 增数据库
DROP DATABASE test;-- 删除数据库
USE test01;-- 使用数据库
-- 对数据库 --
-- 对表 --
CREATE TABLE t01(id INT,姓名 VARCHAR(32));-- 增表创建表
DROP TABLE t01;-- 删除表
RENAME TABLE t01 TO t;-- 改表名
SHOW DATABASES;-- 查所有表
SELECT * FROM t01 AS 表01;-- 查表用别名
DESC t01; -- 查表结构
ALTER TABLE t01 ADD 性别 VARCHAR(32) ;-- 增列-- 修改表结构 --
ALTER TABLE t01 MODIFY 性别 CHAR(1);-- 改列的类型
ALTER TABLE t01 CHANGE 性别 sex CHAR(1);-- 改列名和类型
ALTER TABLE t01 CHARACTER SET utf8;-- 改列编码
ALTER TABLE t01 DROP sex;-- 删列
SELECT id FROM t01;-- 查列-- 修改表结构 --
-- 对表 --
-- 对数据 --
INSERT INTO t01(id,姓名)VALUES(1,'张三丰'),(2,'张无忌');-- 增数据
INSERT INTO t01 VALUES(3,'火云邪神');-- 增数据
UPDATE t01 SET 姓名='黄蓉' WHERE id=1;-- 改数据
DELETE FROM t01 WHERE 姓名='黄蓉';-- 删数据不清空自动增长
TRUNCATE TABLE t01;-- 重置清空自动增长
SELECT * FROM t01;-- 查表中所有数据
SELECT * FROM t01 WHERE 姓名 LIKE '张%';-- 查姓张的模糊
SELECT DISTINCT FROM id,姓名 FROM t;-- 查去重
SELECT id AS 学号 FROM t01;-- 查列别名
SELECT id FROM t01 WHERE id=1;-- 查询条件
SELECT id,姓名 FROM t ORDER BY id DESC;-- 查询降序
SELECT id,姓名 FROM t GROUP BY id;-- 查询分组

                MySQl的服务启动/关闭
                        1 手动 任务管理器 服务 找到MySql
                        2 cmd--> services.msc 打开服务的窗口
                        3 用管理员打开cmd         
                                启动服务 net start mysql
                                停止服务 net stop mysql
        查看状态
                1 win+R services.msc
                2 netstart -ano查看本机配置
                3 netstart -ano | findStr"3306"找到PID然后去任务管理器结束进程
        开启服务
                net start mysql
        关闭服务
                1 net stop mysql 正常关闭
                2 管理员运行cmd taskkill /F /PID 6979 通过任务管理器PID强制关闭
                exit
通过IP地址访问
        mysql -h127.0.0.1 -uroot -p (quit/exit退出2方式)
        mysql --host=IP --user=root --password==链接目标的密码
MySql目录结构
        1 MySql安装目录
                bin二进制可执行文件 data数据目录 数据文件 日志文件 include C语言的信息 lib目录 /shareMySql错误目录
                my.ini核心配置文件
        2 MySql数据目录
                C盘 隐藏文件夹 data 下 数据库文件夹 下 表
                几个概念
                        数据库:文件夹
                        表:文件
                        数据:
SQL操作 SQL是一种规则
        1 什么是SQL?
                翻译过来是:架构化查询语言!
                其实就是定义了操作所有关系型数据库的规则,
                SQL是一种规则,只要是关系型数据库都能用SQL操作,
                每一种数据库操作的方式存在不一样的方式,称之为“方言”
        2 基本通用语法
                1* SQL语句可以单行或多行书写,以分号结尾,遇到分号才会结束。
                2 可以用空格和缩进增强语句的可读性show databases;
                3* MySql数据库的SQL语句不区分大小写 关键字建议区分大小写 最好大写
                4* 3种注释
                        单行注释 show databases;-- 查询所有语句名称 必须加空格 常用这种
                                                #查询所有语句名称 #可以不加空格
                        多行注释 show databases;/*查询所有语句名称*/
        3* SQL分类(面试)4大类
                1 DDL 客户端访问 操作数据库和表的 对数据库和表的增删改查
                        **对数据库CRUD增删改查
                                1 C(Create):创建数据库的3方式
                                        创建数据库:
                                                create database 数据库名;-- 创建新的数据库
                                        创建数据库判断不存在在创建:
                                                create database if not exists 数据库名;-- 判断如果不存在就创建
                                        创建数据库并指定字符集
                                                create database 名 character set utf8;-- 创建库设置字符集
                                2 R(Retrieve):查询数据库
                                        查询所有数据库的名称
                                                show databases;-- 查看所有数据库
                                                        infofmation_schena
                                                        mysql核心数据库很多表
                                                        performance_schena性能
                                                        test空的数据库
                                                show create database (mysql数据库的名称);-- 查看对应的数据库的字符集
                                3 U(Update):修改数据库
                                        修改数据库的字符集
                                                alter database 数据库名 chatacter set 字符集;
                                4 D(Delete):删除数据库
                                        删除数据库
                                                 database 数据库名称;
                                        判断数据库是否存在,存在在删除
                                                drop database if exists 数据库名;
                                5 使用数据库
                                        查询当前正在使用的数据库名称
                                                select database();
                                        使用数据库
                                                use 数据库名称;
                        **对表的操作
                                查询表的操作
                                1 C(Create):创建表
                                        1 基本语法:create table 表名(列名和列对应的类型);
                                                create table 表名(
                                                        列名1 数据类型1,
                                                        列名1 数据类型1,
                                                        列名1 数据类型1
                                                );
                                                最后一列不要加逗号(,)
                                        数据类型
                                                1 int整数类型
                                                        age int,
                                                2 double小数类型
                                                        score double(5一共最多有几位,小数点后保留几位2)
                                                3 date日期类型 yyyy-MM-dd
                                                4 datetime日期类型 yyyy-MM-dd HH:mm:ss
                                                5 timestamp时间错类型 yyyy-MM-dd HH:mm:ss
                                                        如果将来不给这个字段复制,或赋值null,则默认用当前系统的时间赋值
                                                6 varchar:字符串类型
                                                        name varchar(20)姓名最大20个字符
                                                        char(11)和varchar(11)区别
                                                                存入长度不能超出指定长度
                                                                char长度会把长度固定 长度不足的用空格自动补满
                                                                varchar不超范围根据文本类容改变
                                                        test        超大文本/文本文件的保存
                                        复制表create table stu like student;
                                2 R(Retrieve):查询表
                                        查询某个数据库中所有的表名称
                                                show tables;
                                        查询表结构
                                                desc 表名;看表结构的类型的
                                                show create table 表名;命令行下
                                3 U(Update):修改表
                                        1 修改表名
                                                rename table 表名 to 新的表名;
                                                alter table 表名 to 新的表名;
                                        2 修改表的字符集
                                                alter table 表名 character set 字符集名称;
                                        3 添加一列
                                                alter table 表名 add 列明 数据类型 约束;
                                        4 修改列的名称和类型
                                                改类型和名字alter table 表名 change 列名 新列名 新数据类型;
                                                只改类型        alter table 表名 modify 列名 新数据类型;
                                        5 删除列
                                                alter table 表名 drop 列名;
                                4 D(Delete):删除表
                                        drop table 表名 ;不确定直接写这个
                                        drop table if exists 表名 ;
                        
                2* DML 客户端访问 删改表中的数据 *常用
                        客户端图形化工具SQLyog
                                1 增 添加数据
                                        语法:
                                        1 insert into 表名(列名1 数据类型,列名2 数据类型,列名n 数据类型) values(1,“张无忌”,18);
                                        2 INSERT INTO 表名 VALUES(值1,值2,...,值N);
                                        注意事项
                                                1 列名和值要一一对应
                                                2 如果表名后不定义列名,则默认给所有列添加值
                                                3 除了数字类型,其他类型需要引号(单双都可以)引起来
                                2 删 删除数据**
                                        语法格式
                                        1 删除部分数据
                                                DELETE FROM 表名 WHERE 条件;
                                                当WHERE的条件满足就从表里删除数据
                                        2 删除表内所有数据
                                                --DELETE是一条条删除,不会清空AUTO_INCREMENT
                                                DELETE FROM 表名;
                                                
                                                --直接将表删除,重建,AUTO_INCREMENT重置为0
                                                TRUNCATE TABLE 表名;
                                        注意
                                        1 如果不加条件,则删除表中所有记录
                                        2 truncate table 表名:-- 删除表,然后再创建一个一模一样的空表
                                                delete from 表名 where 条件;-- 不推荐使用 ,有多少记录就会执行多少次删除操作
                                                        -->dml可以还原 因为id不会被覆盖 (可以通过事务进行还原
                                                truncate table 表名; 推荐使用,效率高,先删除表在创建一模一样
                                                        -->ddl不可以还原 id被彻底删了 (不可以通过事务还原
                                3 改 修改数据  
                                        语法格式
                                        update 表名 set 列名1 = 值1,列名2 = 值2 [where 条件];
                                        UPDATE 表名 SET 列名1=值1,列名2=值2,...,列名n=值n WHERE 条件;
                                                例子:UPDATE stu SET age = 117 WHERE id = 3;
                                        注意
                                                如果不加任何条件,则会将表中所有记录修改,字符串的值加引号
                3* DQL 客户端访问 查询表中的数据 *常用
                        查询表中的记录-->select * from 表名;
                                * select * from 表名;
                        (单表)基本        条件         去重         去重        分组         排序                  分页        模糊
                                        select        where        distinct        having        order by [asc/desc]        limit        like%/_
                        1.语法:
                                select字段列表
                                from表名列表
                                where条件列表
                                group by+列名 分组查询 割肉破 败
                                having分组之后的条件
                                order by+列名+[asc/desc]排序 奥德 败 写在代数第二 倒数第一是注释
                                limit分页限定
                                注释
                        2.基础查询
                                1.多个字段的查询
                                        select 字段名 FROM 表名;
                                        * 注意
                                                * 如果查询所有字段,则可以使用*来替代字段列表。
                                2.去除重复        distinct 带思停克特
                                        * 写在列名前面,列名都重复才会去重
                                3.计算列
                                        * 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
                                        * ifnull(表达式1,表达式2);
                                                *表达式1:哪个字段需要判断是否为null
                                                *如果该字段为mull后的替换之
                                4.起别名
                                        预防直接中文乱码 as成中文 在查询 也可以用空格代替
                                        *as:as也可以省略
                        3.条件查询
                                1.where子句后跟条件
                                2.运算符
                                        * <>是不等于 =是等于
                                        * AND/OR
                                       
                                        * between...and... 区间范围 WHERE后写
                                        * between...or... 没交集 在什么或者什么
                                        * is null/ is not null 是否为null/是否不为null
                                        * in(集合)匹配指定元素
                                        * like '%张%'模糊查询        
                                                %代表0或者多个字符        张XX '张%' X德X '%德%'
                                                _代表单个字符        张X  '_化%'
                                                where 列名 LIKE '张%' AND ...;
                4 DCL 客户端访问 授权的 用于权限和安全访问的操作 (开发没关系 是运维用的
                        查询语句
                        1排序查询
                                * 语法:order by 子句
                                        * order by 排序字段1 排序方式1,...
                                        SELECT * FROM 表 ORDER BY 列 -- 排列方式;
                                * 排序方式:
                                        * ASC:升序,默认的。
                                                SELECT * FROM 表 ORDER BY 列1 ASC,列2 ASC;
                                        * DESC:降序。
                                                SELECT * FROM 表 ORDER BY 列 DESC;
                                * 注意:
                                        * 如果有多个排序条件,则当前面的条件值一样时,才会判断第二条件
                        2聚合函数--通常配合分组进行操作,将一列数据作为一个整体,进行整体排序
                                * 语法:
                                        1 count计算个数
                                                格式:SELECT COUNT(列) FROM 表;
                                                主键 id
                                                count
                                        2 max计算最大值
                                        3 min计算最小值
                                        4 sum计算和
                                        5 avg计算平均值
                                * 注意:聚合函数的计算会排除null
                                        解决方案:
                                                1 选择不包含非空的列计算(主键)
                                                2 IFNULL函数
                        3分组查询 GROUP BY
                                1 语法:
                                        格式:SELECT (分组/聚合) FROM 表 GROUP BY 列;
                                2 注意:
                                        分组之后查询的字段:分组字段、聚合函数
                                        where和having区别
                                                where在分组之前进行筛选限定,如果不满足条件,不参与分组
                                                        having在分组之后进行二次筛选,如果不满足结果,则不会被查询出来
                                                where后不能跟聚合函数/having可以进行聚合函数的判断
                        4分页查询
                                1 语法:limit 开始的索引,每页查询的条数;
                                        SELECT * FROM 表 LIMIT 0,3;-- 第1页从0开始查到3
                                        SELECT * FROM 表 LIMIT 3,3;-- 第2页开始索引是3查寻3条
                                2 公式;开始的索引 = (当前页码 -1) * 每页显示的条数
                                3 limit是一个MySql‘方言’
               
               
               
               
        2非关系型数据库
前端
        html
        css
        js
        jquery框架
                ajax
后台
        servlet
        requert&response
        cookie&session
        jsp& el&jstl
        listeneer&filter

服务器
        tomcat
项目管理工具
        maven
        




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2