MySQL的必会基础

1、 regedit     进入注册列表

2、show  databases;  显示当前MySQL数据库中有多少个小的database

3、use database名字; 选择一个database来使用

4、show tables;     为了显示当前的database中有多少个table

5、SQL结构化查询语言(Structured  Query Language)

       (1)DDL数据定义语言(Data Manipulation Language)

                  用来定义数据库中的对象(database table)

                create 创建       drop 删除    alter  修改

        (2)DML数据操作语言(Data Manipulation Language)

                    用来操作数据库表格中的数据(信息)

                    新增insert      修改update    删除delete   查询select   

                    DQL(Data Query Language)

                        select       where     group by     having      order by

           (3)DCL数据控制语言(Data Control Language)

                    用来控制数据库中用户的权限

                    grant          revoke

            (4)TPL事务处理语言(Transaction Process Language)

                        可以理解为   多线程并发操作同一个文件

                        begin  transaction

                        操作

                        commit;提交    rollback;回滚   save  point  保存还原点
6、DDL数据定义语言

(1)Mysql创建database

            create database 数据库名;

(2)database里创建table(表)

            create table 表名(

                    列名   数据类型(长度),

                    列名   数据类型(长度),

                    列名   数据类型(长度)

            )character set utf8;                    (character set utf8是修改表格的字符集,可以存中文)

(3)通过DDL语句修改表格的结构

        <修改表名>  alter table 原表名 rename  [to] 新表名 ;

        <修改原有的列(列名、类型、长度)>alter table 原表名 change 原列名 新列名 新类型 新长度;

        <新增一个列>alter table 原表名 add 新列名 新类型 新长度;

         <删除一个原有的列>alter table 原表名 drop 原列名;

(4)删除table、删除database

            drop table 原表名;

            drop database 数据库名字;

7、DML数据操作语言

(1)新增记录

        insert  into 表名字(列名,列名) values(值,值);

        insert into 表名字 values(值,值,值);

        insert into 表名字 values (值,值,值),(值,值,值),(值,值,值);

(2)删除记录

        delete into 表名字 [where...];

(3)修改记录

        update 表名 set 列 = 值,列 = 值[where...];

(4)查询记录

        select(列,列,列)from 表名 [where...];

        select * from 表名[where...];

8、条件筛选where

where后面可跟的东西

(1)比较运算符>、<、=、>=、<=、!=

(2)算数运算符+、-、*、/

(3)逻辑与算符and 、or、not

                  and和or同时出现,and的优先级更高

(4)[not]between and   包含前后两端的值

(5)[not] in  满足其中一个就可以  in (v1,v2,v3)

(6)like   模糊查询

                %  用来代替0-n个字符

                _  用来代替1个字符(有且只有一个)

9、排序(连接在查询语句之后)

            order by 列

          (1)   ASC  升序排列

        (2)DESC 降序排列

10、函数

        函数可以放置在什么位置上
            查询中用来显示的部分--->select 函数(列) from 表格
            条件筛选的后面    --->select 列 from 表格 where sal > 函数(值)

        (1)比较函数  

                    isnull(值);  是空值返回1,非控制返回0

        (2)数学函数

                    pow求次方     abs求绝对值        floor 向下取整         mod(5,2)取余数            round()四舍五入取整

         (3)日期和时间------Date类    Calendar类

                    now()     year(date)     month()    day     week

         (4)控制流程函数(转换函数)

                    if(条件,值1,值2);

                    ifnull(值,v);

         (5)字符串函数------对比java中String类记忆

                    length(str)

                    concat()

                    substr()    截取前三个(*,1,3)

                    instr(str,'a')

                    replace()

                    upper()

                    lower()

                    ltrim()                          rtrim()

                    lpad()                           rpad()

                    reverse()

       (6)分组函数(聚合函数)

                <1>distinct 列    如果有一样的列信息,会将一样的信息合并,行数会减少,查询到的每一个列,行数个数需要一致,

                       distinct  列,列    如果有两个以上的列,会将两个或多个列的组合当成一个整体,如果整体有一样的信息,才会去重复,否则会全部显示

                <2>     分组函数+分组条件

                            分组函数:count()、max()、min()、avg()、sum()

                            分组条件:group by 列

