首页 > 代码库 > MySQL总结

MySQL总结

1.数据库定义:
     数据的概念:数据是描述事物的符号,这些符号可以是数字,文字,图片,声音,图像等,数据可以是多种形式,都可以经过数字化存入计算机.
     计算机里描述一个事物,包含了多种数据类型的信息,抽取事物的典型特征,组成一条记录,
以特定的数据格式定义,
     name,age,sex,home_add,school 就组成了基本的数据记录,
 
     数据库(database)DB:
     建立在计算机存储设备上的数据仓库,并且是按照一定的格式,
     特点:
          可以长期存放,可以共享,
          较小的冗余度,较高的数据独立性,以扩展性,
     数据库管理系统(database management system)DBMS:
          有了数据 和库 的概念,如何存储,获取,维护,优化数据就是关键,就要用到数据库管理系统,
          流行的数据库有,mysql ,oracle ,sq lite ,access, ms sql server 
          
 
mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
 
 
 
mysql就是一个socekt服务端
客户端软件
  mysql自带
  python模块
2.数据库的分类:
     
     以上都是一个软件,都有两个主要功能:
     a.将数据保存到文件或者内存,
     b.接受 命令,对文件进行操作,
     注意:都不需要自己创建文件和文件夹,都是通过命令来进行文件操作,统称为数据桔管理系统(DBMS)
 
 
3.认识sql语言:
     sql (structured query language) 结构化查询语言
    sql 主要用于存取数据,查询数据,更新数据和管理关系数据库系统,
     sql 分为3类:
          DDL 语句 数据库定义语言: 命令有,create,drop,alter
          DML 语句 数据库的操作语言: 插入数据instert ,删除数据 delect, 更新数据update ,查询数据select
          DCL 语句 数据库控制语言: 控制用户访问的权限 grant,,revoke
 
5.数据库名字的命名规则:
          区分大小写,
          可以有字母,数字,下划线 ,@, #, $ 组成
          名字须唯一
          不能使用关键字 ,如create,select
          不能单独使用数字
          最长128位字符
 
数据库 database
          文件夹 tables;
          文件     table;
 
