学习笔记——MySql的入门知识

一.MySql软件的安装


    1、官网下载最新版MySQL;
    2、配置MySQL环境变量,可参考下面这篇文章:https://jingyan.baidu.com/article/c1a3101e72fc9bde656debf7.html;
    3、安装指令:
        *    mysqld --initialize --console    初始化数据库(注意保存初始密码)
        *    mysqld --install MySQL           注册命令
        *    net start mysql                  启动服务器
        *    net stop mysql                   关闭服务器(请勿关闭服务器)
        *    mysql -uroot -p                  登陆自己机器的MySQL数据库
        
        此时为了以后登录方便,在mysql -uroot -p指令密码登陆之后,需要修改密码。
        *    改密码操作
            a、select 1;                     注意打上分号
            b、alter user user() identified by '新密码';
            c、select 1;
            
    4、exit;                                  退出MySQL服务器
    5、mysqld –remove                         删除mysql服务
    6、查看使用端口号: show global variables like 'port';(仅在mysql内部使用)
    7、重置密码:参考文章https://blog.csdn.net/gupao123456/article/details/80766154


    
    
二.数据库的操作

一个数据库的服务器中有多个数据库,一个数据库中有多个表
每个表有多个字段,字段和java中类的属性是对应的
每一条记录(行)对应的是一个java实例对象


    1.创建数据库:
        *    create database 数据库名字 (character set ‘字符集编码’ (collate ‘校对规则’))
        
        *    括号中的编码和校对规则常省略,并为默认的设置。
        
        *    因此常用创建格式:create database 数据库名字
        
    2.查询数据库:
        *    show databases;                                     查询所有数据库
        *    select database();                                   查询正在使用的数据库
        *    show table;                                             查询当前数据库所包含的的表
        *    show create database 数据库名字         查询创建的该数据库的定义信息
        
    3.选择/切换数据库:
        use 数据库名字;
        
    4.修改数据库:
        修改数据库的名字(这里的自己修改操作有点麻烦)
            *    备份数据库:
                    命令行模式输入:mysqldump -u root -p 需备份数据库 >备份文件名.sql
            
            *    恢复数据库:
                    a、创建空数据库:create database newDatabase;
                    b、使用新数据库:use newDatabase;
                    c、还原数据库:source 备份文件名.sql;
                    
            *    删除原数据库及备份文件,这样得到的新数据库newDatabase就是我们重新命名的数据库了;
                
        修改数据库的编码
            *    alter database 数据库名字 character set '字符集编码' collate '校验规则';

三.表

SQL语言是“非过程性语言”:写一句就会执行一个结果
而 过程性语言:写一条语句,需要依赖上一句甚至几句


    1.创建表:
        create table 表名(
            字段1 类型(长度) 约束,
            字段2 类型(长度) 约束,
                ······
            字段n 类型(长度) 约束
        )
        注意:*    表名小括号后要有分号
                   *    表每段后面都有逗号,最后一行没有符号
                   *    数据的类型后面有长度,如果是字符串类型,必须声明长度,其他类型可不写。int默认长度11
        
        字段的类型:
            *    字符串类型:char和varchar。其中char长度不可变,varchar长度可变。
            *    数值类型:tinyint,shortint,int,bigint,float,double
            *    逻辑型(对应boolean):bit
            *    日期型:data,time,datatime,timestamp(若不传入数据,默认选择当前系统时间)
            *    文本型:blob(二进制文件),text(字符)
            
        约束:
            *    主键约束:primary key        声明主键,默认非空且值唯一
                    可使用auto_increment    维护主键,自动增长(随表格内容+1)
            *    唯一约束:unique key        值唯一(如学生的学号,游戏的登陆账号等)
            *    非空约束:not null              值不能为空
            
    2.查询表:
        *    desc 表名;                        查询表结构
        *    show create table 表名;            查询建表语句、存储引擎和字符集
        
    3.修改表:
        *    rename table 表名 to 新表名;                                    修改表名
        *    alter table 表名 rename 新表名;                                修改表名
        *    alter table 表名 character set '字符集';                        修改字符集
        *    alter table 表名 add 字段 类型(长度) 约束;                    增加字段增加字段
        *    alter table 表名 drop 字段;                                    删除字段
        *    alter table 表名 modify 字段 类型(长度) 约束;               修改字段类型或约束
        *    alter table 表名 change 旧字段 新字段 类型(长度)约束          修改字段名称
        *    alter table 表名 engine ='新存储引擎'                          更改表的存储引擎
        
    4.删除表
        *    drop table 表名;
        *    alter table 表名 drop foreign key 外键别名;                   删除表的外键约束;
  

     
四.数据:

    1.增:
        *   insert into table 表名(字段1,字段2……)values(值1,值2,……);
        *   insert into table 表1 (字段1,字段2) select (字段1,字段2) from 表2;
                此时表2字段名可与表1字段名不同,但是数据类型必须相同
        
        注意:  * 数据与字段的类型相同;
                    * 字段长度需要控制;
                    * 字符串或者日期类型需要使用'';
                    * 采用第二种方式时,主键设为auto_increment时,主键值可设为null或此时index值;
                
    2.改:
        *   update 表名 set 字段1=值1,字段2=值2;                                      修改该字段所有值
        *   update 表名 set 字段1=值1 where 字段2(或主键)='值2';        修改满足条件的字段
        
    3.删:
        *   delete from 表名;                                   清除表中所有数据(一条一条删),支持事务,推荐使用;
        *   delete from 表名 where 字段1=值1;         清除满足条件的字段
        *   truncate 表名;                                          先删除整个表,再创建一个空表(效率高),不支持事务,删除数据无法恢复;
        
    4.查:
        *   select * from 表名;            查询表中所有字段
        *   select 字段1,字段2 from 表名            查询指定字段
        *   select distinct 字段名 from 表名;            过滤重复的数据
        *   order by 字段名 asc/desc            数据排序(末尾的asc/desc为升序/降序排列,不写默认升序)
        
        *   查询的列可以进行运算符运算;
        
        *   别名查询:使用as 别名(as可以省略)
                如,select chinese as sum from student;
                
        *   使用where条件进行过滤:
            a、算术符号< ,>, <= , >= , = ,<>(不等于);
            b、in(范围内取内容);
            c、is null; 判断是否为空
            d、and ,or,not;
            e、like  模糊查询;
                如like 李_或李%,'_'和'%'均表示占位符,区别是'_'表示只占一位,'%'可表示占多位;
                如like 李_;                表示李X;
                如like 李%;               表示李Xxx;
                如like %李%;           表示含李即可;
                
        *   聚集函数:
                count 统计数量,sum 求和、avg 均值、max 最大值、min 最小值;
                
        *   分组归类:
            group by 字段;               此处过滤用having ,不能使用where;        
            
        *   ifnull(字段名,0)        如果字段为空,则取值为0
        
        *   select 语句顺序:
                select ...from...where...group by...having...order by...
                select 字段名 from 表名 where 约束条件 having ··· order by 字段名(排序方式) ASC/DESC(升序/降序——默认升序)

                

五.添加外键


    1.创建时添加
        create table c_s(
            cid int,
            foreign key(cid) references class(cid)
        );
        
    2.创建后修改
         将创建表中已存在的主键设为外键
         alter table 当前表名 add foreign key 当前表名(关键字) references 关联的表(关键字);

猜你喜欢

转载自blog.csdn.net/weixin_42621338/article/details/82670269