11、几个关键字的使用

        (1)in             满足查询子集中的某一个即可         

                                 in后面可以是固定的值,也可以是通过SQL语句查询出来的结果

                                 in()    not in()

        (2)all           满足查询子集中的全部才可以,不能是固定的值只允许写SQL语句(通过嵌套来获取子集)

                                 >all  <all  =all    !=all(结果与not in一致)

        (3)any         满足子集中的某一个即可,不能是固定的值只允许写SQL语句(通过嵌套来获取子集)

                                >any      <any     =any(结果与in一致)   !=any

       (4)some       与any完全一致

12、集合操作          并集union  (Oracle有--->交集intersect----->差集minus)

           union(结合  合并的意思  并集)

        (1)要求前后两个查询子列的列数是一致的

        (2)类型没有要求

        (3)拼接后显示的列名默认是前一个子集的列名

        (4)注意:union和union all的区别(建议以后尽量使用union all来做合并处理)

                            union 合并后去做重复的处理 ,性能比较慢,如果出现重复元素记录的是第一次出现的那一行

                            union all将两个查询的字节直接做合并,不作任何处理,性能比较快

13、主键约束(Primary  Key)

        (1)每一个表格内,只能有一个列别设置为主键约束

        (2)主键约束通常是用来标记表格中数据的唯一存在

        (3)主键约束要求当前的列,不能为null值

        (4)主键约束要求当前的列,值是唯一存在的,不能重复

        alter table 表名 add constraint 约束名字 约束类型(列);

        alter table myclass add constraint pk_myclass primary key(classid);

        (5)查询主键

        desc 表名;-----------》description描述

        show keys from 表名;

        (6)若自己定义的主键名字用不上,可简写为:

        alter table 表名 add primary key (classid);

        (7)主键自增

        如果没有启始值的说明,主键列的值会从1开始

        alter table myclass modidfy int(4) auto_increment;

        alter table myclass change classid int(4) auto_increment;

        主键的值从10开始

        alter table myclass auto_increment = 10;

        (8)删除主键

        alter table myclass drop primary key;

            注意:删除主键后,不重复的特性取消了,非空特性还在 

        alter table myclass modify classid int(4) null;

14、唯一约束(Unique [Key])

        (1)唯一约束表示的是列的值    不能重复     可以为空
        (2)唯一约束在表格中可以存在多个列  

        alter table 表名 add constraint 约束名 约束类型(列);

        alter table myclass add constraint uk_myclass unique [key] (loc);

        (3) 可简写为:

                alter table myclass add unique key(loc);//约束名默认的列名

        (4)删除唯一约束

                alter table myclass drop index 约束名;

15、非空约束

        在表格中的某一个列上添加非空约束

        当前列的值不能为null

        alter table 表名 modify 原列名 原类型 原长度 [not] null default xxx;

        alter table 表名 change 原列名 原类型 原长度 [not] null default xxx; 

16、外键约束(Foreign Key)

        (1)表格中可以有多个列被设置为外键约束

        (2)当前列的值可以为空,可以重复

        (3)当前列的值不能随便填写,值需要去另外一张表格门内寻找

        (4)外键是当前列的值受到另外一张表格某一个列的影响

        (5)另外一张表的列是唯一约束(主键,唯一)

        alter table 表名字 add constraint fk_当前表_关联表 foreign key(当前表的列) REFERENCES 关联表(关联表的列);

        (6)查看外键约束

         show keys from 表; 

         desc 表;   

         show constraint table 表名;

        (7)删除外键约束

        alter table 表名字 drop forrign 约束名字;

        注意:通过上面的语句其实已经将外键约束删除掉了,但是在创建外键的时候,自动在当前表格内添加一个新的key,

                    需要手动将这个生成的Key删掉,外键才真的删除干净

            alter table 表名字 drop key 约束名字;

17、检查约束(Check)

      例:  alter table student add constraint ck_sage check(sage>15 and sage<30);

18、表关系

        一对多

        多对多

        一多一

