当前位置:Gxlcms > 数据库问题 > MySQL学习进阶

MySQL学习进阶

时间:2021-07-01 10:21:17 帮助过:25人阅读

DATABASE mysql_shiyan; use mysql_shiyan; CREATE TABLE department ( dpt_name CHAR(20) NOT NULL, people_num INT(10) DEFAULT 10, CONSTRAINT dpt_pk PRIMARY KEY (dpt_name) ##约束名 dpt_pk 、主键约束 ); CREATE TABLE employee ( id INT(10) PRIMARY KEY, name CHAR(20), age INT(10), salary INT(10) NOT NULL, phone INT(12) NOT NULL, in_dpt CHAR(20) NOT NULL, UNIQUE (phone), CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name) ##外键约束 ); CREATE TABLE project ( proj_num INT(10) NOT NULL, proj_name CHAR(20) NOT NULL, start_date DATE NOT NULL, end_date DATE DEFAULT 2017-08-15, of_dpt CHAR(20) REFERENCES department(dpt_name), CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name) ); 示例

表的操作

1、创建表

CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件])

2、查看表结构

describe 表名

3、查看表结构

show create table 表名

show create table 表名 \G

4、修改表名

alter table 旧表名 rename [to] 新表名;

5、修改字段的数据类型

alter table 表名 modify 属性名 数据类型;

6、修改字段名

alter table 表名 change 旧属性名 新属性名 [新数据类型];

7、增加字段

alter table 表名 add 属性名1 数据类型 [完整性约束条件] [first] after 属性名2;

8、删除字段

alter table 表名 drop 属性名;

9、删除关联表

(1)删除表的外键约束
外键是一个特殊字段,其将某一个表与其父表建立关联关系。在创建表的时候,外键约束就已经设定好了。去掉他们之间的关联关系需要用到下面语句。

 alter table 表名 drop foreign key 外键别名;

(2)删除没有被关联的普通表 drop table 表名; (3)删除被其他表关联的父表

当删除有关联关系的表时,用drop table example1 会报错,原因是有外键依赖于该表

例如创建了一个example4表依赖于example1表,example4表的外键stu_id依赖于example1表的主键。example1表时example4表的父表。

如果要删除example4表,必须先去掉这种依赖关系。最简单的办法是先删除子表example4,然后删除父表example1。但这样可能会影响子表的其他数据。

另一种方法是先删除子表的外键约束,然后删除父表。这种方法不会影响子表的其他数据,可以保证数据库的安全。

比如,example4表的外键别名是d_fk,删除example4的外键约束

alter table example4 drop foreign key d_fk;

可以通过show create table example4 \G来查看是否已删除。
然后再执行  drop table example1;

执行成功则表示操作成功。

帮助

\h                       查看帮助

\s                       查看当前环境

\c                       废弃当前输入命令

创建用户并授权

CREATE USER ‘username‘@‘host‘ IDENTIFIED BY ‘password‘; 

GRANT {ALL | SELECT | INSERT | UPDATE } ON databasename.tablename TO ‘username‘@‘host‘ 

 工作中使用的示例:

技术分享
BEGIN
    
  DECLARE win_id VARCHAR(20);
    DECLARE win_count VARCHAR(20);

    SELECT id FROM windows_vps_log ORDER BY id DESC LIMIT 1 into win_id;
  SELECT count(id) FROM windows_vps_log into win_count;
    IF win_count>5000000 THEN
        delete from windows_vps_log where id <= win_id-3000000;
    END IF;
END
存储过程 技术分享
SELECT
    machine_host,
    CONCAT(lan_ip, :, `port`) AS "问题机",
    dial_time
FROM
    client_info
WHERE
    mac IN (
        SELECT
            mac
        FROM
            windows_vps_log
        WHERE
            invalid = 0
        AND TIMESTAMPDIFF(MINUTE, create_time, now()) > 180
    )
ORDER BY
    machine_host desc
多表查询

 

MySQL学习进阶

标签:比较   文件   div   位置   特殊   data   https   .com   中继   

人气教程排行