zoukankan      html  css  js  c++  java
  • JavaWeb

    1.MySQL服务启动和关闭

      *命令台下输入services.msc

      *或者以管理员身份启动cmd,   输入 net start mysql

     

    2.MySQL登录和退出

      * mysql -uroot -p 加密码

      访问其他用户的mysql: cmd下输入 : mysql -h+IP地址  -uroot -p+连接谁,就敲谁的密码

                    或者mysql --host = ip地址 --user = root --password = 连接目标密码

      退出:quit或exit

     

    3.MySQL目录结构

      1.MySQL安装目录

        *配置文件 my.ini

      2.MySQL数据目录

        *数据库:文件夹

        *表:文件

        *数据

    4.SQL

      1.什么是SQL

        Structured Query Language:结构化查询语言    

          其实就是定义了操作所有关系型数据库的规则

     

    5.SQL通用语法

      *SQL语句可以单行或多行书写,以分号结尾

      *可使用空格和TAP键来增强语句的可读性

      *MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

      *三种注释

        *单行注释 -- 注释内容(必须有空格) 或 # 注释内容(MySQL特有)

        *多行注释

    6.SQL分类

       1) DDL(Data Definition Language)数据定义语言
                用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
            2) DML(Data Manipulation Language)数据操作语言
                用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
            3) DQL(Data Query Language)数据查询语言
                用来查询数据库中表的记录(数据)。关键字:select, where 等
            4) DCL(Data Control Language)数据控制语言(了解)
                用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

    7.DDL 操作数据库、表

      (1)操作数据库:CRUD

          *C(Create):创建

            # - - > 创建db3数据库,判断是否存在,并指定字符集为gbk

              create database if not exists db3 character set gbk;

          *R(Retrive):查询

            #查询所有数据库的名称:show databases;

            #查看某个数据库的字符集(查看某个数据库的创建语句):show create database 数据库名称;

          *U(Update):修改

            #修改数据库的字符集: alter database 数据库名称 character set 字符集名称;

          *D(Delete):删除

            #删除数据库 drop database 数据库名称;  

              drop databases if exist db3;

          *使用数据库

            #查询当前正在使用的数据库名称:select database();

            #使用数据库:use 数据库名称;

      (2)操作表

          *C(Create):创建

            #创建表:create table 表名称(

                  列名1   数据类型1,

                  列名2   数据类型1,

                   . . . . . 

                  列名n 数据类型n

            );

             #注意最后一列不需要加逗号

            #复制表:create table 表名 like 被复制的表名;

             #数据类型:

                1. int : 整数类型    *  age int,

                2.double : 小数类型  * score double(5,2),    #第一个参数表示最大有几位,第二个参数为小数点后面保留几位,此时最大值为999.99

                3.data : 日期,只包含年月日,yyyy-MM-dd

                4.datatime:日期,包含年月日,时分秒 yyyy-MM-dd HH:mm:ss

                5.timestamp:时间戳类型  包含年月日,时分秒 yyyy-MM-dd HH:mm:ss

                  *如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间来自动赋值

                6.varchar:字符串: name varchar(20); 表示姓名最大20个字符

              #案例:创建学生表

                create table student(

                    id  int,

                    name varchar(32),

                    age int,

                    score double(4,1),

                    birthday data,

                    create_time timestamp 

                     );

          *R(Retrive):查询

            #查询某个数据库中所有的表名称:show tables;

            #查看表结构:desc 表名;

          *U(Update):修改

            #修改表名:alter table 表名 rename to 新表名

            #修改表的字符集:alter table 表名 character set 字符集名称

            #添加一列:alter table 表名 add 列名 数据类型;

            #修改列名称 类型:1. alter table 表名 change 列名 新列名  数据类型;   2. alter table 表名 modify 列名  新数据类型;

              #删除列:alter table 表名 drop 列名;

          *D(Delete):删除

            # drop table if exists 表名;

     

    8.DML:增删改表中数据

      (1)添加数据:

          *insert into 表名(列名1,列名2...列名n) values (值1,值2,...值n);

        注意:

          *若表名后不定义列名,则默认给所有列添加值

          *除了数字类型,其他类型需要使用引号引起来(单双都可以)

      (2)删除数据

          * delect from 表名 【where 条件】

        注意:

          *如果不加条件,则删除表中所有数据

          *如果要删除所有记录:

            (1)delete form 表名; - - 不推荐使用,效率低,有多少记录,则执行多少次删除操作

            (2)truncate table 表名; - - 先删除表,再创建一张一样的空表,推荐,效率高

      (3)修改数据

          *update 表名 set 列名1 = 值1 , 列名2 = 值2,... ,【where 条件】

        注意:

          *如果不加任何条件,则会将表中所有记录全部修改

    9.DQL:查询表中的记录

      查询表中的记录:select * from 表名

      语法:

        select  字段列表  from 表名列表  where 条件列表  group by  分组字段  having 分组之后的条件 order by 排序  limit 分页限定 

      基础查询:

        (1)多个字段的查询 :select 字段名1,字段名2 from 表名称;

          SELECT  NAME,   age,  sex FROM  student3;

          *注意:如果查询所有字段,则可以使用*替代

        (2)去除重复

          SELECT DISTINCT address FROM student3;

        (3)计算列:一般可以使用四则运算计算一些列的值(一般只会进行数值的运算)

          计算math和english的和 :SELECT NAME,math,english,math + english FROM student3; 

          如果有null参与的运算,计算结果都为null 解决:SELECT NAME,math,english,math + IFNULL(english,0) FROM student3;

          ifnull(表达式1,表达式2)  表达式1:那个字段需要判断是否为null  表达式2:null字段的替换值

        (4)起别名:as 或省略 空格 

          SELECT NAME,math,english,math + IFNULL(english,0) AS 总分 FROM student3;

      条件查询:

        1.where 子句后跟条件

        2.运算符

          * >、<、<=、>=、=、<>不等于 或者 !=

          *BETWEEN...AND

          *IN(集合) 

          *LIKE '张%'  模糊查询

             *占位符 _ : 单个任意字符  % : 多个任意字符

          * is null  

          * and 或 &&

          * or 或 ||

          *not 或 !

        查询年龄大于20岁的人:SELECT * FROM student3 WHERE age >= 20;

        查询年龄为18,22,35的人:SELECT * FROM student3 WHERE age in (18,22,35) ;

        查询英语程序为null的人:SELECT * FROM student3 WHERE english is null;

        查询班里姓马的人:select * from student3 where name like '马%';

        查询姓名中第二个字时化的人:SELECT * FROM student3 WHERE NAME LIKE '_化%';

        查询姓名是三个字的人:SELECT * FROM student3 WHERE NAME LIKE '___';

        查询姓名中包含马的人:SELECT * FROM student3 WHERE NAME LIKE '%马%' ;

    10.DQL排序查询、聚合函数、分组查询、分页查询

      (1)排序查询 语法:order by 排序字段1 排序方式1,排序字段2 排序方式2

          *排序方式:

            *ASC:升序,默认的

            *DESC:降序

          按照数学成绩降序排名,如果一样,则按英语成绩降序排名:SELECT * FROM student3 ORDER BY  math DESC, english DESC;

      (2)聚合函数:将一列数据作为一个整体,进行纵向的计算

          1.count:计算个数

            一般选择非空的列:主键

            count(*) :只要一行中有一个值不会空,则算一个

            SELECT COUNT(IFNULL(english,0)) FROM student3;

          2.max:计算最大值

          3.min:计算最小值

          4.sum:求和

          5.avg:计算平均值

          *注意:聚合函数的计算会排除null值

            解决方案:选择不包含空的列或者使用IFNULL函数

      (3)分组查询:group by 分组字段

          *分组之后查询的字段:分组字段、聚合函数

            如:查询男女之间,数学的平均分,以及男女个数:

              SELECT sex,AVG(math),COUNT(id) FROM student3 GROUP BY sex;

          *where 和 having 的区别:

            *where在分组之前进行限定,如果不满足这个条件则不进行分组,having是在分组之后进行限定,如果不满足结果则不会被查询出来

            *where之后不可以跟聚合函数,having之后可以跟聚合函数

            如:查询男女之间,数学的平均分,以及男女个数,分数低于70分的不参与分组

              SELECT sex,AVG(math),COUNT(id) FROM student3 WHERE math > 70 GROUP BY sex;

            如:查询男女之间,数学的平均分,以及男女个数,分数低于70分的不参与分组,分组之后,人数要大于两个人

              SELECT sex,AVG(math),COUNT(id) 此处可以加别名 FROM student3 WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;

      (4)分页查询:limit  开始索引,每页查询的条数

          --每页显示三条记录
            SELECT * FROM student3 LIMIT 0,3; -- 第一页

            SELECT * FROM student3 LIMIT 3,3; -- 第二页

            SELECT * FROM student3 LIMIT 6,3; -- 第三页

          *公式:开始的索引 = (当前的页码 - 1)* 每页显示的条数

          *分页的操作是一个'方言',在不同的数据库是不一样的

    11.约束

      概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。

      分类:

        1.主键约束:primary key

        2.非空约束: not null    

        3.唯一约束:unique

        4.外键约束:foreign key

      *非空约束:not null  

        1.创建表时添加非空约束

          CREATE TABLE stu(
                id INT,
                NAME VARCHAR(20) NOT NULL -- name 为非空
            );

        2.创建表后,添加非空约束

          ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

        3.删除非空约束

          ALTER TABLE stu MODIFY NAME VARCHAR(20) ;

        

        *唯一约束:unique,某一列的值不能重复,唯一约束可以有null值,但是也只能由一个null

          1.创建表时添加唯一约束

            CREATE TABLE stu(
                  id INT,
                  phone_number VARCHAR(20) UNIQUE -- 手机号
                  );

          2.删除唯一约束 

            ALTER TABLE stu DROP INDEX phone_number ; 与删除非空约束不同

          3.创建表后添加唯一约束

            ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

      

        *主键约束:primary key  非空且唯一  一张表只能有一个字段为主键

          1.创建表时,添加主键约束

            CREATE TABLE stu_info(
                  id INT PRIMARY KEY ,
                    NAME VARCHAR(20)
               );

          2.删除主键  

            ALTER TABLE stu_info DROP PRIMARY KEY;

          3.创建表后,添加主键约束

            ALTER TABLE stu_info MODIFY id INT PRIMARY KEY;

          4.自动增长:如果某一列是数值类型的,使用auto——increment 可以来完成值的自动增长       

            创建表时,添加主键约束,并且完成自动增长

              CREATE TABLE stu_info(
                    id INT PRIMARY KEY AUTO_INCREMENT,
                      NAME VARCHAR(20)
                 );

            删除自动增长:ALTER TABLE stu3 MODIFY id INT;

            创建表后,添加自动增长:ALTER TABLE stu3 MODIFY id INT AUTO_INCREMENT;

      *外键约束:让表与表产生关系,从而保证数据的正确性

        1.创建表时,可以添加外键

          CREATE TABLE 表名(

            ......

            外键列 

            constraint  外键名称 foreign key  (外键列名称)  references 主表名称(主表列名称)

            );

        2.删除外键

          ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

        3.在创建表后,添加外键

          ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

          ALTER TABLE employee ADD CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id);

        4.级联操作,设置级联更新,设置级联删除

          ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)ON UPDATE CASCADE DELETE CASCADE;

  • 相关阅读:
    hdu 2147博弈找规律
    hdu 1851 巴什博弈
    hdu 1729 sg博弈
    hdu 2516博弈找规律
    (转载)博弈之SG函数
    poj 2234基础Nim博弈||sg博弈
    hdu 1730 sg博弈||nim博弈
    hdu 1847 博弈找规律
    n hdu 1760 [SG博弈]二维状态
    hdu 1849 nim博弈
  • 原文地址:https://www.cnblogs.com/caixiaowu/p/12950285.html
Copyright © 2011-2022 走看看