19、广义笛卡尔积

        广义笛卡尔积----->进行条件筛选------>等值连接

        广义笛卡尔积将两张表格或多张表格进行无条件的拼接,在拼接后的一张大表格的基础上进行了where的筛选,

        select * from A,B where 条件;

20、外连接

        select * from A left/right [outer] join B on 条件;

        (1)两张表格A和B  取决于谁的数据在左边显示呢?

                       A表格先出现   A左边显示

                       B表格后出现   B右边显示

        (2)left 和right 来控制哪一个表格的数据作为基准

                        作为基准的数据必须全部显示出来

                        非基准的表格按照on条件与之拼接

                        若找到条件拼接,则正常显示,若找不到满足条件的则null

21、内连接(自连接)

        select * from A inner join B on 条件;

        查询出来的结果与等值连接的结果一致

        内连接不分左右,不能省略inner关键字

        A和B是可以不同的两张表格

        A和B也可以是相同的一张表格

22、行列互换

        select 配合着group by 使用到了分组函数if()函数

23、分页查询 (limit a,b)

        select * from xxx where xxx group by xxx limit a,b;

        //a是起始索引,0开始,包含着当前的行

        //b一共查询多少记录

24、DCL数据控制语言

               控制用户的权限

        (1)创建一个新的用户      管理员身份

            create user '用户名'@‘IP’ identified by '密码';  mysql.user 表格 user,host

          修改密码:  update mysql.user set authentication_string = password('新密码') where user = '用户名';

        (2)创建的用户默认只有一个权限usage   只能登录

         grant 权限 on 数据库名.表名 to '用户'@'IP';          show grants for '用户名'@'IP';
           强烈建议  flush privileges;

        (3)回收用户所拥有的权限

            revoke 权限 on 数据库名.表名 from '用户名'@'IP';

        (4)删除用户

            drop user ‘用户名’@‘IP’;

            delete from mysql.user where user ='用户名' and host = 'IP';

        (5)常用的mysql权限如下:
                        数据库/数据表/数据列权限:
                        Create        建立新的数据库或数据表
                        Alter        修改已存在的数据表(例如增加/删除列)
                        Drop        删除数据表或数据库
                        Insert        增加表的记录
                        Delete        删除表的记录
                        Update        修改表中已存在的记录
                        Select        显示/搜索表的记录
                      -----------------------------------
                        References    允许创建外键
                        Index        建立或删除索引
                        Create View    允许创建视图
                        Create Routine    允许创建存储过程和包
                        Execute        允许执行存储过程和包
                        Trigger        允许操作触发器
                        Create User    允许更改、创建、删除、重命名用户和收回所有权限
                  全局管理MySQL用户权限:
                        Grant Option    允许向其他用户授予或移除权限
                        Show View    允许执行SHOW CREATE VIEW语句
                        Show Databases    允许账户执行SHOW DATABASE语句来查看数据库
                        Lock Table    允许执行LOCK TABLES语句来锁定表
                        File        在MySQL服务器上读写文件
                        Process        显示或杀死属于其它用户的服务线程
                        Reload        重载访问控制表,刷新日志等
                        ShutDown    关闭MySQL服务
                   特别的权限:
                        All        允许做任何事(和root一样)
                        Usage        只允许登录,其它什么也不允许做

25、数据库设计的范式(Normal Form(标准化形式--普通范式))

        设计数据库时,遵循的不同规范,这些规范统称为范式

        范式的目的是为了减少数据库中的冗余, 管理表格的时候变得容易(修改、删除)

        查询的时候可能就涉及到表格联合的问题(性能)

        (1)1NF(第一范式)

                    要求数据保证原子性

                    每一个表格的每一个列都是不可分割的(行列交叉点的单元格内只存储一个数据)

                    每一个表格必须有主键约束(快速查询某一行记录)

        (2)2NF(第二范式)

                    在满足第一范式的前提下

                    不允许出现部分依赖性

                    (非主键列不能受到主键列或主键的一部分影响)

          (3)3NF(第三范式)
                   在满足前两个范式的前提下
                   不允许出现传递依赖性
                   (非主键列不能受到非主键列或非主键的一部分影响)

26、待续。。。。

                                    

                        

 

 

 

 

 

转载于:https://my.oschina.net/u/3939041/blog/3057412

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值