SQL 03

摘要:
如果引用列没有索引,MYSQL将自动创建索引。如果使用此选项,则必须确保子表列未指定NOTNULL3。RESTRICT:拒绝删除或更新父表4。NOACTION:标准SQL的关键字,与MYSQL中的RESTRICT相同,它被称为表级约束11.3:列级约束可以在列定义时或列定义后声明。表级约束只能在列定义之后声明。

********************2017年8月10日********************
安装mysql


Typical :典型安装
Custom :自定义安装
Complete:完全安装


简单认知
mysql默认端口号是:3306
mysql的超级用户叫:root


在cmd中启动mysql服务:net start mysql
在cmd中登录mysql :mysql -u root -p password -P端口号 -h服务器名称或IP地址
在Windows的cmd中清屏命令:cls
退出:1. exit; 2. quit; 3. q;
=
mysql语句的规范
1.关键字与函数名称全部小写
2.数据库名称、表名称、字段名称全部小写
3.SQL语句必须以分号结尾

修改MYSQL提示符
1.连接客户端时通过参数指定
shell>mysql -uuser -ppassword --prompt 提示符

2.连接上客户端后,通过prompt命令修改
mysql>prompt 提示符

提示符参数:
D :完整的日期
d :当前数据库
h :服务器名称
u :当前用户

常用命令

1.数据库的操作
SELECT VERSION(); //显示当前服务器版本
SELECT NOW(); //显示当前日期时间
SELECT USER(); //显示当前用户

CREATE DATABASE t1; //创建数据库t1 //在许多时候 DATABASE 和 SCHEMA 作用相同
CREATE SCHEMA t1; //创建数据库t1

ALTER DATABASE t1; //修改数据库t1
DROP DATABASE t1; //删除数据库t1
USE t1; //打开数据库t1
SHOW DATABASES; //查看当前服务器下的数据库
SHOW WARNINGS; //查看警告信息
SHOW CREATE DATABASE t1; //显示数据库t1的编码方式
CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET=gbk; //先检查是否存在t2数据库,已存在则直接修改其编码方式,不存在则先创建并修改其编码方式

ALTER DATABASE t2 CHARACTER SET=utf8; //修改数据库的编码方式

2.表的操作
2.1:CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type, ...)//column:列 //创建数据表

2.2:SHOW TABLES [FROM db_name] [LIKE 'pattern' | where expr]; //查看数据表

2.3:SHOW COLUMNS FROM tb_name; //查看数据表结构


3.记录的插入与查找
INSERT [INTO] tb_name [(col_name,...)] VALUES(val,..); //插入记录
空值与非空
NULL,字段值可以为空
NOT NULL,字段值禁止为空 // 在创建时设置如:CREATE TABLE tb2(username VARCHAR(20)NOT NULL,age TINYINT UNSIGNED NULL);



4.自动编号:AUTO_INCREMENT

4.1 自动编号,必须与主键组合使用
4.2 默认情况下,起始值为1,每次增量为1

5.主键:PRIMARY KEY
5.1 主键约束
5.2 每张数据表只能存在一个主键
5.3 主键保证记录的唯一性
5.4 主键自动为 NOT NULL

例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL);

6.唯一约束:UNIQUE KEY
6.1 唯一约束可以保证记录的唯一性
6.2 唯一约束的字段可以为空值(NULL)
6.3 每张数据表可以存在多个唯一约束

例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY);


7.默认约束:DEFAULT
例1:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY,SEX ENUM('男','女','保密') DEFAULT '保密');
例2:ALTER TABLE user2 ALTER age SET DEFAULT 15;

当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

8.约束
8.1 约束保证数据的完整性和一致性
8.2 约束分为表级约束和列级约束
8.3 约束类型包括:
NOT NULL ( 非空约束)
PRIMARY KEY(主键约束)
UNIQUE KEY(唯一约束)
DEFAULT(默认约束)
FOREIGN KEY(外键约束):实现一对一或一对多关系

9. 外键约束的要求:
1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎智能为InnoDB
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果参照列不存在索引的话,MYSQL将自动创建索引。
修改数据表的存储引擎
MYSQL配置文件: default-storage-engine=innodb

SHOW CREATE TABLE 表名; //查看表的存储引擎与编码方式

10. 外键约束的参照操作

1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
3.RESTRICT:拒绝对父表的删除或更新操作
4.NO ACTION:标准SQL的关键字,在MYSQL中与RESTRICT相同
**************************************12:58 2017/8/8******************************

11.表级约束与列级约束
11.1:对一个数据列建立的约束,称为列级约束
11.2:对多个数据列建立的约束,称为表级约束
11.3:列级约束既可以在列定义时声明,也可以在列定义后声明,表级约束只能在列定义后声明。

