首页 > 代码库 > SQL 03

SQL 03

********************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 user2\G;

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