MySql数据库快速入门与常用sql语句

MySql数据库入门与常用sql语句

1.常见数据库

    1.oracle数据库(大型)   ------oracle甲骨文
    2.DB2数据库(大型)      ------IBM
    3.sqlserver(中型)      ------微软
    4.MySQL(小型)          ------oracle

2.什么数据库

   持久化技术
        1.IO
        2.数据库

数据库:就是一个文件系统,通过标准SQL语言操作文件系统中数据 ---- 用来存放软件系统的数据

3.数据库中存放的是什么样的数据?

关系型数据库

4.mysql数据库的安装与卸载

    1.卸载
          1.查找数据文件的位置
                  因为数据文件与安装文件可能不在一个位置
                  删除数据库后可以不会将数据文件删除
                  datadir=""
          2.正常删除数据库
                  在控制面板jiangmysql删除
          3.删除数据文件
          4.将mysql遗留文件删除
          
     2.安装
            mysql数据库的默认端口3306
            
            1.关于编码
                    选择utf8
            2.目录配制环境变量path
            3.设置root密码
            
            测试是否成功
                  cmd------>mysql -u root -p 回车
                  输入密码
                  如果看到 mysql 成功
      3.重置mysql密码
            
            1.在运行中输入 services.msc 停止mysql服务
            2.在cmd下输入  mysql --skip-grant-tables 启动服务器 光标不动(不要关)
            3.新打开cmd  输入mysql -u root -p 
            use mysql;
            update user set password=password('abc') WHERE User='root'  ;
            4.关闭两cmd 任务管理器中结束mysql进程
            5.在服务管理页面 重启mysql服务

5.mysql数据服务器与数据库与表的关系

          mysql -h   主机名  -p 端口 -u用户名 -p
          输入密码             
    
          如果自己电脑安装了mysql服务器
          mysql -u root -p

6.数据在数据烤肉中的存储方式 与java中的数据关系

数据库中表中的一个字段相当于一个属性
一个记录相当于一个类的对象

7.sql介绍

        sql结构化查询语句
        sql非过程性语言
        
        sql分类(四种)
                DDL  数据定义语言  用来定义数据库 表等
                DML  数据操纵语言  update insert delete
                DCL  数据控制语言  用户权限事务处理
                
                DQL(重点)  数据查询语言  select

标题数据库(DB)

1.创建数据库

1.1 简单创建数据库

create database 数据名;

1.2 创建数据库时可以指定编码集与校验规则

CHARACTER SET:知道数据库采用的字符集
COLLATE:指定数据库字符集的比较方式
                   
create database 数据库名 character set 编码集 collate 校验;
                   
create database  数据库名 character set="utf8" collate="utf8_general_cl";
` ` `                 
### 2.使用数据库

```sql
use 数据库名称  

3.删除数据库

 drop database 数据库

4.查看数据库

show databases; //查看所有数据库
show create database  数据库名称 ;  //查看指定数据库

5.修改数据(了解)

alter database 数据库名 character set="编码集" collate="校验"  

6.查看当前使用的数据库

select database();

练习

创建一个名称为mydb1的数据库.
                    create  database  mysql;
创建一个使用utf8字集的mydb2
                    create database mydb2 character set="utf8" ;
创建一个使用utf8字符集,并带校对规则的mydb3数据库       
                    create database mydb3 character set="utf8" collate="utf_general__cl";

数据表(table)

1.简单创建

create table 表名(
       字段名称1 类型,
       字段名称2 类型,
       ..........
       字段名称n 类型
)      

2.指定编码与校验

   create table 表名(
          字段名称1 类型,
          字段名称2 类型,
          ..........
          字段名称n 类型
   ) character set=编码 collate=校验

