SQL基础(一)

1.数据的存储方式(表属性的操作)

1.1 建表前思考的问题

a.表名

b.表里包含的数据类型(CHAR(定长字符),VARCHAR(不定长字符),NUMBER(数值),DATE(日期和时间),BLOB(大数据集),直义字符串,自定义类型)

c.构成主键的字段

d.每个字段的长度

e.哪些字段可以为NULL

1.2CREATE TABLE 语句

基本语法:

CREATE TABLE table_name
( field1 data_type [ not null ],
  field2 data_type [ not null ],
  field3 data_type [ not null ],
  field4 data_type [ not null ]);

1.3 ALTER TABLE 命令

(修改和删除表时,如果使用了RESTRICT选项,且表被视图或约束所引用,则返回错误。如果使用了CASCADE,且全部引用试图和约束都会被删除)

基本语法:

ALTER TABLE table_name
[restrict|cascade]
[change_style];

a.增加属性

ALTER TABLE table_name
ADD column_name data_type [not null];

b.删除属性

ALTER TABLE table_name
DROP COLUMN column_name;

c.修改属性名

ALTER TABLE table_name
CHANGE column_name new_name data_type;

d.修改属性的数据类型

ALTER TABLE table_name
MODIFY column_name data_type;

e.从现有表新建另一个表

CREATE TABLE new_table_name AS
SELECT [*[COLUMN1,COLUMN2]]
FROM table_name
[WHERE];

1.4 删除表

DROP table_name [restrict|cascade];

1.5查看表

DESC table_name;

1.6 测试代码

//建表
create table student_tbl
(id char(9),
 sex varchar(5),
 birthday year,
 Chinese integer(3),
 Math integer(3));

//增加English属性
alter table student_tbl
add English integer(3);

//删除sex属性
alter table student_tbl
drop column sex;

//修改属性名id 为ID
alter table student_tbl
change id ID char(9);

//修改birthday属性数据格式为date
alter table student_tbl
modify birthday date;

//复制student_tbl到新表class1
create table class1_tbl as
select *
from student_tbl;

//查表
desc student_tbl;

2.完整性约束

2.1 主键约束

主键:表中一个或多个用于实现记录唯一性的字段(属性)。

实现方式:

//在字段的定义阶段将其指定为主键
column_name data_type [null] [primary key]

//在字段定义之后再定义主键
CREATE TABLE table_name
( column1 data_type [ not null ],
  column2 data_type [ not null ],
  column3 data_type [ not null ],
  column4 data_type [ not null ],
  primary key ([column1,column2]));

//给表中属性创建主键约束
ALTER TABLE TABLE_NAME
ADD PRIMARY KEY (COLUMN);

ALTER TABLE TABLE_NAME
ADD CONSTRAINT PRIMARY KEY (COLUMN);

//撤销主键约束
ALTER TABLE TABLE_NAME
DROP PRIMARY KEY;

*在修改属性时不可以创建复合主键,即只可以在定义属性时创建主键。

2.2 唯一性约束

实现方式:

//在字段的定义阶段创建UNIQUE约束
column_name data_type [null] [unique]

//在字段定义之后再创建UNIQUE约束
CREATE TABLE table_name
( column1 data_type [ not null ],
  column2 data_type [ not null ],
  column3 data_type [ not null ],
  column4 data_type [ not null ],
  unique ([column1,column2]));

//给表中属性创建UNQIUE约束
ALTER TABLE TABLE_NAME
ADD UNIQUE (COLUMN);

ALTER TABLE TABLE_NAME
ADD CONSTRAINT UNIQUE (COLUMN);

//撤销UNIQUE约束
ALTER TABLE TABLE_NAME
DROP INDEX COLUMN;

2.3 外键约束

外键:子表里的一个字段,引用父表里的主键

实现方式:

//在字段定义之后再创建外键
CREATE TABLE table_name
( column1 data_type [ not null ],
  column2 data_type [ not null ],
  column3 data_type [ not null ],
  column4 data_type [ not null ],
  FOREIGN KEY (COLUMN) REFERENCES OTHER_TBL(COLUMN));

//给表中属性创建外键约束
ALTER TABLE TABLE_NAME
ADD FOREIGN KEY (COLUMN)
REFERENCES OTHER_TBL(COLUMN);

//撤销外键约束
//1.首先查看建表语言,得到外键名
show create table_name account;
//2.然后删除
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

2.4 NOT NULL 约束

直接在定义里

2.5 检查约束

用于检查输入到特定字段的数据的有效性。、

实现方式:

//在字段的定义阶段创建CHECK约束
column_name data_type [null] [ c)]

//在字段定义之后再创建CHECK约束
CREATE TABLE table_name
( column1 data_type [ not null ],
  column2 data_type [ not null ],
  column3 data_type [ not null ],
  column4 data_type [ not null ],
  CONSTRAINT chk_Person CHECK (column1>0 AND column1='***'));

//给表中属性创建CHECK约束
ALTER TABLE Persons
ADD CHECK (Id_P>0);

ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes');

//撤销CHECK约束(没成功)
ALTER TABLE Persons
DROP CHECK chk_Person;

3. MySQL查看数据库和表的信息

//查看所有数据库
SHOW DATABASES;

//选择数据库
USE DB_NAME;

//查看当前使用的数据库
SELECT DATABASE();

//查看数据库里有那些表
SHOW TABLES;

//查看表里有哪些属性
DESC TABLE_NAME;

//删除数据库
DROP DATABASE DB_NAME;

转载于:https://www.cnblogs.com/wangtinglou/p/9373734.html

你可能感兴趣的:(SQL基础(一))