MYSQL学习03--MySQL表操作、表连接

1. MySQL表数据类型

  • 数值类型
    990253-20190404231255100-274663372.png
  • 日期和时间类型
    990253-20190404231319898-863121236.png
  • 字符串类型
    990253-20190404231338353-620218208.png

2. 用SQL语句创建表

  • 基本语法
    CREATE TABLE table_name (column_name column_type);
  • 创建实例
    CREATE TABLE IF NOT EXISTS `courses`( `cid` INT UNSIGNED AUTO_INCREMENT, `student_name` VARCHAR(40) NOT NULL, `course_name` VARCHAR(40) NOT NULL, PRIMARY KEY (`cid`) )ENGINE = INNODB DEFAULT CHARSET= utf8;

    3. 用SQL语句向表中添加数据

  • 基本语法
INSERT INTO table_name ( field1, field2,...fieldN )  
                       VALUES  
                       ( value1, value2,...valueN );  
  • 插入实例
    INSERT INTO salary(s_name,s_sex,salary) VALUES("张三","m",2500);

4. 用SQL语句删除表

  • 基本语法
    DROP TABLE table_name ;
  • 删除表的几种方式的不同
  1. DROP
    DROP TABLE table_name ;
  2. TRUNCATE
    truncate table student;
  3. DELETE
    delete from student where T_name = "张三";

5. 用SQL语句修改表

  • 修改列名

  • 修改表中数据

  • 删除行

  • 删除列

  • 新建列

  • 新建行

6. MySQL别名

  • INNER JOIN

  • LEFT JOIN

  • CROSS JOIN

  • 自连接

  • UNION

  • 以上几种方式的区别和联系

    07、作业

  • 项目三、超过5名学生的课
    创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。
CREATE TABLE IF NOT EXISTS `courses`(  
    `cid` INT UNSIGNED AUTO_INCREMENT,  
    `student_name` VARCHAR(40) NOT NULL,  
    `course_name` VARCHAR(40) NOT NULL,  
    PRIMARY KEY (`cid`)  
)ENGINE = INNODB DEFAULT CHARSET= utf8;

插入数据 :

INSERT INTO courses(student_name,course_name) VALUES("张三","math");
INSERT INTO courses(student_name,course_name) VALUES("李四","English");
INSERT INTO courses(student_name,course_name) VALUES("王五","math");
INSERT INTO courses(student_name,course_name) VALUES("赵六","Biology");
INSERT INTO courses(student_name,course_name) VALUES("五天","math");
INSERT INTO courses(student_name,course_name) VALUES("刘八","math");
INSERT INTO courses(student_name,course_name) VALUES("孙慧","math");
INSERT INTO courses(student_name,course_name) VALUES("王伟","Computer");
INSERT INTO courses(student_name,course_name) VALUES("郑一","math");
INSERT INTO courses(student_name,course_name) VALUES("陈二","math");
INSERT INTO courses(student_name,course_name) VALUES("张一","Computer");
INSERT INTO courses(student_name,course_name) VALUES("张七","math");
INSERT INTO courses(student_name,course_name) VALUES("周天","English");

编写一个 SQL 查询,列出所有超过或等于5名学生的课,同一个学生不被重复计算。

SELECT course_name  
FROM   
    (SELECT DISTINCT student_name,course_name   
        from courses) aaa  
GROUP BY course_name  
HAVING COUNT(course_name)>5;  

结果如图:

  • 项目四、交换工资
    创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
CREATE TABLE IF NOT EXISTS `salary`(  
    `sid` INT UNSIGNED AUTO_INCREMENT,  
    `s_name` VARCHAR(40) NOT NULL,  
    `s_sex` VARCHAR(2) NOT NULL,  
    `salary` INT NOT NULL,  
    PRIMARY KEY (`sid`)  
)ENGINE = INNODB DEFAULT CHARSET= utf8;  

插入数据:

INSERT INTO salary(s_name,s_sex,salary) VALUES("张三","m",2500);  
INSERT INTO salary(s_name,s_sex,salary) VALUES("李四","f",1500);  
INSERT INTO salary(s_name,s_sex,salary) VALUES("王五","m",5500);  
INSERT INTO salary(s_name,s_sex,salary) VALUES("赵六","f",500);  
INSERT INTO salary(s_name,s_sex,salary) VALUES("吴八","m",3500);  

交换所有的 f 和 m 值:

UPDATE salary SET s_sex =IF(s_sex ="m","f","m");  
  • 项目五、组合两张表
    在数据库中创建表1和表2,并各插入三行数据(自己造):
CREATE TABLE IF NOT EXISTS `person`(  
    `person_id` INT UNSIGNED AUTO_INCREMENT,  
    `first_name` VARCHAR(40) NOT NULL,  
    `last_name` VARCHAR(40) NOT NULL,  
    PRIMARY KEY(`person_id`)  
)ENGINE=INNODB DEFAULT CHARSET=utf8;  
CREATE TABLE IF NOT EXISTS `address`(  
    `address_id` INT UNSIGNED AUTO_INCREMENT,  
    `person_id` INT UNSIGNED NOT NULL,  
    `city` VARCHAR(40) NOT NULL,  
    `state` VARCHAR(40) NOT NULL,  
    PRIMARY KEY(`address_id`),  
    FOREIGN KEY(`person_id`) REFERENCES person(`person_id`)  
)ENGINE=INNODB DEFAULT CHARSET=utf8;  

插入数据:

INSERT INTO person(first_name,last_name) VALUES("jack","chen");  
INSERT INTO person(first_name,last_name) VALUES("tom","wang");  
INSERT INTO person(first_name,last_name) VALUES("cat","zhang");  
INSERT INTO person(first_name,last_name) VALUES("joy","chen");  
INSERT INTO address(person_id,city,state) VALUES(1,"hubei","wuhan");  
INSERT INTO address(person_id,city,state) VALUES(2,"hunan","changsha");  
INSERT INTO address(person_id,city,state) VALUES(3,"sanxi","san");  
INSERT INTO address(person_id,city,state) VALUES(4,"beijing","canpin");  

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State:

SELECT p.person_id,p.last_name,p.first_name,a.city,a.state   
from person p   
LEFT JOIN address a   
on p.person_id =a.person_id;  
  • 项目六、删除重复的邮箱
    编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
    建表省略。
DELETE FROM email where ID NOT IN (  
SELECT minid FROM(  
SELECT MIN(ID) as minid  
FROM email   
GROUP BY email) b  
);  

参考:http://www.runoob.com/mysql/mysql-select-query.html

转载于:https://www.cnblogs.com/Miles-mjy/p/10652599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值