MySQL训练营02
一、表操作:
1.MySQL表的数据类型:
MySQL的数据类型分为3种:
- 数值
- 时间/日期
- 字符/字符串
(1)数值类型:
包括:TinyInt、SmallInt、MediumInt、Int、BigInt、Float、Double、Decimal

(2)时间/日期类型:
- 包括:DateTime、Date、TimeStamp、Time、Year。
- 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
- TimeStamp类型有专有的自动更新特性。

(3)字符/字符串类型:、
包括:Char、VarChar、Binary、VarBinary、Blob、Text、Enum和Set.

其中:
- CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
- BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
- BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BL
2. 创建表:
(1)表创建基础:
Create Table 表名 (列名1 数据类型1 是否空值1 默认值1, 列名2 数据类型2 是否空值2 默认值2, ........);
eg:
Create Table Products
(
prod_id c) not null,
vend_id ) not null,
prod_name ) not null,
prod_price ,) not null,
prod_desc ) null
);
注意:
- 表名,在关键字Create Table 之后给出
- 新表的定义在圆括号之中,各列之间,用逗号分隔
- 每列的定义:以列名开始,后面跟该列的数据类型
- 整条建表语句,以圆括号后面的分号结束
- 建议使用缩进格式
- 创建的新表的表名,必须不存在,否则会出错
- 替换现有的表,要求先删除现有表,然后再创建,而非直接替换
(2)使用Null值:
- 每个列要么是Null列,要么是Not Null列
- 允许Null值的列,允许在插入行时,不给出该列的值;
- 不允许Null值的列,在插入或者更新行时,该列必须有值。
- Null为默认设置,如果不指定Not Null,则该列就认为指定的是Null
- 主键列必须不能Not Null
eg:
Create Table Vendors ( vend_id ) Not Null, vend_name ) Not Null, vend_address ) Null, vend_city ) Null, vend_state c) , vend_zip ) , vend_country ) );
关于Null:
Null值是没有值,不是空字符串""。在Not Null的列中,允许空字符串。空字符串是一个有效的值,它不是无值。Null值,用关键字Null指定,而不是空字符串。
(3)指定默认值:
默认值用关键字Default指定。
如果在插入行时,不给出这列的值,则自动使用该列的默认值
eg:
Create Table OrderItems
(
order_num integer Not Null,
pord_id ) Not Null,
quantity , price Decimal(8, 2) Not Null
);
(4)自动增长:Auto_Increment
(5)设定主键:Primary(字段名)
3.用SQL语句向表中添加数据——插入行数据:
使用Insert语句,插入数据。
插入数据的几种方式:
- 插入完整的行
- 插入行的一部分
- 插入某些查询结果
(1)插入完整的行:
法1:按照顺序填充数据
Insert Into 表名 Values(值)
eg:
Insert Into CustomersValues ( '1000006', 'Toy Land', '123 Any Street', 'New York', 'NY', '11111', 'USA', Null, Null );
各个列必须以它们在表定义中出现的顺序填充。
缺点:不安全,因为这样填充,高度依赖于表中的列次序。
法2:按照列名,对应填充数据
Insert Into 表名 (字段1, 字段2, 字段3, .......) Values(值1, 值2, 值3, ......);
——在表名后的括号内,明确给出列名。在插入行时,Values列表中的相应值填入列表的对应项。
——Values必须按照表名后面的列名顺序,进行匹配对应填充数据,该顺序不一定就是表中的实际顺序。
eg:
Insert Into Customers( cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip)Values( '1000000', Null, Null, 'Toy Land', '123 Any Street', 'New York', 'NY', '11111');
总结:在Values子句中,必须给表中的每一列,提供一个对应的值。如果该列没有值,应该用Null值填充。
(2)插入行的一部分数据:
使用上面的第二种方法,提供列名,再提供每个列名对应要插入的值。
插入语句:可以只写出表中一部分列名,提供这些列的数据
省略一部分列名,这些列的数据,将为Null值或者该列的默认值。
被省略的列,需要满足以下一个条件:
- 该列允许Null值
- 该列有默认值
eg:
Insert Into Customers( cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip) Values( ', 'Toy Land', '123 Any Street', 'New York', 'NY', ');
相比之前的例子,这条SQL语句,省略了cust_contact,cust_email两列,没有给这两列提供要插入的数据。
因为这两列,允许Null值,所以,插入之后,这一行数据的这两列是Null。
注:如果省略了不允许Null值或者没有默认值的列的相应值,会报错。
(3)插入检索出的数据:
Insert Into 语句插入 Select 语句查询的结果。
eg:
Insert Into Customers( cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country) Select cust2_id, cust2_contact, cust2_email, cust2_name, cust2_address, cust2_city, cust2_state, cust2_zip, cust2_country From CustNew;
将从CustNew表中查询到的结果,插入到Customers表中。
(4)复制表:
将一个表的内容(表1)创建并复制到新表(表2)
Create Table 表2 As Select * From 表1
- 也可以只复制部分列,给出相应的列名,不用*
- 任何Select的选项和语句,都可以使用,比如:where,group by等
- Select语句也可以使用联结
MySQL训练营02的更多相关文章
- mysql笔记02 创建高性能的索引
创建高性能的索引 1. 索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 2. 索引可以包含一个或多个列的值.如果索引包含多个列,那么列的顺序 ...
- MYSQL基础02(查询)
查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况,MYSQL对标准SQL是比较支持,如果是新手的话,建议去w3school 学习标准SQL. 1.DUAL DUAL是一个虚拟表, ...
- MySQL高级02
索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构.可以得到索引的本质:索引是数据结构.你可以简单理解为“排好序的快速查找数据结构”. 在数据之外,数据库系统还维护着满足特定查找算法的 ...
- Datawhale MySQL 训练营 Task6 实战项目
作业 项目十:行程和用户(难度:困难) Trips 表中存所有出租车的行程信息.每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键.St ...
- Datawhale MySQL 训练营 Task5
数据导入导出 导入table http://www.runoob.com/mysql/mysql-database-import.html 导出table http://www.runoob.com/ ...
- Datawhale MySQL 训练营 Task4 表联结
学习内容 MySQL别名 列别名,将查询或者筛选出来列用AS 命名,如果有空格则需要引号 '' SELECT xxx AS xxxx FROM WHERE GROUP BY HAVING 表别名, 把 ...
- Datawhale MySQL 训练营 Task3 表操作
目录 学习内容 1.MySQL 表数据类型 2. 用SQL语句创建表 3. 用SQL语句向表中添加数据 4. 用SQL语句删除表 5. 用SQL语句修改表 作业 参考链接 学习内容 1.MySQL 表 ...
- Datawhale MySQL 训练营 Task2 查询语句
目录 MySQL 管理 MySQL 用户管理 参考 数据库管理 SQ查询语句 1. 导入示例数据库,教程 MySQL导入示例数据库 2. 查询语句 SELECT 3. 筛选语句 WHERE ,过滤 4 ...
- Datawhale MySQL 训练营 Task1:MySQL 安装与数据库基础
安装 平台 Windows X64; MySQL: 直接去 MySQL 官网 下载:点击即可安装:安装过程中可能会要求 python3.7; 可以去安装一个 python3.7; 可视化工具:Navi ...
随机推荐
- notepad++括号自动补全插件: XBracket Lite
1.4.5.1. 通过XBracket Lite实现括号的自动补全 先去打开相应的设置: 再根据自己的需要去设置: 其中解释一下相应的选项的含义: Treat'' as brackets 把单引号', ...
- 学习MySql和MongoDB笔记
首先了解下关系型数据库和非关系型数据库 关系型数据库 SQL关系型数据库采用了关系模式来组织数据,即关系模式为二维表格模型. 主要的数据库:SQL Server,Oracle,Mysql,Postgr ...
- 轻量ORM-SqlRepoEx (五) 存储过程操作
.Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵活的Lambda表达式组合,实现 ...
- java中的==、equals()源码分析
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- MVVM、MVC框架的认识
推荐博客: https://blog.csdn.net/jia12216/article/details/55520426 https://www.cnblogs.com/sunny_z/p/7093 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--K-密码
链接:https://www.nowcoder.com/acm/contest/90/K 来源:牛客网 - 1.题目描述 ZiZi登录各种账号的时候,总是会忘记密码,所以他把密码都记录在一个记事本上. ...
- SAP常见问题与解决办法(转)
1.A:在公司代码分配折旧表时报错? 在公司代码分配折旧表时报错,提示是“3000 的公司代码分录不完全-参见长文本” 希望各位大侠帮我看看.3000 的公司代码分录不完全-参见长文本 R: a.你把 ...
- ABAP术语-Accounting Document
Accounting Document 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/12/991731.html Accounting d ...
- linux 2.6升级Python2.7 ./configure 报错问题
升级2.7.3使用命令./configure --prefix=/usr/local/python2.7.3时,出现以下错误:checking build system type... x86_64- ...
- JetBrains 全家桶激活码
原文地址:https://blog.csdn.net/usher_ou/article/details/77970172 RDNJ63FZWD-eyJsaWNlbnNlSWQiOiJSRE5KNjNG ...