6.数据库的操作
`          1.查看数据库 
           show databases; 查看该库的所有数据库
 
               mysql  存放用户权限相关的数据
               use mysql 进入mysql数据库>select user from user;查看登录到mysqlde的用户,
                    创建用户:
                         create user ‘alex‘@‘*‘(ip) identified by ‘123‘
                                           ‘用户名‘ ip地址  密码
                    授权:
                         grant all privileges on db1.t1 to ‘alex‘@‘%‘;
                              all privileges 表示所有权限,包含select(查询),insert(插入),update(更新),
                              on db1t.t1 表示对文件夹下的t1文件有权限
 
               test 用于测试数据
               information_schema - mysql 本身架构相关数据
 
           show create database db1 #查看数据库创建的方式
 
           2.进入数据库
           use 数据库名  --进入后无法退回,通过use进行切换
          show tables 显示当前库中所有的表
          select database();查看当前数据库
 
          3.删除数据库
          drop database 数据库名字;
 
          4.修改数据库
 
          alter database db1 charset utf8;
 
          2.创建数据库
        
          create database 数据库名 default charset utf8  
 
7.用户管理
          创建用户    create user ‘用户名‘@‘ip地址‘ identified by ‘密码‘;
 
          删除用户     drop user ‘用户名‘@‘IP这地址‘;
          
          修改用户     rename user ‘用户名‘@‘IP地址‘; to ‘新用户‘@‘ ip‘地址;
          
          修改密码     set password for ‘用户名‘@‘ip地址‘ = password(‘新密码‘)
     注意:
          用户权限相关数据保存在MySQL数据库的user表中,所以也可以直接对其操作(不建议)
 
 
8.表的操作
          1.创建表 create table 表名(
                              字段 类型[约束条件],
                              字段 类型)[character set xxx];
          例子:
          create table t1(id int ,name char(10)) default charset=utf8;
约束条件:
     primary key (非空且唯一);
      一个表中只有一个主键,
     约束(不能重复不能为空);加速查找
 
     unique  唯一约束
     not null     非空约束
     engine=innodb  #防止双方数据出现错误,可以实现数据回滚,   支持事务,原子性操作
     
     myisam 不支持数据回滚
         
列子:
     create table t3(id int auto_increment,name char(10)) engine=innodb default charset=utf8;
 
     auto_increment 自增
     注意:
     auto_increment 和primary key一起用,否则报错
     一张表中,只能有一个auto_increment和primary key
 
     创建表的标准格式:
     create table t1(id int not null auto_increment primary key,name char(10))engine=innodb default charset=utf8;
 
          2.查看表信息
          desc 表名 ,查看表结构,包含每个字段的信息,
          show columns from 表名 ,查看表结构
          show tables ,查看库中所有的表
          select * from 表名;,查看表里的所有列,
             select name,id from 表名;,查看name列,id列,
          show create table 表名; 里面包含了表创建时的各种信息,包含编码格式6
          show create table 表名 \G; 竖着看,更方便
          3.修改表结构
               3.1 增加列(字段)
               alter table 表名 add 列名 类型 [约束性条件] [first | after 字段名];
               3.2 修改列(类型)
               alter table 表名 modify 列名 类型 [约束性条件]
               3.3 修改列名
               alter table 表名 change 列名 新列名 类型 
               3.4 删除一列
               alter table 表名 drop 列名;
               3.5 修改表名
               rename table 表名 to 新表名;
               3.6 修改表的所有字符集
               alter table 表名 character set utf8;
               3.7 插入数据
               insert into t1(id,name) values(1,‘egon‘);t1是表名
               3.8创建文件
     4.删除表
          drop table t3;
     5.清空表,
          delete from t3;当再次插入数据是,会从上次的id号继续,表的字段(列名)都还存在
          truncate table t3; 删除表,表和记录都删除,直接从id 是1的开始删除,比delete快
 
9.数据类型:
     9.1数字: tinyint
              1.int
              2.bigint
              3.float,都是不精准的数据类型,越长越不精准
              4.double,都是不精准的数据类型,越长越不精准
              5.decimal 是最精准的数据类型,按字符串类型存的,但还是小数
 
num decimal(10,5)decimal 有2个参数,第一位是数据的总位数,后面参数代表小数点后的位数
     9.2字符串:
          1.char(10): 速度快,定义了10个字符,不够空格填充,最多255个字符
         2. varchar(10) :节省空间,定义10位个字符,没有写够,有多少,算多少,省内存,最多255个字符
         3.enum(‘x‘,‘xl‘,‘xxl‘);表示只能从后面的数据里取,选项固定,不经常修改的,
          create table shirts(
                         name varchar(40),
                          size enum(‘x_small‘,‘small‘,large‘,‘x-large‘)                        
);
          insert into shirts(name,size) values(‘aa‘,‘large‘)
 
         4.set(‘a‘,‘b‘.‘c‘)表示可以插入后面数据的任意组合
     create table myset(
               name varchar(40),
               col set(‘a‘,‘b‘,‘c‘));
       insert into myset(name ,col) values(‘xxxx‘,‘a,b‘)
       insert into myset(name,col) values(‘xxxx‘,‘b,c‘)
          
10.操作文件中的内容
     插入数据:
     insert into t1(id,name) values(1,‘alex‘);
     删除数据;
     delete from t1  where id<6 #where 后面跟条件,指定删除
     修改:
     update t1 set age=18;
     update t1 set age=18 where age=17; 修改age=17 的数据
     
11.创建表
create table t1(id int primary key auto_increment ,
               name varchar(20),not null,
               age int,
               salary float(10,2))engine=innodb default charset utf8; #
     
   where 条件
     < ,>,>=,<=,<>,!=
     between 80 and 100
     in(10,20,30)
       like ‘yuan%‘
         多个条件 可以使用逻辑运算符 and  or not 
     
     排序 order by ASC 升序  默认 /Desc 降序  位于select末尾
 
     group by 列名 ,可以跟having,进行筛选
        
     
 
 
 
 
 
 
11,主键, 保证数据的唯一性
 
12.外键,foreign key 
     一张表中的数据受限于另外一张表,2张关联,
 
     2t1表中的主键(id) foreign key t2(某列名)的
     
      constraint 约束 fk_1(名字) foreign key
 
 
 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 

MySQL总结