SQL学习(一)

来源:互联网 发布:360浏览器淘宝比价 编辑:程序博客网 时间:2024/04/30 05:48

一、基本概念

①基本概念

         [1]记录:数据库表内容中的每一行都是一条记录

         [2]字段:每条记录中的列称为字段

②数据类型

         [1]主键:能够唯一标识当前记录的字段,为了保证主键值的唯一性,在MySQL中可以使用自增的int型数据作为主键。

        [2]MySQL中的常用数据类型

         (1)int类型:使用4个字节保存整数数据,一般不用指定长度

                   (2)char类型:定长字符串,以固定长度保存字符串数据,使用时如果没有指定长度则默认为1,只能保存一个字符;如果指定长度则保存的字符个数不能超过这个长度;能够指定的长度数值最大为255。

                   (3)varchar类型:变长字符串,根据字符串的实际长度进行保存,所以必须指定长度

CHAR(4)

存储需求

VARCHAR(4)

存储需求

'a'

'    '

4个字节

'a'

1个字节

'ab'

'ab  '

4个字节

'ab '

3个字节

'abcd'

'abcd'

4个字节

'abcd'

5个字节

'abcdefgh'

'abcd'

4个字节

'abcd'

5个字节

                   (4)double类型:双精度小数。以M,D方式指定长度,M=整数位+小数位,D=小数位。例如double(7,3)表示总长度为7位的小树,小数点后3。D≤M≤255,0≤D≤30。可以不指定长度,默认情况下M≤15,如果总位数超过15位,则将小数部分四舍五入,四舍五入后如果还超过15位则以指数形式保存。

                   (5)float类型:单精度小数。以M,D方式指定长度,M=整数位+小数位,D=小数位。D≤M≤255,0≤D≤30。可以不指定长度,默认情况下M≤6,如果总位数超过6位,则将小数部分四舍五入,四舍五入后如果还超过6位则以指数形式保存。

                   (6)date类型:日期类型,格式是'YYYY-MM-DD'。按照标准的SQL,不允许其他格式。

二、数据库操作

创建一个保存员工信息的数据库

create database employee;

相关其他命令

show databases; #查看当前所有数据库

useemployee;   #“使用”一个数据库,使其作为当前数据库

三、表的操作

创建表

#语法

CREATETABLE 表名

(

列名1 数据类型,

列名2 数据类型,

列名3 数据类型,

....

);

创建一个带主键约束的表:-- PRIMARY KEY  主键(非空且唯一) 通常用于确定唯一一条数

方式一:

CREATE TABLE emps (

  #int类型,自增

  emp_idINT AUTO_INCREMENT,

  #主键

  PRIMARY KEY (emp_id)

);

方式二:

CREATE TABLE emp5(
id INT(7),
NAME VARCHAR(30)
);
ALTER TABLE emp5
ADD CONSTRAINT emp5_id_pk PRIMARY KEY(id);

-- 删除主键约束
ALTER TABLE emp5
DROP PRIMARY KEY;

    添加外键约束: FOREIGN KEY 外键约束:关联另一个主键,出现在外键表中的数据一定出现在主键表中

CREATE TABLE dept(
dept_id INT(7) PRIMARY KEY,
dept_name VARCHAR(25)
);

CREATE TABLE emp6(
id INT,
NAME VARCHAR(20),
dept_id INT(7)
);

ALTER TABLE emp6
ADD CONSTRAINT emp6_dept_id_fk FOREIGN KEY(dept_id) REFERENCES dept(dept_id);

-- 删除外键约束
ALTER TABLE emp6
DROP FOREIGN KEY emp6_dept_id_fk;

CREATE TABLE emp(
id INT(7) PRIMARY KEY,
NAME VARCHAR(30),
depart_id INT(7),
CONSTRAINT emp_depart_id_fk FOREIGN KEY(depart_id) REFERENCES dept(dept_id)
ON DELETE SET NULL
-- ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
-- ON DELETE SET NULL(级联置空): 子表中相应的列置空

);

约束:

-- NOT NULL 非空约束,规定某个字段不能为空
CREATE TABLE emp1(
id INT(7) NOT NULL, -- 列级约束
NAME VARCHAR(30)
);

-- 添加非空约束
ALTER TABLE emp1
MODIFY NAME VARCHAR(30) NOT NULL;

-- 取消非空约束
ALTER TABLE emp1
MODIFY NAME VARCHAR(30) NULL;


-- UNIQUE  唯一约束,规定某个字段在整个表中是唯一的
CREATE TABLE emp2(
id INT(7),
NAME VARCHAR(30),
phone VARCHAR(30),
email VARCHAR(35),
CONSTRAINT emp2_name_un UNIQUE(NAME)  -- 表级约束
);

-- 添加唯一约束
ALTER TABLE emp3
ADD CONSTRAINT emp3_name_un UNIQUE(NAME);
-- 删除唯一约束
ALTER TABLE emp3
DROP INDEX emp3_name_un;

- 联合约束
CREATE TABLE emp3(
id INT(7),
NAME VARCHAR(30),
phone VARCHAR(30),
email VARCHAR(35),
CONSTRAINT emp3_phone_email_un UNIQUE(phone, email)
);

0 0
原创粉丝点击