目录html
天天给本身一个但愿,努力作好本身,不为明天烦恼,不为昨天叹息。当梦想还在,告诉本身:努力,就总能碰见更好的本身!前端
1.建立数据库语法:(命令行窗口操做)mysql
CREATE DATABASE DATABASENAME
示例:建立名为MySQLTest的数据库sql
CREATE DATABASE MySQLTest;
2.删除数据库语法:(命令行窗口操做)数据库
DROP DATABASE DATABASENAME
示例:删除名为MySQLTest的数据库服务器
DROP DATABASE MySQLTest;
1.整数类型:tinyint(微小的整数),smallint(小的整数),int(普通的整数),bigint(大的整数)
存储的空间不一样:tinyint只有一个字节,smallint有两个字节,int有四个字节,bigint有8个字节数据库设计
2.小数点的数据类型:定点数(decimal(p,s))和浮点数float(p,s)四个字节,double(p,s)八个字节。
定点数的小数点是固定的,而浮点数的小数点是不固定的,区别:定点数的小数点是固定的因此他的小数精度准确,
而浮点数的小数点是不固定的,因此浮点数的小数点的精度没有定点数的精度准确度高。可是浮点数表示的范围更大命令行
3.日期/时间类型:date(某个日期,不包含时间), time(一天当中某一个点数) datetime(连日期带时间)设计
4.文本类型:char(固定长度的文本) ,varchar , text(是存储大文本的数据类型)code
5.二进制的数据类型:bit(若是使用了bit类型,系统就会将数据存储为二进制的形式)
(1.数据库设计基本步骤(分四个阶段):
1.需求分析阶段:分析客户的业务和数据处理需求
2.概要设计阶段:将需求设计成数据库的E-R模型图,确认需求信息的正确和完整
3.详细设计阶段:将E-R模型图转换为多张表,进行逻辑设计,并应用数据量设计的三大范式进行审核
4.代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用
例子:
模型QQ游戏大厅项目
1.需求分析:系统要记录哪些信息?中国象棋,扑克游戏和玩家的信息,分数信息等
2.数据表:游戏表,玩家表,分数表
3.每一个表的字段
游戏表 玩家表 分数表
1.编号 1.QQ号 1.游戏编号
2.名称 2.昵称 2.玩家QQ
3.类型 3.性别 3.得分
4.难度 4.生日
5.手机号
将这些数据用E-R作一个模型实体关系图
用长方形符号表示实体,通常是名词 用圆形符号表示属性,通常是名词 用三角形符号表示关系,通常是名词
2 范式:设计关系数据库时,听从不一样的规范要求,设计出合理的关系型数据库,
这些不一样的规范要求被称为不一样的范式,各类范式呈递次规范,越高的范式数据库冗余越小
3 Dr E,F,codd最初定义了规范化的几个级别,范式用以定义具备最小的冗余的表结构
第一范式(1st NF)
若是每列都说不可再分的最小数据单元(也称为最小的原子单元),侧知足第一范式(1NF)
第一范式的目标是确保每列的原子性
示例: 玩家QQ 地址 玩家QQ 国家 城市 12301 中国北京 -》修改成 12301 中国 北京 12302 美国纽约 12302 美国 纽约
第二范式(2nd NF)
若是一个关系知足1NF,而且除了主键觉得的其余列,都彻底依赖于该主键,侧知足第二范式(2NF)
第二范式要求每一个表只描述一件事情
示例: 游戏 游戏 字段 值 字段 值 游戏编号 1 游戏编号 1 游戏名称 3D桌球 游戏名称 3D桌球 -》修改成 游戏类型 体育 游戏类型 体育 游戏难度 1 游戏难度 1 胜者得分 100 难度奖励 字段 值 游戏难度 1 胜者得分 100
第三范式(3rd NF)
若是一个关系知足2NF,而且除了主键之外的其余列都不传递依赖于主键列,侧知足第三范式(3NF)
第三范式要求表中不存在冗余字段
示例: 分数表 分数表 字段 值 字段 值 游戏编号 1 游戏编号 1 玩家QQ 12301 -》修改成 玩家QQ 12301 玩家昵称 悟空 得分 2760 得分 2760
(2.使用客户端建立数据表
步骤:
1.打开连接,选择数据库
2.右键选择新建表
3.填写表各个字段的名称,数据类型,勾选是否容许空
4.保存表
(3.使用命令行的方式建立数据表
步骤:
1.从命令行窗口登陆MySQL
2.使用CREATE TABLE语句建立表
语法公式:
CREATE TABLE table_name{ col_name1 col_type[not null]. col_name1 col_type[not null]. ... }
(1.主键约束
1.约束的概念和做用(约束就是检查官,检查数据是否有重复的内容)
2.主键约束做用:保证明体完整性
3.PRIMARY KEY是检查两条表中的语句是否有重复
示例:为玩家表的玩家QQ列添加主键约束
create table users( user_qq varchar(20) not null PRIMARY KEY, user_name varchar(50) not null, user_sex char(2) not null, user_birthday date not null, user_mobile char(11) not null )
(2.外键约束
1.外键约束做用,保证引用完整性
2.references关键字的意思是引用的意思。
示例:为分数表添加外键约束
create table scores( user_qq varchar(20) not null references users(user_qq), gno int not null, score int not null )
(3.检查约束
1.检查约束做用,保证域完整性
2.check()关键字的意思是游戏编号等要大于0,不然错误
例如:为游戏表添加检查约束
create table games( gno int not null check(gno>0), gname varchar(50) not null, gtype varchar(20) not null )
(4.默认约束
1.做用:保证域完整性
2.DEFAULT'男'
(5.自增列
1.做用:保证明体完整性
2.AUTO_INCREMENT是自增列的关键字
例:为游戏表添加自增列
CREATE TABLE Games( GNO INT NOT NULL AUTO_INCREMENT, GName varchar(50) NOT NULL, GType varchar(20) NOT NULL }
查看表的基本结构
语法:DESCRIBE/DESC TABLE_NAME
结果含义: Field:字段名 Type:字段类型 NULL:是否能够为空 Key:是否编制索引 Default:默认值 Extra:附加信息,如自增列
查看表的详细结构
语法:SHOW CREATE TABLE TABLE_NAME
格式化结果:SHOW CREATE TABLE TABLE_NAME\G
修改表名
语法:ALTER TABLE OLD_NAME RENAME TO NEW_NAME
示例: ALTER TABLE GAMES RENAME TO QQ_GAME
修改字段名
语法:ALTER TABLE TABLE_NAME CHANGE OLD_NAME NEW_NAME NEW_TYPE
示例: ALTER TABLE GAMES CHANGE GNO GAME_ID VARCHAR(20)
修改字段数据类型
语法:ALTER TABLE TABLE_NAME MODIFY COL_NAME NEW_TYPE
示例: ALTER TABLE GAMES MODIFY GNO VARCHAR(20)
添加和删除字段
添加字段语法:ALTER TABLE TABLE_NAME ADD NEW_COL_NAME NEW_TYPE
删除字段语法:ALTER TABLE TABLE_NAME DROP COL_NAME
增补约束
添加主键语法:ALTER TABLE TABLE_NAME ADD CONSTRAINT CON_NAME PRIMARY KEY(COL_NAME)
示例:ALTER TABLE USERS ADD CONSTRAINT PK_USERS_USERQQ PRIMARY KEY(USERQQ) 添加外键语法:ALTER TABLE F_TABLE ADD CONSTRAINT CON_NAME FOREIGN KEY(F_COL)REFERENCES M_TABLE(M_COL) 示例:ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_GAMES FOREIGE KEY(GNO)REFERENCES GAMES(GNO) 添加检查约束语法:ALTER TABLE TABLE_NAME ADD CONSTRAINT CON_NAME CHECK(EXP) 示例:ALTER TABLE GAMES ADD CONSTRAINT CK_GAMES_GNO CHECK(GNO>0) 添加默认值语法:ALTER TABLE TABLE_NAME ALTER COL_NAME SET DEFAULT VALUE 示例:ALTER TABLE USERS ALTER USER_SEX SET DEFAULT'男'
删除无关联数据表
语法:DROP TABLE [IF EXISTS] TABLE_NAME1,TABLE_NAME2
示例:DROP TABLE SCORES
删除有关联数据表
先解除关联关系语法:ALTER TABLE F_TABLE_NAME DROP FOREIGN KEY CON_NAME
删除表:DROP TABLE TABLE1,TABLE2
为全部列都插入值
语法:INSERT[INTO] TABLE_NAME VALUES(V1,V2...Vn)
特色--列值同数,列值同序
示例;INSERT INTO USERS VALUES('12301'.'周天'.'男','1982-02-01','1371111222')
为特定列插入值
语法:INSERT[INTO] TABLE_NAME(COL1,COL2...COLn)VALUES(V1,V2...Vn)
特色:指定顺序,列值对应
示例:INSERT INTO USERS(USER_QQ,USER_NAME,USER_MOBILE)VALUES('20020106','叮当','13834561278')
一次性插入多条记录
语法:INSERT[INTO] TABLE_NAME[(COL1,COL2...COLn)]VALUES(V1,V2...V1n),(V21,V22...V2n),(V23,V23...V3n)
示例:INSERT[INTO] USERS(USER_QQ,USER_NAME,USER_BIRTHDAY,USER_MOBILE) VALUES('20020106'.'周天','1980-07-08','1371111555'),('20025564'.'立飞','1983-09-08','1382111555')
修改所有数据
语法:UPDATE TABLE_NAME SET{COL_NAME=EXPRESSION}[...n]
示例1:把全部玩家的性别都改成男性
UPDATE USERS=SET USER_SEX='男'
示例2:把全部玩家的全部游戏分数都增长100分 UPDATE SCORES SET SCORE=SCORE+100
修改特定数据
语法:UPOATE TABLE_NAME SET{COL_NAME=EXPRESSION}[...n]
WHERE CONDITION_EXPRESSION
示例:把QQ为'12302'的玩家性别都改成女性 UPDATE USERS SET USER_SEX='女' WHERE USER_QQ='12302'
#### 十、删除数据
使用DELETE命令删除数据表中的数据
语法:DELETE[FROM] TABLE_NAME
[WHERE CONDITION_EXPRESSION]
示例:删除玩家表中全部女性玩家的信息 DELETE FROM USERS WHERE USER_SEX='女'
使用TRUNCATE TABLE删除数据
语法:TRUNCATE TABLE TABLE_NAME
示例:清空分数表中全部信息 TRUNCATE TABLE SCORES
查询和提取数据的过程
1.客户端与服务器交互
2.语法:SELECT COL1,COL2,...COLn
FROM TABLE1,TABLE2...TABLEn
[WHERE CONDITIONS][GROUP BY GROUP_BY_LIST]
HAVING CONDITIONS[ASC|DESC]]
3.SELECT的意思是:我要查询或者显示出哪几个列的结果
FROM的意思是:这些列来源于哪些表
WHERE的意思是:符合部分条件的语句就写上WHERE
GROUP BY的意思是:把查询的结果进行分组
HAVING的意思是:统计结果
ORDER BY的意思是:把查询的结果进行排序
1.查询表的所有行和列
示例:查询玩家表中所有的行和列 SELECT USER_QQ,USER_NAME,USER_SEX,USER_BIRTHDAY,USER_MOBILE FROM USERS
简便的查询表的所有行和列的方法
语法:SELECT *FROM USERS
2.查询表的部分列
示例:从玩家表中查询玩家QQ和昵称
SELECT USER_QQ,USER_NAME FROM USERS
3.别名的使用
示例:从玩家表中查询玩家QQ和昵称,并显示为“玩家QQ”和“玩家昵称”
SELECT USER_QQ AS'玩家QQ',USER_NAME AS'玩家姓名'
FROM USERS
4.DISTINCT关键字
做用:消除结果集中的重复行
示例:显示参与了游戏的玩家QQ,要求参与了多个游戏的玩家不重复显示QQ号
语法: SELECT DISTINCT USER_QQ FROM SCORES
5.LIMIT关键字 做用:指定结果集中数据的显示范围 示例:显示玩家表中第三至第5条数据 语法:SELECT * FROM USERS LIMIT2,3