为了账号安全,请及时绑定邮箱和手机立即绑定

与MySQL的零距离接触

平然 学生
难度入门
时长 8小时29分
学习人数
综合评分9.67
950人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • MySQL是一个开源的关系型数据库管理系统,分为社区版和企业版。

    查看全部
    0 采集 收起 来源:MySQL概述

    2018-11-28

  • MySQL语句规范

    • 关键字与函数名称全部大写

    • 数据库名称,表名称,字段名称全部小写

    • SQL语句必须以分号结尾


    查看全部
  • exit 退出

    queit 退出2

    \p 退出3

    查看全部
  • 自定义函数:

    必要条件:参数和返回值(也存在没有参数的函数,但是必有返回值)

    函数可以返回任何类型的值,同样可以接受这些类型的参数。(函数的参数和返回值之间没有内在的联系,参数的数量不能超过1024个。)

    创建自定义函数:CREATE FUNCTION funvtion_name RETURNS {STRING | INTEGER | REAL | DECIMAL} routine_boby

    解释:RETURNS返回值类型;routine_boby为函数体。

    关于函数体:合法的SQL语句;可以是SELECT和INSERT语句;如果为复合结构则使用BEGIN...END语句;复合体可以包含声明,循环,控制结构。

    (1)创建不带参数的函数:SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒'); 每次使用的时候都比较麻烦,因此创建一个函数保存就可以随时调用就可以了。

    创建该函数:

    CREAT FUNCTION f1() RETURNS VARCHAR(30)

    ->RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');

    创建成功后,调用:SELECT f1();

    (2)创建含有参数的函数:

    CREAT FUNCTION f2(num1 SMALLINT UNSIGNED, num2 SMALLINT UNSIGNED)

    ->RETUENS FLOAT(10,2) UNSIGNED

    ->RETURN (num+num2)/2;

    SELECT f2(10,5);   求两个数的平均值

    (3)创建含有多个参数的函数:

    SHOW TABLES;   查看数据库的数据表

    DESC test;   查看数据表的结构

    SELECT * FROM test;   查看数据表中的记录

    CREAT FUNCTION adduser(username VARCHAR(20))

    ->RETURNS INT UNSIGNED

    ->RETURN

    ->INSERT test(username) VALUES(username);    这个返回一定是错误的,因为insert函数以;结尾,而一段程序也是以;结尾,所以存在一定的歧义,顾我们使用:DELIMITER //    就是以后程序结束都要以//为结束。(//可以为其他符号,为自定义)

    修正后:

    CREAT FUNCTION adduser(username VARCHAR(20))

    ->RETURNS INT UNSIGNED

    ->RETURN

    ->INSERT test(username) VALUES(username); 

    ->LAST_INSERT_ID();

    由于插入姓名后还要返回其ID,因此就有两条语句需要执行,所以是复合语句

    CREAT FUNCTION adduser(username VARCHAR(20))

    ->RETURNS INT UNSIGNED

    ->BEGIN

    ->INSERT test(username) VALUES(username); 

    ->RETURN LAST_INSERT_ID();

    ->END

    ->//

    此函数就创建成功了,

    我们可以调用:SELECT adduser('Zuo');->//

    那么就可以将结束字符改回来了:DELIMITER ; 

    实际中应用自定义函数并不多,主要在于了解。

    查看全部
  • 修改MySQL提示符

    查看全部
  • MySQL提示符

    查看全部
  • MySQL退出

    查看全部
  • MySQL登录

    查看全部
  • 1.修改列定义:数据列的名字上没有问题,但是数据类型上可能有问题,或位置上有问题;列定义没错,则照抄,修改位置即可

    ALTER TABLE tb1_name MODIFY [COLUMN] col_name column_definition  [FRIST | AFTER col_name]

    (以上修改包括列定义或列位置)

    2.修改列名称:其功能大于上面的MODIFY

    ALTER TABLE tb1_name CHANGE [COLUMN] old_col_name new_col_name column_definition  [FIRST | AFTER col_name]

    3.修改数据表的名字:

    ALTER TABLE tb1_name RENAME [TO| AS] new_tb1_name

    RENAME TABLE tb1_name TO new_tb1_name [,tb1_name2 TO new_tb1_name2] ... (这个方法可为多个数据表更改名称)

    注意:不建议随便更改数据列的名字或着数据表的名字,以免影响数据表的引用

    https://img1.sycdn.imooc.com//5bfd4a180001e54b09170501.jpg

    https://img1.sycdn.imooc.com//5bfd4a190001486b09220513.jpg


    查看全部
  • 删除主键约束:

    ALTER TABLE tb1_name DROP PRIMARY KEY(主键唯一,所以不用添加主键名称)

    删除唯一约束:

    ALTER TABLE tb1_name DROP {INDEX|KEY} index_name

    那么查看唯一约束: SHOW INDEX FROM tb1_name(\G  是以网格形式呈现);

    删除外键约束:

    ALTER TABLE tb1_name DROP FOREIGN KEY fk_symbol

    那么查看外键约束名字: SHOW CREATE TABLE tb1_name;


    查看全部
  • 添加主键约束:CONSTRAINT[symbol] symbol为自定义约束的名字;

          注意主键约束表中要唯一

          ALTER TABLE tb1_name ADD[CONSTRAINT[symbol]] PRIMARY KEY [index_type]       (index_col_name,...)

    添加唯一约束:

         ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)

    添加外键约束(链接其他表格):

        ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_type] (index_col_name,...) reference_definition

    如:    ALTER TABLE user1 ADD  FOREIGN KEY (pid) REFERENCE provinces(id);

    添加默认约束:

        ALTER TABLE tb1_name ALTER [COLUMN] col_name{SET DEFAULT literal | DROP DEFAULT}

    如:ALTER TABLE uesr2 ALTER age SET DEFAULT 15; 添加默认值

    ALTER TABLE uesr2 ALTER age DROP DEFAULT; 删除默认值


    查看全部
  • 1.添加单列

        alter table tbl_name add [column] col_name col_difinition[first|after col_name]

    2.添加多列

        alter table tbl_name add [column] (col_name col_difinition,...)

    3.删除列

        alter table tbl_name drop[column] col_name1,col_name2;

    可以同时删除列和添加列,用逗号分隔开就好了

    4.同时添加和删除某列

        ALTER TABLE user1 ADD password FLOAT(4,1) UNSIGNED NOT NULL FIRST,DROP username;

    查看全部
    1. 对一个数据列建立的约束,称为列级约束

    2. 对多个数据列建立的约束,称为表级约束

    3. 列级约束既可以在列定义时声明,也可以在列定义后声明

    4. 表级约束只能在列定义后声明


    查看全部
  • 1、外键约束的参照操作

    (1)cascade:当父表删除或更新时,自动删除或更新子表中匹配的行;

    (2)set null:当父表删除或更新行时,同时设置子表中的外键列为null。如果使用该选项,必须保证子表列没有指定not null;

    (3)restrict:拒绝对父表的删除或更新操作;

    (4)no action :标准sql的关键字,在mysql中与restrict相同。

    2、

    create table users(

    id smallint unsigned primary key auto_increment,

    username varchar(20) not full,

    pid smallint unsgined,

    foregin key(pid) references provinces(id) on delete cascade);

    在删除父表中的id行时,自动删除子表中的pid行

    4、注意要先在父表中插入记录,再在字表中插入记录。

    insert provinces(pname) values('A'),('B'),('C');

    insert users1(username,pid) values('TOM',3),('jack',2)【超出3则会报错】

    当删除父表中的id=3的记录时,字表中的pid=3的记录也会被删除【cascade】

    删除某一行的操作:delete from provinces where id =3;

    5、在实际操作过程中,很少使用物理外键约束,而常用逻辑外键约束。因为只有    INNODB数据库支持物理的外键约束.


    查看全部
    1. 列级约束:针对一列的约束;表级约束:针对两个及以上列的约束

    2. 约束类型:非空约束、主键约束、唯一约束、默认约束、外键约束

    3. 外键约束(FOREIGN KEY):保持数据一致性,完整性;实现一对一或一对多的关系

      举例: FOREIGN KEY (pid) REFERENCES provinces (id));


    FOREING KEY ----外键约束的要求

    1. 父表和子表必须使用相同的存储引擎,而且禁止使用临时表。

    2. 数据表的存储引擎只能为InnoDB.[配置文件中]

    3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。

    4. 外键列和参照列必须创建过索引。如果参照列上没有索引的话,MySQL将自动创建索引,如果外键列不存在索引的话,MysQL将不会自动创建索引。

    MySQL配置文件my.ini

            1.default-storage-engine=INNODB

    SHOW INDEXES FROM provinces\G;查看索引

    查看全部

举报

0/150
提交
取消
课程须知
要想学习本课程,你只需要知道数据库是个什么东东就足够了,是不是很easy?!
老师告诉你能学到什么?
1、MySQL安装与配置 2、数据类型 3、流程控制与运算符 4、DDL、DCL、DQL、DML 5、常用函数 6、表类型(存储引擎) 7、图形化工具

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!