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

    MySQL  关系型关联数据库管理系统

    库级操作语句

    进入数据库:

     mysql -uusername -ppassword 

    退出数据库:

    exit 

    q 

    显示所有库:

     show databases; 

    创建库:

     create database [if not exists] db_name; 

    显示库创建信息:

     show create database db_name; 

    删除库:

     drop database [if exists] db_name;  

    切换当前库:

     use db_name; 


     表级操作语句

    显示所有表:

     show tables; 

    创建表:

     create table [if not exists] tb_name(create_definition,...); 

     create table [if not exists] tb_name(id int, name varchar(20));

    显示表创建信息:

    1 show create table tb_name;

    2 desc[ribe] tb_name;  

    删除表:

     drop table tb_name; 


    表增删改查

    指定插入:

     INSERT INTO tb_name(col_names) VALUES (col_values); 

    全列插入:

     INSERT INTO tb_name VALUES (all_values); 

    多行插入:

     INSERT INTO tb_name(col_names) VALUES (value_1), (value_2), …; 

    指定列查询:

     SELECT col_names FROM tb_name; 

    全列查询:

     SELECT * FROM tb_name; 

    带条件查询:

     SELECT col_names FROM tb_name WHERE conditions;  

     SELECT col_names FROM tb_name WHERE id > 2;  

    改:

     UPDATE tb_name SET field_1=value_1, field_2=value_2,… WHERE a_field = a_value; 

    删:

      DELETE FROM tb_name WHERE a_field = a_value; 

    注意: 改和删一定要写where条件,否则会删除或改变全部数据

     


    数据类型:

     1 create table tb2(
     2      id INT,                                 #默认长度11
     3      name VARCHAR(20),             #指定长度,最多65535个字符。   ***变长
     4      sex  CHAR(4),                 #指定长度,最多255个字符。     ***定长
     5      price DOUBLE(4,2),        #双精度浮点型,m总个数,d小数位
     6      detail text,                    #可变长度,最多65535个字符
     7      dates DATETIME,                #日期时间类型 YYYY-MM-DD HH:MM:SS
     8      ping  ENUM('好评','差评’)      #枚举, 在给出的value中选择
     9 );
    10 
    11 insert into tb2 value( 1,'裤子','',20.0,'这条裤子超级好!!!',now(),'好评');    

    约束

    约束是一种限制, 通过退表的数据做出限制,来确保表中数据的完整性,唯一性。

    约束类型

    默认

    非空 唯一 自增长 主键 外键 
    关键字 default not null unique key auto_increment primary key foreign key

    默认约束 default:

    # 初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予默认值
    1
    create table tb( 2 id int, 3 name varchar(20), 4 age int default 18 5 );

    # 创建表后添加默认约束

     alter table tb modify age int default 20;

     # 取消默认约束

     alter table tb modify age int; 

    非空约束 not null:

    1 CREATE TABLE tb1(
    2      id int,
    3      name varchar(20) NOT NOLL
    4 );

    # 创建表后添加非空约束

     alter table tb1 modify id int not null; 

    # 取消非空约束

     alter table tb1 modify id int ; 

    唯一约束 unique key:

    1 CREATE TABLE tb2(
    2      id int UNIQUE KEY,
    3      name varchar(20)
    4 );

    # 创建表后添加唯一约束

     alter table tb2 modify name varchar(20) unique key; 

    # 取消唯一约束

     alter table tb2 modify name varchar(20); 

    自增长 auto_increment:

    # 自动编号,一般与主键组合使用,一个表里面只有一个自增长默认情况下,起始值为1,每次的增量为1。
    1
    create table tb3( 2 id int primary key auto_increment, 3 name varchar(20) 4 )auto_increment =100;

    # 创建表后添加自增长

     alter table tb3 modify id int auto_increment; 

    # 取消自增长

     alter table tb3 modify id int; 

    主键约束 primary key:

    # 作用 可以唯一标识一条数据,每张表里只能有一个主键
    # 特性 非空唯一。当表里没有主键时,第一个出现非空且唯一的列,被当作主键。
    1
    create table tb4( 2 id int primary key, 3 name varchar(20) not null 4 );

    # 创建表后添加主键

     alter table tb3 add primary key(id); 

    # 删除主键

     alter table tb4 drop primary key; 

    外键约束 foreign key:

     1 create table a(
     2 a_id int primary key auto_increment,
     3 a_name varchar(20) not null
     4 );
     5 
     6 CREATE TABLE b (
     7   b_id int auto_increment,
     8   b_name varchar(20),
     9   constraint 外键名字 FOREIGN KEY (b_id) REFERENCES a(a_id)
    10 );
    11 
    12 # b是a的子表
    13 # b表中的b_id 字段,只能添加 a_id中 已有的数据。
    14 # a表中a_id  被参照的数据,不能被修改和删除

    # 创建表后添加外键

     alter table b add constraint AB_foreign foreign key(b_id) references a(a_id); 

    # 删除外键

     alter table b drop foreign key AB_foregin key; 


    表结构修改

    表描述

    desc tb_name;

    添加列

    alter table tb_name add [column] name varchar(10);

    删除列 alter table tb_name drop [column] name;
    修改字段类型 alter table tb_name modify gender char(10);
    修改字段名称(change比modify多了修改名称功能) alter table tb_name change name new_name char(10);
    修改表名 alter table tb_name rename to new_students;

    子查询

    1 SELECT grade FROM grades  ## 在查询张三成绩前,需要获得他的学号
    2     WHERE student_number = (SELECT number FROM students WHERE name='张三');  ## 嵌套查询张三学号的语句

    交叉连接(笛卡尔连接)

    内连接

    左表 join 右表 on 左表.字段 = 右表.字段;

    select name, subject_number as number,grade FROM students JOIN grades ON students.number = grades.student_number;

    稍作修改  

    select name, title, grade from students join grades on students.number = grades.student_number join subjects on grades.subject_number=subjects.number;


    编码/用户/权限

    编辑配置文件

     vim /etc/mysql/mysql.conf.d/mysqld.cnf 

    重启数据库

     sudo service mysql restart 

    远程连接

    配置文件

     vim /etc/mysql/mysql.conf.d/mysqld.cnf 

    第一步 修改监听IP

    bind 0.0.0.0

    第二步 给用户添加远程访问权限

    update user set host = '%' where user = 'root';

    第三步 重启数据库

    sudo service mysql restart

    用户权限

    修改密码(记得密码)

     set password=password('new_password') 

    修改密码(忘记密码)

    1、进入mysqld.cnf文件添加skip-grant-tables(跳过登录)

    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf   在[mysqld]范围内添加 skip-grant-tables

    2、登录mysql修改密码

    use mysql
    
    update mysql.user set authentication_string=password('qwe123') where user='root';
    
    update mysql.user set plugin = 'mysql_native_password';
    
    flush privileges;
    
    exit

    3、注释 skip-grant-tables (在43行)

    创建用户

    create user 'username'@'localhost' identified by 'password';

    用户授权

    grant 权限 on 数据库.* to ‘用户名'@'登录主机' identified by “密码";

    取消用户授权

    revoke privilege on databasename.tablename from 'username'@'%‘;

    alter  修改已经存在的表
    create 建立新的数据库或表
    select 查找记录
    update 修改记录
    insert 增加表的记录
    delete 删除表的记录
    usage 只允许登录
    all 允许做任何操作
     drop  删除数据库或表

    创建数据库自定义编码

     create database tb_name character set gbk; 

    创建数据表自定义编码

     create table tb_name(id int ) charset utf8; 

  • 相关阅读:
    [java tool]sonar与idea结合使用,度量代码质量
    【mockito】单元测试之mockito简单使用
    oracle ,mysql,postgres jdbc配置文件
    log4j配置文件及java调用 每个级别输出到不同的文件2
    log4j配置文件及java调用 每个级别输出到不同的文件
    tomcat编码问题
    pf4j实例 插件框架
    网络协议分为哪几层---物理层,连接层,网络层,传输层,应用层详解
    TF-IDF及其算法
    redhat7查看系统版本 修改主机名
  • 原文地址:https://www.cnblogs.com/Selling-fish-bears/p/9291202.html
Copyright © 2011-2022 走看看