zoukankan      html  css  js  c++  java
  • MySQL基础

    mysql基础知识

    一、MySQL基本简介

    1. 什么是数据库:数据库就是一个存储数据的仓库。

    2. MySQL是一个 RDBMS (Relational Database Management System,关系数据库管理系统) 。

    3. MySQL特点:

    • 开源,免费
    • 采用C和C++编写,保证了源代码的可移植性。
    • 支持多种操作系统。
    • 为多种语言提供了API。
    • 支持多线程
    • 优化的SQL查询算法
    • 提供多种语言支持
    • 支持大型数据库
    • 支持多种存储引擎

    二、数据库操作

    • 启动MySQL:
    net start mysql
    
    • 关闭MySQL:
    net stop mysql
    

    注意:启动或关闭MySQL数据库时,需要管理员权限。

    • 登录MySQL:
    mysql -u root -p
    
    • 查看所有数据库:
    show databases ;
    
    • 使用 LIKE 从句精准查询:
    格式:show databases LIKE '数据库名';
    
    • 使用 LIKE 从句,查看名字中包含 test 的数据库:
    格式:SHOW DATABASES LIKE '%test%';
    
    • 使用 LIKE 从句,查看名字以 db 开头的数据库:
    格式:SHOW DATABASES LIKE 'db%';
    
    • 使用 LIKE 从句,查看名字以 db 结尾的数据库:
    格式:SHOW DATABASES LIKE '%db';
    
    • 创建新数据库:
    格式:create database 数据库名;
    例如:create database db_info;
    

    注意:MySQL数据库不区分大小写,在创建数据库时不能与其他数据库同名,名称可以任意字母、数字、下划线(_)、和"$"组成,不能使用单独的数字,不能使用MySQL关键字作为数据库名和表名。

    • 查看数据库创建语句
    格式:show create database 数据库名;
    例如:show create database db_info;
    
    • 选择数据库:
    格式:use 数据库名;
    例如:use db_info;
    
    • 删除数据库:
    格式:drop database 数据库名;
    例如:drop database db_info;
    

    注意:不要随便删除MySQL自带的数据库,否则数据库无法使用。

    • MySQL的注释
      单行注释:#--
      多行注释:/**/

    三、数据库设计

    1、软件项目的开发周期:

    • 需求分析
    • 概要设计
    • 逻辑设计/详细设计
    • 代码编写
    • 软件测试
    • 安装部署

    2、数据库设计阶段

    • 需求分析:明确客户对系统的需求(数据需求和业务需求)。
    • 概要设计:抽象用户需求,绘制数据库的E-R图。
    • 逻辑结构设计:将E-R图转换成多个表,进行逻辑设计。
    • 物理阶段设计:确定E-R图后,选择具体的数据库进行物理实现。
    • 数据库实施阶段:建立数据库,编制调试应用程序,并进行运行。
    • 数据库运行和维护阶段:对数据库进行调整与修改。

    四、MySQL数据类型和存储引擎

    1、 数据类型:MySQL的数据类型有数值类型、日期/时间类型、字符串类型、二进制类型。
    2、 MySQL中除了常见的字符之外,我们还会遇到一些特殊的字符,如换行符、回车符等。我们需 要用某些特殊的字符来表示特殊的含义,这就是转义字符。
    转义字符一般以反斜杠符号****开头,常见的转义字符如下:

    转义字符 转义后字符
    \" 双引号(")
    \' 单引号(')
    \\ 反斜杠(\)
    \n 换行符
    \r 回车符
    \t 制表符
    \0 ASII 0 (NUL)
    \b 退格符

    3、MySQL的存储引擎有InnoDB 、MyISAM、Memory、Merge、Archive、CSV、BLACKHOLE 等。

    • 查看系统引擎类型:
    SHOW ENGINES;
    
    • 查看系统默认引擎:
    SHOW VARIABLES LIKE 'default_storage_engine%';
    
    • 修改零时默认引擎:
    SET default_storage_engine=存储引擎名;
    
    • 修改表的存储引擎
    ALTER TABLE <表名> ENGINE=存储引擎名;
    

    五、MySQL表的基本操作

    数据表是数据库的重要组成部分,每一个数据库都是由若干个数据表组成。

    1、创建表的语法:

    CREATE TABLE 表名(表定义选项)表选项 分区选项;
    
    例: create table db_emp( 
        	id int(11),
        	name varchar(25),
        	deptId int(11),
        	salary float);
    

    2、修改表的语法:

    ALTER TABLE 表名 修改选项;
    

    修改表是修改数据库中已经存在的数据表的结构,前提是数据库中已经有这个表。

    3、修改表名:

    ALTER TABLE 旧表名 RENAME TO 新表名;
    
    例: alter table db_emp rename to db_student;
    

    4、修改字符集:

    ALTER TABLE 表名 CHARACTER SET 字符集名 [DEFAULT] COLLATE 校对规则名;
    
    例: ALTER TABLE db_student
    		CHARACTER SET gb2312
    		DEFAULT COLLATE gb2312_chinese_ci;
    

    5、修改字段名称:

    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
    
    例: alter table db_student change salary Salary float;
    

    6、修改字段类型:

    ALTER TABLE 表名 MODIFY 字段名 数据类型;
    
    例: alter table db_student modify name varchar(30);
    

    7、删除字段:

    ALTER TABLE 表名 DROP 字段名;
    
    例: alter table db_student drop deptId;
    

    8、添加字段:

    ALTER TABLE 表名 ADD 新字段名 数据类型;
    
    例: alter table db_student add empId int(10);
    

    9、删除数据表:

    DROP TABLE 表名;
    
    例: drop table db_sutdent;
    

    10、删除被其它表关联的主键:

    数据表之间经常有外键关联的情况,直接删除父表,会破坏表的完整性,也删除不了。

    删除父表有两种方法:

    • 先删除与它关联的子表,再删除父表,这样就删除了2个表。
    • 将关联的外键约束取消,再删除父表,这样子表就保留下来了。

    在数据库中创建2个表:

    CREATE TABLE db_student01(
    	id INT(11) PRIMARY KEY,
    	name VARCHAR(22),
    	location VARCHAR (50));
    	
    ------------------------------------------------------
    
    CREATE TABLE db_student02(
    	id INT(11) PRIMARY KEY,
    	name VARCHAR(25),
    	deptId INT(11),
    	salary FLOAT,
    	CONSTRAINT fk_student01_student02
        FOREIGN KEY (deptId)
        REFERENCES db_student01(id));
    

    查看表db_student02的外键约束:

    SHOW CREATE TABLE db_student02;
    

    可以看到db_student02为子表,具有外键约束,db_student01为父表,主键id被子表db_student02所关联。执行drop table db_student01;发现报错,不能直接删除。

    解除子表db_student02的外键约束:

    ALTER TABLE db_student02 DROP FOREIGN KEY fk_student01_student02;
    

    这样就可以解除关联了,然后就可以删除 db_student01表。

    11、查看表结构:

    DESCRIBE 表名;
    DESC 表名; (简写)
    
    例: DESC db_student;
    

    12、查看创建表的语句:

    SHOW CREATE TABLE 表名;
    
    例: show create table db_student;
    

    13、查看一个数据库所有的表:

    show tables;
    

    六、MySQL约束、函数与运算符

    1、MySQL约束是指对表中数据的一种约束,能够确保数据库中数据的正确性和有效性。在MySQL中,主要支持6种约束:

    • 主键约束:主键是一个特殊字段,能唯一标识该表中的每条信息。
    • 外键约束:外键约束一般和主键约束一起使用,确保数据的一致性。
    • 唯一约束:唯一约束可以有多个,只允许有一个空值。
    • 检查约束:检查约束是用来检查数据表中,字段是否有效的一个手段。
    • 非空约束:非空约束用来约束表中的字段不能为空。
    • 默认值约束:用来约束当数据表中某个字段不输入值时,自动为其添加一个已设置好的值。

    2、主键(PRIMARY KEY)是MySQL中使用最频繁的约束,主键分为单字段和多字段联合主键。

    使用主键应该注意:

    • 每个表只能定义一个主键

    • 主键值必须唯一标识表中的每一行,不能为NULL,表中不能存在相同主键值的两行数据。

    • 一个字段名只能在联合主键字段表中出现一次。

    • 联合主键不能包含不必要的多余字段。

    在 CREATE TABLE 语句中,通过 PRIMARY KEY 关键字来指定主键。

    字段名 数据类型 PRIMARY KEY
    

    或者在定义完所有字段之后指定主键:

    PRIMARY KEY (字段名)
    
    • 联合主键就是这个主键是由一张表中多个字段组成的。
    PRIMARY KEY(字段1,字段2,···)
    

    主键约束不仅可以在创表时创建也可以在修改表时添加,设置主键约束的字段中不能有空值。

    添加主键约束语法:

    ALTER TABLE 数据表名 ADD PRIMARY KEY(字段名);
    

    删除主键约束:

    ALTER TABLE 数据表名 DROP PRIMARY KEY;
    

    3、在MySQL中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。通过给字段添加AUTO_INCREMENT属性来实现主键自增长。

    字段名 数据类型 AUTO_INCREMENT
    

    默认情况下,AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。AUTO_INCREMENT 约束的字段只能是整数类型。如果第一条记录设置了该字段的初始值,那么新增加的记录就从这个初始值开始自增。例如,如果表中插入的第一条记录的 id 值设置为 3,那么再插入记录时,id 值就会从 3开始往上增加。

    4、MySQL外键约束是表的一个特殊字符,经常和主键约束一起使用,两个具有关联关系的表而言,相关字段中主键所在的表就是主表,外键所在的表就是从表。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

    添加外键约束语法:

    FOREIGN KEY(字段名) REFERENCES 主表名(主键)
    

    先创建表tb_dept:

    create table tb_dept(
        id int(11) primary key,
        name varchar(22) not null,
        location varchar(50));
    
    

    然后创建表tb_emp,并在表tb_emp上创建外键约束,然它的键deptId作为外键关联到表tb_dept的主键id:

    CREATE TABLE tb_emp(
        id INT(11) PRIMARY KEY,
        name VARCHAR(25),
        deptId INT(11),
        salary FLOAT,
        CONSTRAINT fk_emp_dept
        FOREIGN KEY(deptId) REFERENCES tb_dept(id));
    
    

    通过DESC tb_emp;就可以查看到表tb_emp添加了外键约束,外键名为deptId,它依赖于表tb_dept的主键id。

    修改外键约束:外键约束也可以在修改表时添加,语法:

    alter table 数据表名 add constraint 外键名 foreign key(字段名) references 主表名(字段名);
    

    删除外键约束:当一个表不需要外键约束时,就需要从表中删除,这样就会解除主表和从表间的关联关系。

    ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
    

    5、MySQL唯一约束是指所有记录中字段的值不能重复出现。唯一约束与主键约束相似的是它们都可以确保列的唯一性。唯一约束在一个表中可有多个,并且设置唯一约束的列允许有空值,但是只能有一个空值。而主键约束在一个表中只能有一个,且不允许有空值。比如,在用户信息表中,为了避免表中用户名重名,可以把用户名设置为唯一约束。

    使用 UNIQUE 关键字指定唯一约束:

    字段名 数据类型 UNIQUE;
    
    例:CREATE TABLE tb_dept01(
       		id INT(11) PRIMARY KEY,
        	name VARCHAR(22) UNIQUE,
        	location VARCHAR(50));
    

    在修改表时添加唯一约束:

    ALTER TABLE 数据表名 ADD CONSTRAINT 唯一约束名 UNIQUE(字段名);
    
    例: alter table tb_dept02 add constraint unique_name unique(name); 
    

    删除唯一约束:

    ALTER TABLE 表名 DROP INDEX 唯一约束名;
    
    例:alter table tb_dept02 drop index unique_name;
    

    6、检查约束

  • 相关阅读:
    关于移动端点击后出现闪或者黑色背景
    :after伪类+content内容生成经典应用举例
    移动端(html5)微信公众号下用keyup实时监控input值的变化无效
    jquery-uploadify 上传
    SpringMvc 文件上传
    总结
    poi excel导入
    sencha 安装、学习
    sencha怎么在control层调用按钮
    sencha做个简单的登录界面
  • 原文地址:https://www.cnblogs.com/zhangliuping/p/11657798.html
Copyright © 2011-2022 走看看