12.修改数据表
12.1:添加单列:ALTER TABLE tb1_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
FIRST:新插入的那一列置于所有列最前面
例子:ALTER TABLE user ADD truename VARCHAR(20) NOT NULL FIRST;
AFTER:置于指定列的后面
例子:ALTER TABLE user ADD password VARCHAR(32) NOT NULL AFTER username;
都不加则置于所有列最后面


12.2:添加多列:ALTER TABLE tb1_name ADD [COLUMN] (col_name column_definition,...)
区别:添加单列的时候,所有的列不用加小括号,添加单列的时候可以指定位置关系,添加多列的时候不能指定位置关系,只能在原来数据表列的下方

12.3:删除单列:ALTER TABLE tb1_name DROP [COLUMN] col_name

12.4:删除多列:ALTER TABLE tb1_name DROP [COLUMN] col_name,DROP [COLUMN] col_name;

12.5:添加主键约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type](index_col_name,...)
CONSTRAINT 名字:给主键起名字

12.6:添加唯一约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type](index_col_name,...)

12.7:添加外键约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

例子:ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);

12.8:添加/删除默认约束:ALTER TABLE tb1_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

例1:ALTER TABLE user2 ALTER age SET DEFAULT 15;

例2:ALTER TABLE user2 ALTER age DROP DEFAULT;

12.9:删除主键约束:ALTER TABLE tb1_name DROP PRIMARY KEY

例子:ALTER TABLE user2 DROP PRIMARY KEY; //删除主键时不用加列名,因为每张数据表有且仅有一个主键

12.10:删除唯一约束:ALTER TABLE tb1_name DROP {INDEX | KEY}index_name; //删除时需加唯一约束的字段名

12.11:以网格的形式查看约束:SHOW INDEXES FROM user2G;

12.12:删除外键约束:ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol;//删除时需加外键约束的名字

查看外键约束的名称:SHOW CREATE TABLE tb_name;(CONSTRAINT后面的为外键约束名字)

12.13:修改列定义:修改字段的数据类型,位置
ALTER TABLE tb_name MODIFY [COLUMN] col_name column_definition [FRIST | AFTER col_name]

例1:ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST; //将user2表中已存在的字段id及其定义改变到所有列的最前面

例2:ALTER TABLE user2 MODIFY id TINYINT UNSIGNED NOT NULL ;// 修改了其类型 注意:将大类型修改为小类型时可能会造成数据的丢失

13.14:修改列名称:
ALTER TABLE tb_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]

13.15;数据表更名:
方法1:ALTER TABLE tb_name RENAME [TO| AS] new_tb_name
方法2: RENAME TABLE tb_name TO new_tb-name [,tb_name2 TO new_tb_name2]...
注意:数据表和字段的更名可能造成之前创建的索引和视图不能正常工作


免责声明:文章转载自《SQL 03》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇并发服务器iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ORA-12560: 解决TNS:协议适配器错误

1)安装成功,但无法连接数据库 2)网上查找原因:32位的不能运行64位的oracle,而且不会有64位的版本 3)解决办法:大致是修改客户端数据库为32位的(此方法OK)(1)解压instantclient-basic-nt-11.2.0.3.0.rar,把里面的instantclient_11_2文件夹复制到D:appproductinstantcli...

如何做升级测试

大家可以看我总结的一篇更详细的升级测试文章:http://www.cnblogs.com/AlwinXu/p/5836667.html 升级测试是软件测试中非常重要的一环,需要考虑的方面有很多,比如用户数据是否被完整保存,升级失败如何恢复等都对测试人员制定测试策略和编写测试用例带来了一定的挑战。这里我根据最近做的项目做了一个Mindmap来简单的介绍一下做...

RMAN 系列(四) RMAN 备份

一. RMAN 备份的一些优点 1. RMAN 会检测和报告损坏的数据块。 2. 不需要将表空间置入热备份模式,RMAN 就可以连接备份数据库。 热备份期间会额外的生成重做日志。 3. RMAN 会自动跟踪新的数据文件和表空间,这样就不再需要在脚本中添加新的表空间和数据文件。 4. RMAN 只备份使用过的数据库(直至最高使用标记(High wate m...

jdbcTemplate 获取数据表结构

jdbcTemplate 操作方法  Java代码   /**  *1.方法一:  */   String sql = "select * from "+ tableName;   //RowCountCallbackHandler rcch = new RowCountCallbackHandler();   //this.jdbcTemplate...

如何通过外部表做数据一致性检查和配平

背景 随着微服务和分布式架构的兴起及用户对数据高可用的重视。现在系统中的数据会通过程序定时同步、抽数工具、复制工具等在多个数据库中存在多份。但因为程序异常、网络异常、数据异常等各种原因,会出现数据不一致的情况。如何能简单快速检测出数据不一致并且配平呢?本文通过PostgreSQL的fdw机制,介绍一种简单的配平方法。 环境准备 源数据库 IP:xx....

MariaDB

知道自己学的什么版本的数据库 mariadb版本:10.3 1.数据库介绍(默认端口号=3306) 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据 更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只...