Mysql数据库相关知识

数据库:database

----------------------------数据库相关操作--------------------------------------

分类:Mysql 小 免费
Oracle 贵 大
SQLSever 微软
软件:wamp/phpstudy

服务器中的内容:库,表。

表关系:一对一
一对多
多对多

命令:
show databases;查看当前服务器中的所有数据库
use 数据库名; 选择使用哪一个数据库
show tables; 查看当前数据库中的所有表
select * from 表名; 查看某张表中的具体数据
quit; 退出命令行操作

IDE : navicat for mysql
创建数据库连接:
输入:hostname/IP address : 127.0.0.1/localhost -- 需要连接的服务器地址(用于获取本地主机的IP地址)
port : 3306 端口号
username : root
password :

----------------------------建库,建表--------------------------------------

创建数据库:create database 库名;

查看数据库:show databases;

建库:CREATE DATABASE 库名 DEFAULT CHARSET=字符集;

删库:DROP DATABASE 库名;

建表:CREATE TABLE 表名(
字段1 数据类型 约束,
字段2 数据类型 约束,
......
字段n 数据类型 约束
)引擎 DEFAULT CHARSET=字符集;


-----------------------------建表后-------------------------------------

--建表后修改列类型:

语法:alter TABLE 表名 MODIFY 列名 目标类型;

--增加列:
语法:alter TABLE 表名 add 列名 列类型;

--修改列名:
语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;

--修改表名:
语法1:ALTER TABLE 表名 RENAME 新表名;
语法2:RENAME table 表名 TO 新表名;

--删除列:
语法:alter TABLE 表名 DROP 列名;

删除表:DROP TABLE 表名;

----------------------------约束--------------------------------------

1.非空:not NULL
语法:字段 + NOT NULL

2.唯一:unique
语法:字段 + UNIQUE

3.主键:primary KEY --非空且唯一
一般情况下,每张表都会有且仅有一个主键列(标识列)
在类似于id这样的字段后 + PRIMARY KEY

4.自动增长:auto_increment
语法:主键字段 + auto_increment
注意:表中只有int类型的字段可以自增

可以设置表的自增基数


5.设置默认值:default '值'
语法:字段 + default '默认值'


6.检查约束 :check (mysql不支持,为了与其他数据库保持统一)
语法:字段后 + check(条件)


7.外键约束: FOREIGN KEY
作用:使表拥有数据完整性

主表:有字段被其他表参照的表,优于从表存在
从表:有字段需要参照其他表的表,在主表创建后再创建

======================
注意:
1.主表必须优于从表创建 ,删除时,从表必须先于主表删除
2.从表的数据必须在主表的已有范围内
3.如果主表中有数据正在被从表参照,那么主表中的相应数据不能修改或删除
4.从表参照的主表字段只能是唯一约束或主键

-----------------------------表关联-------------------------------------

语法1
FOREIGN KEY (本表的外键字段) REFERENCES 主表(关联字段);

语法2:
CONSTRAINT FOREIGN KEY 外键名(外键字段) REFERENCES 主表(关联字段);


-----------------------------引擎-------------------------------------

关于表的引擎:
引擎:mysql对表的解析方式
MySQL有以下几种引擎:ISAM、MyISAM、HEAP(也称为MEMORY)、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、InnoDB(常用)、 Berkeley、Merge、Federated和Cluster/NDB等,
MyISAM --不支持事务以及外键
INNODB --支持事务和外键 语法:ENGINE=INNODB;

-----------------------------数据类型-------------------------------------

1.整数:
tinyint 占1个字节 -128~127
SMALLINT 占2个字节 -32768~32767
INT(默认) 占4个字节 -21亿~21亿
BIGINT 占8个字节

2.小数(浮点数)
FLOAT 占2个字节 精确到小数点后7位 --单精度
DOUBLE(默认) 占4个字节 精确到小数点后15位 --双精度
DECIMAL(值,位数) DECIMAL(23.23456,5)

3.字符:
CHAR(M) : 可以存储0~255个长度的字符
VARCHAR(M):(默认) 可以存储0~65535个长度的字符
text:存储大于8KB的长文本
BLOB:存储二进制大文件

4.时间日期:
time : 00:00:00~23:59:59
date : 1000-1-1 ~ 9999-12-31
datetime : 1000-1-1 00:00:00 ~9999-12-31 23:59:59

-----------------------------表的增删查改-----------------------------------------

1.增:insert

语法: INSERT INTO 表名(字段1,字段2,..) VALUES (值1,值2.....);
INSERT INTO 表名 values(值。。。。。); --必须为表中的每个字段添加值,哪所这个字段有默认值或主键
注意:字段的顺序必须和表中的顺序一致,而值的顺序必须和字段的顺序一致

2删除:
1.DELETE (会保留数据空间)
语法:delete from 表名 [where 条件];

--删除test表中tid 为3的数据
DELETE FROM test WHERE tid = 3;

--删除test表中所有数据:
DELETE FROM test;


2.TRUNCATE (清空表,不保留数据结构,会保留表结构)
语法:truncate TABLE 表名;
TRUNCATE TABLE test;


3.DROP (删除整个表结构)
语法:drop table 表名;

3.修改:update

语法:update 表名 set 字段1 = XX1, 字段2 = XX2 .. [WHERE 条件];
注意:如果不要where条件,表示将表中所有数据全部修改


4.查询 :SELECT

1.查询所有数据:SELECT * FROM 表名; --执行效率低
2.查询指定字段:SELECT 字段名1,字段2... from 表名;
3.对空值的查询 IS NULL

--查询student表中sname为""的数据
SELECT * FROM student where sname = "";
--查询student表名sage为null的数据
SELECT * FROM student WHERE sage IS NULL;

4.查询中对字段取别名 AS

SELECT sname AS '123',sage as '111' FROM student;
SELECT sname '123',sage '111' FROM student;
表名也可以取别名:
SELECT * FROM student s WHERE s.sage>18;
注意:as可以省略

5.查询中使用算术表达式 + - * /
--查询出课程表中所有课程的课时+20后的数据情况
SELECT cname,cxueshi '原课时',cxueshi+20 '新课时' FROM course

6.处理重复值 DISTINCT 字段。。。

--查询student表中的专业有哪些
SELECT DISTINCT szhuanye FROM student;
SELECT DISTINCT sage FROM student;
SELECT DISTINCT ssex, szhuanye,sage from student;
注意:如果有多个字段进行去重复处理,那么表示是将多个字段的值结合后再去掉重复

7.返回限定行 LIMIT
SELECT....from ... LIMIT n; --表示返回当前表的第1行到第n行
SELECT.... from .... LIMIT m,n; --返回当前表中第m+1行,往后的n行数据
--查询学生表中的前五行
SELECT * FROM student LIMIT 5;
- -查询出学生表中第五行到第十行的数据:
SELECT * FROM student LIMIT 4,6;

-----------------------------
通过查询复制表
1.复制表和数据
CREATE TABLE newstudent SELECT * FROM student; --不能复制约束

DESC newstudent3;

2.仅复制表结构
2.1 CREATE TABLE newstudent2 SELECT * FROM student WHERE 2=1;
2.2 CREATE TABLE newstudent3 LIKE student; --可以复制约束

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

posted @ 2017-08-18 15:21  php_小学生  阅读(213)  评论(0编辑  收藏  举报