zoukankan      html  css  js  c++  java
  • SQL 03

    ********************2017年8月10日********************
    安装mysql


    Typical :典型安装
    Custom :自定义安装
    Complete:完全安装


    简单认知
    mysql默认端口号是:3306
    mysql的超级用户叫:root


    在cmd中启动mysql服务:net start mysql
    在cmd中登录mysql :mysql -u root -p password -P端口号 -h服务器名称或IP地址
    在Windows的cmd中清屏命令:cls
    退出:1. exit; 2. quit; 3. q;
    =
    mysql语句的规范
    1.关键字与函数名称全部小写
    2.数据库名称、表名称、字段名称全部小写
    3.SQL语句必须以分号结尾

    修改MYSQL提示符
    1.连接客户端时通过参数指定
    shell>mysql -uuser -ppassword --prompt 提示符

    2.连接上客户端后,通过prompt命令修改
    mysql>prompt 提示符

    提示符参数:
    D :完整的日期
    d :当前数据库
    h :服务器名称
    u :当前用户

    常用命令

    1.数据库的操作
    SELECT VERSION(); //显示当前服务器版本
    SELECT NOW(); //显示当前日期时间
    SELECT USER(); //显示当前用户

    CREATE DATABASE t1; //创建数据库t1 //在许多时候 DATABASE 和 SCHEMA 作用相同
    CREATE SCHEMA t1; //创建数据库t1

    ALTER DATABASE t1; //修改数据库t1
    DROP DATABASE t1; //删除数据库t1
    USE t1; //打开数据库t1
    SHOW DATABASES; //查看当前服务器下的数据库
    SHOW WARNINGS; //查看警告信息
    SHOW CREATE DATABASE t1; //显示数据库t1的编码方式
    CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET=gbk; //先检查是否存在t2数据库,已存在则直接修改其编码方式,不存在则先创建并修改其编码方式

    ALTER DATABASE t2 CHARACTER SET=utf8; //修改数据库的编码方式

    2.表的操作
    2.1:CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type, ...)//column:列 //创建数据表

    2.2:SHOW TABLES [FROM db_name] [LIKE 'pattern' | where expr]; //查看数据表

    2.3:SHOW COLUMNS FROM tb_name; //查看数据表结构


    3.记录的插入与查找
    INSERT [INTO] tb_name [(col_name,...)] VALUES(val,..); //插入记录
    空值与非空
    NULL,字段值可以为空
    NOT NULL,字段值禁止为空 // 在创建时设置如:CREATE TABLE tb2(username VARCHAR(20)NOT NULL,age TINYINT UNSIGNED NULL);



    4.自动编号:AUTO_INCREMENT

    4.1 自动编号,必须与主键组合使用
    4.2 默认情况下,起始值为1,每次增量为1

    5.主键:PRIMARY KEY
    5.1 主键约束
    5.2 每张数据表只能存在一个主键
    5.3 主键保证记录的唯一性
    5.4 主键自动为 NOT NULL

    例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL);

    6.唯一约束:UNIQUE KEY
    6.1 唯一约束可以保证记录的唯一性
    6.2 唯一约束的字段可以为空值(NULL)
    6.3 每张数据表可以存在多个唯一约束

    例子:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY);


    7.默认约束:DEFAULT
    例1:CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT KEY,username VARCHAR(30) NOT NULL UNIQUE KEY,SEX ENUM('男','女','保密') DEFAULT '保密');
    例2:ALTER TABLE user2 ALTER age SET DEFAULT 15;

    当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

    8.约束
    8.1 约束保证数据的完整性和一致性
    8.2 约束分为表级约束和列级约束
    8.3 约束类型包括:
    NOT NULL ( 非空约束)
    PRIMARY KEY(主键约束)
    UNIQUE KEY(唯一约束)
    DEFAULT(默认约束)
    FOREIGN KEY(外键约束):实现一对一或一对多关系

    9. 外键约束的要求:
    1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
    2.数据表的存储引擎智能为InnoDB
    3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
    4.外键列和参照列必须创建索引。如果参照列不存在索引的话,MYSQL将自动创建索引。
    修改数据表的存储引擎
    MYSQL配置文件: default-storage-engine=innodb

    SHOW CREATE TABLE 表名; //查看表的存储引擎与编码方式

    10. 外键约束的参照操作

    1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
    2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
    3.RESTRICT:拒绝对父表的删除或更新操作
    4.NO ACTION:标准SQL的关键字,在MYSQL中与RESTRICT相同
    **************************************12:58 2017/8/8******************************

    11.表级约束与列级约束
    11.1:对一个数据列建立的约束,称为列级约束
    11.2:对多个数据列建立的约束,称为表级约束
    11.3:列级约束既可以在列定义时声明,也可以在列定义后声明,表级约束只能在列定义后声明。

    12.修改数据表
    12.1:添加单列:ALTER TABLE tb1_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
    FIRST:新插入的那一列置于所有列最前面
    例子:ALTER TABLE user ADD truename VARCHAR(20) NOT NULL FIRST;
    AFTER:置于指定列的后面
    例子:ALTER TABLE user ADD password VARCHAR(32) NOT NULL AFTER username;
    都不加则置于所有列最后面


    12.2:添加多列:ALTER TABLE tb1_name ADD [COLUMN] (col_name column_definition,...)
    区别:添加单列的时候,所有的列不用加小括号,添加单列的时候可以指定位置关系,添加多列的时候不能指定位置关系,只能在原来数据表列的下方

    12.3:删除单列:ALTER TABLE tb1_name DROP [COLUMN] col_name

    12.4:删除多列:ALTER TABLE tb1_name DROP [COLUMN] col_name,DROP [COLUMN] col_name;

    12.5:添加主键约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type](index_col_name,...)
    CONSTRAINT 名字:给主键起名字

    12.6:添加唯一约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type](index_col_name,...)

    12.7:添加外键约束:ALTER TABLE tb1_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

    例子:ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);

    12.8:添加/删除默认约束:ALTER TABLE tb1_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

    例1:ALTER TABLE user2 ALTER age SET DEFAULT 15;

    例2:ALTER TABLE user2 ALTER age DROP DEFAULT;

    12.9:删除主键约束:ALTER TABLE tb1_name DROP PRIMARY KEY

    例子:ALTER TABLE user2 DROP PRIMARY KEY; //删除主键时不用加列名,因为每张数据表有且仅有一个主键

    12.10:删除唯一约束:ALTER TABLE tb1_name DROP {INDEX | KEY}index_name; //删除时需加唯一约束的字段名

    12.11:以网格的形式查看约束:SHOW INDEXES FROM user2G;

    12.12:删除外键约束:ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol;//删除时需加外键约束的名字

    查看外键约束的名称:SHOW CREATE TABLE tb_name;(CONSTRAINT后面的为外键约束名字)

    12.13:修改列定义:修改字段的数据类型,位置
    ALTER TABLE tb_name MODIFY [COLUMN] col_name column_definition [FRIST | AFTER col_name]

    例1:ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST; //将user2表中已存在的字段id及其定义改变到所有列的最前面

    例2:ALTER TABLE user2 MODIFY id TINYINT UNSIGNED NOT NULL ;// 修改了其类型 注意:将大类型修改为小类型时可能会造成数据的丢失

    13.14:修改列名称:
    ALTER TABLE tb_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]

    13.15;数据表更名:
    方法1:ALTER TABLE tb_name RENAME [TO| AS] new_tb_name
    方法2: RENAME TABLE tb_name TO new_tb-name [,tb_name2 TO new_tb_name2]...
    注意:数据表和字段的更名可能造成之前创建的索引和视图不能正常工作


  • 相关阅读:
    明暗文切换(密码输入框)遇到的坑
    iOS11适配tableView顶部空白
    macOS升级到high Sierra后, Cocoapods不能使用解决办法
    Xcode插件失效以后的处理方法
    iOS正确使用const,static,extern
    centos7安装magento随记 这就是个坑,果断放弃
    关于迅雷试用短租日租会员的一些渠道收集
    json中含有Unicode的处理办法 C#
    c#中奖算法的实现
    2016年最新mac下vscode配置golang开发环境支持debug
  • 原文地址:https://www.cnblogs.com/a986771570/p/7341770.html
Copyright © 2011-2022 走看看