3.mysql数据表中的类型

                   与java中的类型对比
                 
       Java类型                     mysql类型
       整型
       byte| short |int |long          TINYINT| SMALLINT  INT | BIGINT
                       
       boolean                      boolean
       true/false               
                      
       字符串(字符)                 varchar char
                                              charvarchar的区别
                                              varchar 可变`字符串 "hello"
                                              char 不可变        "hello"
       
       日期                          日期
       java.util.Date                date -----2010-10-10
       java.sql.Date                 datetime--2010-10-10 11:11:11
       java.sql.Time                 time      11:11:11
       java.sql.TimeStamp            timestamp 15852156486  
       
       小数
       float                          float
       double                         double
                                      decimal
                                      
       数据库中的大数据
                   在数据库中的大数据使用  IO
                   InputStream/OutPutStream------------blob
                   Reader/Writer           ------------text
                         
       
       
   ---------------------------
       date        日期
       time        时间
       timestamp   时间戳
       datetime    日期时间
       
                       
          示例:创建一个类                             
          create  table student(
               id  int,
               name varchar(10),
               birthday date,
               chinese decimal(5,2)     [总共5位数,小数点后面2]
               
          )         
   

4.查看表结构

show tables;
show create table student;                         

练习

   1.创建  create database 库名 character set="utf8" collate="utf8_general_ci";
   2.删除  drop database 库名
   3.查看  show database;   show create database 库名;
   4.修改数据库编码  alter database 库名 character set="" collate="";
   5.切换数据库  use 库名;
   6.查看当前使用的数据库 select database();

操作表

1.创建

  create table 表名(
               字段名   类型
           ) character set="" collate="";

2. 表中的字段类型

                           int
                           varchar  char
                           float double decimal
                           text blob
                           date datetime

3.查看

  desc 表名;
  show tables;
  show create table 表名;

表的约束

表的约束一共有六种
约束用来保证数据有效性和完整性

主要介绍三种

1.主键约束

主键有两个特点:非空 唯一
          id int primary key auto_increment, //mysql字段自动增长:auto_increment
                                             //sqlserver自动增长:identity(1,1)
                                             //oracle自动增长    sequence序列     

2.非空约束

name varchar(5) not null unique, //不为空,且唯一   

3.唯一约束

表的结构修改

1.添加字段

  alter table 表名 add 字段 类型;
   alter table users add birthday date;

2.修改字段类型

                  alter table 表名 modify 字段 类型 ;
                  alter table users modify birthday datetime;

4.删除字段

                  alter table 表名 drop 字段;
                  alter table users drop  birthday;

3.修改字段 change

                  alter table users change 旧字段名称 新字段名称 类型;
                  alter table users change birthday entry_date date;

5.修改表的字符集

                  alter table 表名 character set=字符集;

6.修改表名

                  rename table 表名 to 新表名
                  rename table users to emp;

7.删除主键

           alter table 表名 drop primary key;
           主键不能自动增长
          
          create table users(
            id int primary key auto_increment,
            name varchar(20),
            birthday date,
          )

操作数据表(update delete insert select)

最简单的查询

select * from 表名; 查看表中的数据

1.insert操作

 基本格式1
         insert into 表名(字段,...)  values();            
         insert into users(id,name,birthday) values (1,'Tom','1990-1-1');     
     注意:只有数值类型可以不使用引号,其他类型必须要单引号;            
     
 基本格式2
           如果是对表中所有字段添加操作
           insert into 表名(字段名) values(1,...);
 基本格式3
           可以对指定字段进行添加操作
           insert into 表名(字段名) values(,...) ;        
           insert into users(id,name) value (1,'james');           
       如果表中的某个字段是auto_increment ,添加时可赋值为null,这样会自动增长
     
 插入中文纪录
 
         insert into users values(null,'张三');  
         错误原因:mysql  client   采用默认字符集
         
 修改编码
         1.控制台命令行.
                 show variable like 'character%';
                 修改客户端编码
                 set character set_client =gbk;//输入时编码正确
                 修改结果编码集
                 set character_set_result=gbk;//查看时编码正确
                 
         2.修改配置文件. my.ini
                 
                 在my.ini文件中找到
                 [client]
                 
                 port=3306
                 
                 [mysql]               
       
                 default-character-set=编码
                 
                  这样修改后对
                  character_set_client
                  character_set_results
                  character_set_connection
                  编码进行修改
                  这三个是针对客户端

2. update语句

  基本格式:
               update 表名 set 字段=;
                   一般情况下会加上where条件,如果不加,是对整个字段赋值
               update 表名 set 字段1=2,字段2=2... where id=1,id=2; 

3.delete 语句

delete from 表名 where 条件
          
          如果不加条件,相当于删除表中的所有数据
          delete是删除记录的,不能删除某一列数据
          只能删除表中内容的,而不能删除表结构
          
       面试题:
              delete.drop,truncate区别
                   1.detelete,truncate是用来删除表中数据,drop是删除表结构
                     truncate 是先将表结构删除,再重新创建表结构.   
                     
                   2. delete 是受事务控制的,可恢复(DML)
                      truncate不受事务控制,不可恢复(DDL)
                      
                   3.delete可以对指定数据进行删除
                     truncate 只能删除所有数据
                     
          drop table 表名
          truncate table 表名                   

4. select 语句

基本select (1)


                          select 字段 from 表名;
                          select * from;代表查询表中所有字段值,不建议用
                          
                          如果支队某几个字段进行查询  
                          select 字段1,字段2,... from 表名.
                          
                          distinct 用来消除重复值
                          

基本select (2)

     1.select 语句可以对查询的字段进行运输
     2.可以使用as给字段起别名(as可以省略) 

查询学生三科成绩,显示时,显示姓名与三科总成绩.      

    select name as '姓名' ,(Chinese+math+English)/3 as '平均分' from student;
    select name,Chinese,math+10,English from student;
        
查询时可以使用where子句进行过滤查询

     where 经常使用的运算符
              1.关系运算符    >  <  <=  >= =  <>!=
                  select name,Chinese,math,English from student where Chinese in(85,95);
              2.in
              3.逻辑运算符 and or not       
              4.is null 判断空  is not null 判断非空
              5.like  模糊查询
              6.between ...and...
                 相当于  大于 and 小于
                 注意 between后是小值 and后面是大值
                 
                 查询语文成绩在80-90之间的
                 select * from student where Chinese<=90 and Chinese>=80;
                 select *from student where Chinese between 80 and 90;
         
             
              
              查询姓张的人的信息
              select * from student where name like '张%'
              查询姓名为关某某的人的信息
              select * from student where name like '张_'  (只找一个)  
              
              %匹配多个字符
              _匹配一个字符          
select 中的order by

排序:

select 字段 from 表名 where 条件 order by 字段 asc|desc;
   asc  升序
   desc 降序
   注意order by 位于语句的最后
   
   select * from student order by Chinese desc; 
   select id,name,Chinese,math,English,Chinese+math+English as total  from student  order by Chinese+math+English desc; 

聚集函数 (统计函数 聚合函数)

count
select count(*) from 表名;
查看表中的记录条数

 如:
 统计一个班共有多少个学生?
       select count (name) from student;
 统计一个班语文成绩大于90的学生有多少个?>
       select count(*)  from student where Chinese>90;
 统计总分大于260的认输有多少个?
       select count(*) ,Chinese+math+English from student where Chinese+math+English>260;
sum
统计符合条件的列的总和

聚集函数当某一字段的值为null,会自动转换为0
而如果null与其它值做+运算,结果为null.

mysql中有一个函数ifnull
ifnull(English,0)

求所有学生的总成绩如果成绩为null,0select sum(ifnull(Chinese,0)+ifnull(math,0)+ifnull(English,0)) from student;

练习  
      统计一个班的数学总成绩?
            select sum(math) from student ;
      统计一个班的语文,数学,英语各科总成绩   
            select sum(Chinese),sum(math),sum(English) from student;    
      统计一个班的语文平均分
            select sum(Chinese)/count(Chinese) from student;  
avg
平均值
select  avg(math) fromstudent;
          
          求一个班的总分平均分 
                 select (sum(Chinese)+sum(math)+sum(English))/count(*) from student;
                 
                 select avg (Chinese+math+ifnull(English,0)) from student;  
                   
       max/min
                求列中最大值/最小值
                
                练习:
                       求班级最高分和最低分
                       select max(Chinese+math+English) as '最高分',  min(Chinese+math+English) as '最低分' from student;

5.mysql数据库的备份与恢复

1.数据库备份

在数据外面对数据库内容进行备份
cmd > mysqldump  -u  用户名  -p 数据库名 > 文件名.sql     

2.恢复数据库

首先要创建出数据库,然后进入数据库,在数据库内部进行          
source 文件名.sql  //在mysql内部使用

在外部对数据库进行恢复也必须先把数据库创建出来
mysql -u 用户名 p 数据库名<文件名.sql   //在cmd下使用         

2.多表设计

在实际开发中,表与表之间是存在关系的,也就是说,表与表之间存在关联

关联分为几种:

1.1对1

        例如     人与身份证
        假设   人具有   姓名  年龄
               身份证   身份证号
               
         1对1关系怎样关联数据?
                在任意一方只要添加一个字段来描述关联关系

2.1对多(开发中最常见的一种关系)

               例如:员工与部门
               
               假设:员工有信息:   员工信息   员工工资
                    部门信息:     部门名称   部门地址
                    
                一个员工属于一个部门,一个部门可以有多个员工
                
                1对多关系怎样关联数据?
                         在多的地方添加1的一方的地段信息

3.多对多

                  例如:老师与学生                    
                   
                  老师属性   姓名
                  学生属性   姓名              
                              
                   多对多关系怎样关联数据?
                              会产生一张中间表,用来描述多对多关系.    
                              
          使用外键约束,可以保证数据完整性 

多表查询

          笛卡尔积 
          多表关联sql
                    
                    select* from 表1,表2;
                    select * from emp,dept;
           怎样消除笛卡尔积
                    
                    将要查询的两种表的关联数据进行等式比较.       
                    
                    select  * from 表1,表2 where 表1,字段=表2,字段;
                    
                    select * from emp inner join dept where emp.dept_id=dept.id;     

你可能感兴趣的:(数据库相关)