数据库(一)

1:创建数据库

语法:CREATE DATABASE 数据库名;

2:连接到数据库

语法:USER 数据库名

3:删除数据库

语法:DROP DATABASE 数据库名;

4:整数数据类型:

从小到大依次为:TINYINT  SMALLINT MIDDLEINT INT BIGINT

5:浮点数据类型

包括:REAL FLOAT  DOUBLE DECIMAL NUMERIC

6:字符串型

包括CHAR NCHAR VARCHAR NVARCHAR TEXT NTEXT

其中CHARY与VARCHAR的区别为:CHAR长度固定,如果没有填,用空格填充空间,占内存大。VARCHAR长度可变,根据内容来确定空间,但CHAR 的效率比VARCHAR效率高,因为VARCHAR要计算长度。

7:二进制数据类型

BINARY VARBINARY

8:日期和时间数据类型

DATETIME SMALLDATETIME 

/*
创建数据库和管理数据库
*/

#创建一个数据库
CREATE DATABASE j123;

#删除一个数据库
DROP DATABASE j123;

#选中数据库
USE j123;

/*
整型
*/
CREATE TABLE t_int(
    id TINYINT,
    num SMALLINT,
    age INT,
    phoneNum BIGINT
);

SELECT * FROM t_int;

/*
浮点型
float超过6位默认以科学计数的方法
*/

CREATE TABLE t_fudian(
    num FLOAT,
    grade DOUBLE,
    money DECIMAL(4,2)
);
SELECT * FROM t_fudian;

/*
字符串类型
区别:char的长度是固定的,用空格来补空间
      varchar长度可变,根据内容来确定长度。
      char的效率要比varchar要高
      在使用固定长度使用char
      
*/
CREATE TABLE t_char(
    c_name CHAR(2),
    address VARCHAR(100)
);
SELECT * FROM t_char;

/*
二进制
*/
CREATE TABLE t_blob(
    img BLOB
);


/*
日期类型
*/
CREATE TABLE t_data(
    years YEAR,
    dates DATE,
    datatimes DATETIME
);
SELECT * FROM t_data;
INSERT INTO t_data(years,dates) VALUE(2016,2016-06-32);

/*
布尔类型
true  - 1
false - 0
*/
CREATE TABLE t_boolean(
    boo BOOLEAN
);
SELECT * FROM t_boolean;
INSERT INTO t_boolean VALUE(TRUE);
INSERT INTO t_boolean VALUE(FALSE);

/*
创建表
*/
#表名  t_开始  列名 表名第一个字母作为前缀
#没列用逗号分割,最后一个列不需要逗号
CREATE TABLE t_stu(
    s_id INT,
    s_name VARCHAR(40),
    s_phone VARCHAR(20),
    s_grade DOUBLE,
    s_teacher VARCHAR(20)
);

CREATE TABLE t_stu();
SELECT * FROM t_stu;
INSERT INTO t_stu VALUE(1,"fangyan","135558880",79.5,"Mr xu");

/*
删除表
*/

DROP TABLE t_stu;

/*
复制表
*/
CREATE TABLE t_stu1 SELECT * FROM t_stu;  #要拷贝结构和数据
SELECT * FROM t_stu1;
DROP TABLE t_stu1;

CREATE TABLE t_stu2 SELECT * FROM t_stu WHERE 1=0;
SELECT * FROM t_stu2;

/*
修改表
*/
#修改表名 t_student
ALTER TABLE t_stu2 RENAME t_student;
SELECT * FROM t_student;

#修改列的属性 change 第一个原来表的列名 第二个修改后的列名
ALTER TABLE t_student CHANGE s_teacher s_teacher INT;
ALTER TABLE t_student CHANGE s_phone s_ph INT;       #
ALTER TABLE t_student MODIFY s_teacher VARCHAR(20);


/*
增加一列
*/

ALTER TABLE t_student ADD s_sex CHAR(2);
SELECT * FROM t_student;

/*
删除一列
*/
ALTER TABLE t_student DROP s_sex;

/*
创建一个索引
*/
CREATE INDEX name_index ON t_student(s_name);
#unique创建了一个唯一索引,索引可以有多个,但是索引值必须唯一,可以为空
CREATE UNIQUE INDEX id_index ON t_student(s_id);

/*删除索引*/
ALTER TABLE t_student DROP INDEX name_index;

/*
实体完整性
*/
#主键约束 primary key 保证每行数据必须唯一,默认有一个非空
CREATE TABLE t_car(
    c_id INT PRIMARY KEY,
    c_name VARCHAR(100),
    c_color VARCHAR(20)
);

DROP TABLE t_car;
SELECT * FROM t_car;


CREATE TABLE t_car2(
    c_id INT,
    c_name VARCHAR(100),
    c_color VARCHAR(20)
);

ALTER TABLE t_car2 ADD CONSTRAINT pk_id PRIMARY KEY(c_id);   #指定主键的名称
ALTER TABLE t_car2 ADD PRIMARY KEY(c_id);  #不指定主键的名称直接操作列
INSERT INTO t_car2 VALUES(1,'msld','red');

SELECT * FROM t_car2;

/*删除主键*/
ALTER TABLE t_car2 DROP PRIMARY KEY;

DROP TABLE t_car2;

/*
唯一约束
保证当前列里面的数据必须唯一
数据可以为null
*/
CREATE TABLE t_car2(
    c_id INT,
    c_name VARCHAR(100) UNIQUE,
    c_color VARCHAR(20),
    PRIMARY KEY(c_id)    #也表示增加主键
);
SELECT * FROM t_car2;
INSERT INTO t_car2(c_name,c_color)VALUES('msld',"red");
INSERT INTO t_car2(c_name,c_color)VALUES('msld_v12',"blue");

/*
域完整性
*/
#非空
#默认
CREATE TABLE t_teacher(
    t_id INT PRIMARY KEY,
    t_name VARCHAR(20) UNIQUE,
    t_sex CHAR(2) DEFAULT "男",
    t_phone VARCHAR(20) NOT NULL 
);

INSERT INTO t_teacher(t_id,t_name,t_sex,t_phone) VALUES(1,'MR xu','',NULL);
INSERT INTO t_teacher(t_id,t_name,t_phone) VALUES(2,'MR xu1','1234567');

SELECT * FROM t_teache

 

posted @ 2016-06-06 21:23  psbyking888  阅读(190)  评论(0编辑  收藏  举报