文章目录
1、MySQL表数据类型
定义表的属性类型
1.1 数值
int、float、double、decimal(小数点)等
1.2 日期/时间
date、time、year、datetime等
1.3 字符串类型
char(定长字符串)、varchar(变长字符串)、text(长文本数据)等
2、用SQL语句创建表
(1)AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
(2)PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
(3)ENGINE 设置存储引擎,CHARSET 设置编码。
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、用SQL语句向表中添加数据
mysql> insert into runoob_tbl
-> (runoob_title,runoob_author,submission_date)
-> values
-> ("边城","沈从文",'2016-06-02');
4、用SQL语句删除表
mysql> DROP TABLE runoob_tbl
5、用SQL语句修改表
新建一个表,表名为:testalter_tbl
5.1 删除、添加字段
5.2 修改字段
(1)把字段c的类型从char(1)改为char(10)
(2)修改字段默认值
将i的默认值从null改为1000
删除字段默认值
5.3 修改表名
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
作业:
项目三:超过5名学生的课
(1)创建courses()表
(2)插入数据
(3)编写一个 SQL 查询,列出所有超过或等于5名学生的课。
项目四:交换工资
(1)创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
(2)插入数据
(3)交换所有的f和m值
6、表联结
6.1 MySQL别名
SELECT * FROM 表名 [AS] 别名;
6.2 INNER JOIN
连接两表的交集
6.3 LEFT JOIN
左连接(left join)读取左边数据表的全部数据,右边表无对应数据
右连接(right join)读取右边数据表的全部数据,左边表无对应数据
6.4 CROSS JOIN
返回行的笛卡尔乘积,连接两个表,结果集包括两个表中的所有行,每一行都是第一个表中的行与第二个表中的行的组合。
6.5 自连接
一些特殊的查询需要对同一个关系进行连接查询,成为表的自身连接: 即一张表看成是两张表。
6.6 UNION
用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
6.7 这几种方式的区别和联系
NNER JOIN产生的结果是两张表的交集,LEFT JOIN产生左表的完全集,右表中若没有匹配则以null值取代。CROSS JOIN将两张表数据进行一个N*M组合,即笛卡尔积。自连接是对于自身的操作,将自己当成两张表操作来提取需要的信息。UNION操作符是用于连接两个以上的SELECT语句,它和INNER JOIN的区别是一个是连接两张表,另一个是连接两个SELECT语句。
作业
项目五:组合两张表
在数据库中创建表1和表2,并各插入三行数据(自己造)
(1)创建表
Person表,PersonId 是表主键
Address表,AddressId 是主键
(2)编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State
项目六:删除重复的邮箱
编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
(1)创建表,id是主键
(2)自连接