zoukankan      html  css  js  c++  java
  • MySql笔记(一)

    每天给自己一个希望,努力做好自己,不为明天烦恼,不为昨天叹息。当梦想还在,告诉自己:努力,就总能遇见更好的自己!

    MySql笔记(一)

    1、创建数据库以及删除

    1.创建数据库语法:(命令行窗口操作)

    CREATE DATABASE DATABASENAME
    

    示例:创建名为MySQLTest的数据库

    CREATE DATABASE MySQLTest;
    

    2.删除数据库语法:(命令行窗口操作)

    DROP DATABASE DATABASENAME
    

    示例:删除名为MySQLTest的数据库

    DROP DATABASE MySQLTest;
    

    2、Sql常用数据类型

    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(是存储大文本的数据类型)

    5.二进制的数据类型:bit(如果使用了bit类型,系统就会将数据存储为二进制的形式)

    3、创建数据表以及范式

    (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)
    第三范式要求表中不存在冗余字段

    示例:             
       <b> 分数表</b>                             <b>分数表</b>                           
    字段           值			  字段             值
    游戏编号       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].
    		...
    }
    

    4、为队列添加约束

    (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
    }
    

    5、查看表数据

    查看表的基本结构
    语法:DESCRIBE/DESC TABLE_NAME

    结果含义:
    	Field:字段名
    	Type:字段类型
    	NULL:是否可以为空
    	Key:是否编制索引
    	Default:默认值
    	Extra:附加信息,如自增列
    

    查看表的详细结构
    语法:SHOW CREATE TABLE TABLE_NAME
    格式化结果:SHOW CREATE TABLE TABLE_NAMEG

    6、修改数据表

    修改表名
    语法: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'男'
    

    7、删除数据

    删除无关联数据表
    语法: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

    8、插入数据

    为所有列都插入值
    语法: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')
    

    9、修改数据

    修改全部数据
    语法: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'
    
    #### 10、删除数据
    

    使用DELETE命令删除数据表中的数据
    语法:DELETE[FROM] TABLE_NAME
    [WHERE CONDITION_EXPRESSION]

    示例:删除玩家表中所有女性玩家的信息
    		DELETE FROM USERS WHERE USER_SEX='女'
    

    使用TRUNCATE TABLE删除数据
    语法:TRUNCATE TABLE TABLE_NAME

    示例:清空分数表中所有信息
    		TRUNCATE TABLE SCORES
    

    11、删除数据

    查询和提取数据的过程
    1.客户端与服务器交互

    ​ 2.语法:SELECT COL1,COL2,...COLn
    ​ FROM TABLE1,TABLE2...TABLEn
    ​ [WHERE CONDITIONS][GROUP BY GROUP_BY_LIST]
    ​ [HAVING CONDITIONS][ORDER BY ORDER_LIST][ASC|DESC]]

    ​ 3.SELECT的意思是:我要查询或者显示出哪几个列的结果
    ​ FROM的意思是:这些列来源于哪些表
    ​ WHERE的意思是:符合部分条件的语句就写上WHERE
    ​ GROUP BY的意思是:把查询的结果进行分组
    ​ HAVING的意思是:统计结果
    ​ ORDER BY的意思是:把查询的结果进行排序

    12、删除数据

    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

    [ORDER BY ORDER_LIST]:

  • 相关阅读:
    NYOJ 10 skiing DFS+DP
    51nod 1270 数组的最大代价
    HDU 4635 Strongly connected
    HDU 4612 Warm up
    POJ 3177 Redundant Paths
    HDU 1629 迷宫城堡
    uva 796
    uva 315
    POJ 3180 The Cow Prom
    POJ 1236 Network of Schools
  • 原文地址:https://www.cnblogs.com/qzdd/p/12214625.html
Copyright © 2011-2022 走看看