• 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]:

  • 相关阅读:
    【.net】未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法
    【JS】JavaScript中Null和undefind区别
    【SQL】SQL中on条件与where条件的区别
    【C#】C#创建自定义Object对象
    【.NET】asp.net Redirect 图片路径
    【JQ】jq动态绑定事件.on()、解绑事件off()
    【.NET】using 语句中使用的类型必须可隐式转换为"System.IDisposable"
    C# enum、int、string三种类型互相转换
    js中Date与timestamp(时间戳)的相互转换
    2. 自动化运维系列之Cobbler给Openstack节点安装操作系统。
  • 原文地址:https://www.cnblogs.com/qzdd/p/12214625.html
Copyright © 2020-2023  润新知