mySQL阿里云数据库学习路线黑马程序员随课笔记;

开启/退出:

net start mysql;
net stop mysql;

 登录与退出

mysql -uroot -pAa8316057 -hlocalhost
exit或quit

常见操作:

DDL  数据库或表的结构操作(****)
DML 对表的记录更新(增//改)(****)
DQL  对表的记录查询(****,难点)
DCL 用户创建及授权    

类型:

  标准:

int整型
double(5,2)
decimal精确浮点型
char 固长 字符串255              补
varchar 变长 字符串65535    不补

  方言(mySQL独有)

MySQL独有:
text(clob):字符串类型
blob:字节类型
date:日期
time:时间
timestamp:时间戳

DDL:

数据库(DATABASE)

 (创建CREATE,查看SHOW,进入USE,删除DROP)

表(TABLE):

查询表结构: DESC 表名
创建:
CREATE TABLE [IF NOT EXISTS] 表名(
列名 列类型 [PRIMARY KEY] [AUTO_INCREMENT];
...
);
修改:
  ***公共前缀***ALTER TABLE 表名
    添加列:  ***公共前缀*** ADD(列名 列类型,...);
    删除列:  ***公共前缀*** DROP 列名     
    改列名:  ***公共前缀*** CHANGE 原列名 新列名 列类型     
    改列类型:***公共前缀*** MODIFY 列名 列新类型 
    改表名:  ***公共前缀*** RENAME TO 新表名

DQL(基本查询):

列控制:

查询所有列(或指定列 丨 查询但不显示完全重复行):
SELECT * FROM 表名
查询指定列: 把 * 变成 列1,..,列n
查询但不显示完全重复行: 在 * 前 加DISTINCT
列运算:(光查,并不改变数据)
SELECT 运算 FROM 表名;
  加///除: sal+8   sal+name
  字符串运算: CONCAT('$',sal)
  转换NULL值(把NULL当0来运算): IFNULL(comm,0)+100
  给列取别名: IFNULL(comm,0)+100 AS 奖金       - (其中AS可以省略)

条件控制:

    条件查询:(和UPDATE一样的操作方式)
        SELECT * FROM 表名 WHERE 条件;
    模糊查询:
        SELECT * FROM 表名 WHERE 列名 like '张_';
            **** 重点:  _ 一个字符     % 0-n个字符;
    排序:
        SELECT * FROM 表名 ORDER BY 列名 ASC;
            升序: ASC(ASC可以省略)
            降序: DESC(DESC不可以省略)
            多列作为排序条件:列名 ASC,列名 DESC

聚合函数:(列纵向运算)

SELECT 聚合函数 FROM 表名;
    1:行数 COUNT(*或列名)  - 不记NULL 
    2:大   MAX(列名) 
    3:小   MIN(列名)    
    4:和   SUM(列名)    
    5:平均 AVG(列名)
    多项:MAX(列名) AS 大 , MIN(列名) AS 小 ,SUM(列名) AS 和;

分组查询:

SELECT 分组列,聚合函数(支持多项) FROM 表名 [WHERE 条件] GROUP BY 分组列 [HAVING 条件];
  执行顺序     
SELECT 查询     FROM 从     WHERE 去分组前条件     GROUP BY 分组     HAVING 去分组后条件     ORDER BY 排序

LIMIT子句(方言) 

SELECT * FROM 列名 LIMIT 4,3;(从第5行开始查,一共查3行)   -(当前页-1) * 每页记录数 , 每页记录数;

DML:

插入数据:

    插入列数据:
        INSERT INTO 表名(列名1,列名2,...) VALUES(列值1,列值2,..);
    修改列值:
        UPDATE 表名 SET 列名=列值,...;(全改)
        UPDATE 表名 SET 列名=列值 WHERE 条件列名 = 条件列值 or ... ;(指定条件改)
    =   !=  <>  >  <  >=  <=  NOT  OR  AND   BETWEEN...AND    IN(...)    IS NULL  
    删除数据:
        DELETE FROM 表名 [WHERE 条件]; - 一定要加WHERE!!!

DCL:

    创建用户:
        CREATE USER 用户名@ip地址 IDENTIFIED BY '密码';       任意IP登录: @'%'
    给用户授权:
        GRANT 权限1,..权限n NO 数据库.* TO 用户名@ip地址     所有权限: ALL
    取消权限:
        REVOKE 权限1,..权限n NO 数据库.* FROM 用户名@ip地址    
    查看权限:
        SHOW GRANTS FOR 用户名@ip地址
    删除用户:
        DROP USER 用户名@ip地址

查看数据库编码:

    SHOW VARIABLES LIKE 'char%';
    改:C:\ProgramData下my.ini文件 : default-character-set=gbk
         可以改3个变量client(进).connection.results(出)

备份/恢复 数据库内容:

备份数据库内容(退出状态下输入):    mysqldump -u用户名 -p密码 据库名>f:/a.sql
恢复数据库内容(退出状态下输入):    mysql -u用户名 -p密码 据库名<f:/a.sql
                        第二种方式:进入数据库后 source f:/a.sql

约束:

1:主键约束:

    创建: 创建时候在 列名 列类型 后加 PRIMARY KEY [];
          创建后: ADD PRIMARY KEY(列名);
    删除: ALTER TABLE 表名 DROP PRIMARY KEY;

2:主键自增长:

    创建:AUTO_INCREMENT(在主键后面加 , 详看创建列) - 只能加在整数
CREATE TABLE dept(   deptno INT PRIMARY KEY AUTO_INCREMENT,   dname VARCHAR(50) ); INSERT INTO dept VALUES(10,'研发部'); INSERT INTO dept VALUES(20,'人力部'); INSERT INTO dept VALUES(30,'财务部'); SELECT * FROM dept;

CREATE TABLE emp(   empno INT PRIMARY KEY AUTO_INCREMENT,   ename VARCHAR(50),   dno INT,   CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno) ); INSERT INTO emp(empno,ename) VALUES(NULL,'zhagsan'); SELECT * FROM emp;

3:非空约束:

NOT NULL;

4:唯一约束:

UNIQUE;一般和NOT NULL一起用

5:概念模型:

6:外键约束:

CONSTRAINT 约束名称   FOREIGN KEY(外键列名) REFERENCES 关系表(关联表的主键)
例:CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno)

7:数据库1对1关系
8:数据库多对1关系
9:数据库多对多关系

猜你喜欢

转载自www.cnblogs.com/Fifty-five/p/12239435.html